Matematyka 3D
Powierzchnia Gaussa
Powierzchnia ma jeden szczyt i łagodnie opada we wszystkich kierunkach. Jej wysokość zbliża się do zera wraz z odległością od szczytu. Zmieniaj szerokość, aby porównać wąskie i rozległe wzniesienie.
Pierwszy przykład
import ms3d
F = ms3d.powierzchnia_gaussa()
print(round(F(0, 0, 4), 6))
rysuj_3(F)
Wynik w konsoli:
0.0
Wartość F w podanym punkcie nie jest wysokością powierzchni. Narysowane są punkty F=0, bez wypełniania wnętrza bryły. Matematyczna powierzchnia i obszar podglądu to różne rzeczy.
Podgląd przedstawia pierwszy program. Zmianę kodu wykonaj w edytorze. Obrót, przesuwanie i przybliżanie nie obliczają nowych wartości funkcji.
Eksperymentuj
Zmniejsz szerokość z 2 do 1. Szczyt pozostanie na tej samej wysokości, ale wzniesienie stanie się węższe.
import ms3d
F = ms3d.powierzchnia_gaussa(szerokosc=1)
print(round(F(0, 0, 4), 6))
rysuj_3(F)
Wynik w konsoli:
0.0
Na szczycie wykładnik potęgi e wynosi zero, więc wysokość jest równa parametrowi wysokosc. Dalej od szczytu wartości zbliżają się do zera. Poziome przekroje między wysokością zero a szczytem są okręgami.
Odkrywaj w swoim tempie
AParametry i wartości domyślne
Pierwszy program wywołuje funkcję bez ustawień, czyli korzysta z wszystkich wartości domyślnych podanych poniżej.
ms3d.powierzchnia_gaussa(wysokosc=4, szerokosc=2, x0=0, y0=0)
wysokosc=4- Dodatnia wysokość szczytu.
szerokosc=2- Dodatnia skala szerokości w poziomie.
x0=0- Współrzędna X szczytu.
y0=0- Współrzędna Y szczytu.
Parametry liczbowe muszą być skończonymi liczbami int lub float, bez wartości logicznych.
BRównanie, właściwości i dziedzina
Dodatnie h = wysokosc i s = szerokosc określają wysokość oraz skalę poziomą. Szczyt to (x0, y0, h), a dziedziną wysokości jest cała płaszczyzna. To powierzchnia Gaussa bez normalizacji do pola lub objętości 1.
Wysokość i szerokość są dodatnie, a położenie skończone. Wysokość powierzchni jest określona na całej płaszczyźnie. Nie jest to unormowana gęstość prawdopodobieństwa.
CDefinicja w Pythonie
import math
def F(x, y, z, wysokosc=4, szerokosc=2, x0=0, y0=0):
h, s = (wysokosc, szerokosc)
q = math.hypot((x - x0) / s, (y - y0) / s)
return z - h * math.exp(-0.5 * q * q)
print(round(F(0, 0, 4), 6))
rysuj_3(F)
Spróbuj sam
Przesuń szczyt do (1,-2). Czy jego wysokość zmienia się po samym przesunięciu poziomym?