Matematyka 2D

Lemniskata Bernoulliego

Krzywa ma dwa płatki stykające się w środku i przypomina ósemkę. Jest symetryczna względem obu osi przechodzących przez środek. Zmieniaj skalę i położenie; obraz styku gałęzi może być niedokładny.

Pierwszy przykład

import ms2d

F = ms2d.lemniskata()
print(round(F(4, 0), 6))
rysuj_2(F)

Wynik w konsoli:

0.0

Wartość F w podanym punkcie jest liczbą pomocniczą, a nie współrzędną Y. Do krzywej należą punkty z wynikiem zero. Dziedzina F obejmuje więcej punktów niż sama krzywa.

Podgląd przedstawia pierwszy program. Zmianę kodu wykonaj w edytorze. Przesuwanie i przybliżanie nie obliczają nowych wartości funkcji.

Eksperymentuj

Zmień a z 4 na 2. Odległość od środka do skrajnego punktu każdego płatka zmniejszy się dwukrotnie.

import ms2d

F = ms2d.lemniskata(a=2)
print(round(F(4, 0), 6))
rysuj_2(F)

Wynik w konsoli:

12.0

Krzywa przecina samą siebie w środku. Przy niektórych przesunięciach siatka obliczeń może błędnie odtworzyć to przecięcie. Równanie pozostaje poprawne; zmiana obrazu w tym miejscu nie jest dowodem zmiany topologii figury.

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.

ms2d.lemniskata(a=4, x0=0, y0=0)

a=4
Dodatnia skala obu płatków.
x0=0
Współrzędna X punktu przecięcia gałęzi.
y0=0
Współrzędna Y punktu przecięcia gałęzi.

Parametry liczbowe muszą być skończonymi liczbami int lub float, bez wartości logicznych.

BRównanie, właściwości i dziedzina
(X2+Y2)2=a2(X2-Y2)

Parametr a jest dodatni, a X = x-x0 i Y = y-y0. Płatki są skierowane wzdłuż X, a ich skrajne punkty są oddalone od środka o a. Równanie jest poprawne także wtedy, gdy siatka nie odtworzy przecięcia gałęzi.

Parametr a jest dodatni, a położenie skończone. Wielomian pomocniczy jest określony na całej płaszczyźnie. Równanie opisuje dwa płatki wzdłuż X.

CDefinicja w Pythonie

def F(x, y, a=4, x0=0, y0=0):
    X, Y = ((x - x0) / a, (y - y0) / a)
    return (X * X + Y * Y) ** 2 - X * X + Y * Y

print(round(F(4, 0), 6))
rysuj_2(F)

Spróbuj sam

Przesuń krzywą przez x0=0.13 i y0=0.07. Porównaj matematyczne położenie przecięcia z podglądem i przeczytaj znane ograniczenie w rozdziale technicznym.

Dokładność, obszar obliczeń i ograniczenia środowiska