- 33 -
Eigenmath
(v. 137)
Portable. Freeware.
Podręcznik użytkownika
Źródło:
Eigenmath.pdf
G. Weight
Maj 2011
Przekład:
Robert Wiśniewski
http://chomikuj.pl/bobwis
Eigenmath to wieloplatformowy system algebry komputerowej napisany przez George Weigta.
Obecnie dostępny dla systemów Windows Linux i Mac OS X.
Eigenmath jest napisany w języku C, a jego kod źródłowy jest wolno dostępny.
Ten niewielki programik pozwala na wykonywanie nie tylko obliczeń numerycznych ale również symbolicznych (w tym różniczkowanie i całkowanie), przeprowadzanie operacji macierzowych i tworzenie prostych wykresów a nawet pisanie skryptów.
W istocie rzeczy jest to zminiaturyzowana, przenośna wersja MatLab.
SPIS TREŚCI
1. Wprowadzenie
1.1. Wykładniki ujemne
1.2. Definiowanie symboli
1.3. Wykresy
1.4. Skrypty
1.5. Liczby zespolone
1.6. Algebra liniowa
2. Obliczenia
2.1. Pochodne
2.2. Gradient
2.3. Szablony funkcji
2.4. Całki
2.5. Długość łuku
2.6. Lrzywe całkowe
2.7. Pole powierzchni
2.8. Całki powierzchniowe
2.9. Teoria Greena
2.10. Teoria Stokesa
3. Dodatkowe przykłady
3.1. Wzory François Viète
3.2. Wirowość (rotacja) w postaci tensorowej
3.3. Kwantowy oscylator harmoniczny
3.4. Wodorowe funkcje falowe
3.5. Akceleratory kosmiczne Shuttle i Corvette
3.6. Stała Avogadro
3.7. Zero do potęgi zerowej
4. Funkcje wbudowane
5. Składnia
Poniższe przykłady zaczerpnięte zostały z autobiograficznych notatek Vladimira Nabokova.
„Prosty samouczek objaśnił mi zbyt wcześnie istotę logarytmów i wyczytałem w (brytyjskiej publikacji dla młodzieży) o pewnym matematyku hinduskim, który dokładnie w ciągu dwóch sekund potrafił obliczać 17-ty pierwiastek np. z liczby 3529471145760275132301897342055866171392 (nie miałem pewności czy wynik jest dobry, ale sprawdziłem i wynosił on 212)”.
Możemy to sprawdzić wpisując w programie Eigenmath wyrażenie:
212^17
Po wciśnięciu klawisza ENTER, zostanie wyświetlony poniższy wynik:
3529471145760275132301897342055866171392
Tak więc Nabokow miał rację.
Możemy to dalej sprawdzić klikając przycisk Float, co prowadzi do prostszego wyniku
3.52947 x 1039
Teraz możemy skorzystać z Eigenmath do obliczenia 17-tego pierwiastka z tej liczby.
N=212^17
N
N = 3529471145760275132301897342055866171392
N^(1/17)
212
Podkreśla się, że gdy do symbolu jest przypisywana w liczba, nie ukazuje się żaden wynik.
Aby zobaczyć tą wartość, trzeba wprowadzić ten symbol w wierszu wpisywania danych:
Eigenmath wymaga stosowania nawiasów wokół wykładników ujemnych, np.
10^(-3)
zamiast
10^-3
Powodem tego jest to, że łączenie znaków ujemnych nie zawsze jest jednoznaczne.
Przykładowo w wyrażeniu:
X^-1/2
nie jest jasne czy wykładnikiem jest -1 czy -1/2.
Tak więc Eigenmath wymaga wprowadzania nawiasów x^(-1/2), co jest jednoznaczne.
Teraz powstaje nowe pytanie. Pomijając znak minus, czy może występować osobny znak potęgowania ^ (bez nawiasów) ?
Odpowiedź jest taka, że istotny jest tylko pierwszy znak za symbolem potęgowania. Przykładowo, poniższe wyrażenie jest traktowane jako (x1)/2:
x^1/2
Tak więc na ogół, nawiasy sa niezbędne w wyrażeniu zawierającym wykładnik
X^(1/2)
x1/2
Jak wcześniej wspomniano, Eigenmath korzysta z takiej samej składni jak stary język Fortran.
Przy definiowaniu symbolu, żaden wynik nie jest wyświetlany. Aby zobaczyć wynik, trzeba wprowadzić wymagany symbol:
Wszystko po pierwszej literze symbolu jest traktowane jako indeks dolny:
NA = 6.02214*10^23
NA=6.02214*1023
Symbol może być literą grecką:
xi=1/2
xi
Z uwagi na to, że xi jest odczytywane jako x, jak można wprowadzić symbol xi ? Spróbujemy to rozwiązać w przyszłości, ale teraz xi jest odczytywane zawsze jako x.
Litery greckie mogą również pojawiać się w indeksach.
Amu=2.0
Amu
Am = 2.0
Ogólna zasada jest taka, że Eigenmath skanuje cały symbol szukając greckich liter:
alphamunu
amn
Spróbujemy teraz sprawdzić co się pojawi przy obliczaniu wartości symbolu. Najważniejsze jest to, że Eigenmath dokładnie oblicza podwyrażenia symboliczne.
A=B
B=C
C=D
sin(A)
sin(D)
W powyższym przykładzie, obliczanie wartości sin(A) prowadzi do wyniku sin(D), ponieważ program Eigenmath rozwiązuje symbol A zastępując go symbolem D.
Jednak wewnętrznie A jest nadal równe B. co można sprawdzić wpisując funkcję nawiasów binding:
binding(A)
B
Spróbujmy teraz wrócić na chwile do definicji symboli. Pamiętamy, że prawa strona definiowanego wyrażenia jest obliczana przed jej zamknięciem w nawiasach (przed wykonaniem funkcji binding), np.:
B=1
1
Funkcja binding A jest tutaj równa 1, a nie B, ponieważ B już zostało wcześniej zdefiniowane zanim pojawiało się A=B. Do poznania dokładnej wartości A stosujemy funkcję quote:
A=quote(B)
Wszystko to oznacza, że symbole mają podwójny charakter. Symbol ma wartość nawiasową binding Tora może być inna od jej obliczanej wartości, Zwykle różnica ta nie jest istotna. Funkcje quote oraz binding są tu wymienione głównie w celu zilustrowania tego co może pojawiać się wewnątrz programu. W warunkach normalnych nie trzeba korzystać z tych funkcji. Jednak jedynym istotnym wyjątkiem jest korzystanie z funkcji quote do oczyszczania symbolu.
x=3
x
x = 3
x=quote(x)
Funkcja draw(f,x) rysuje wykres funkcji f względem zmiennej x. Drugi argument można pominąć gdy zmienną zależną jest x lub t. Wektory xrange oraz yrange sterują skalą wykresu, np. draw(x^2).
xrange=(-1,1)
yrange=(0,2)
draw(x^2)
Funkcja Clear (lub kliknięcie przycisku Clear) resetuje zakres xrange oraz yrange przywracając go do wartości domyślnych.
Wykresy parametryczne pojawiają się gdy funkcja zwraca wektor. Funkcja trange steruje zakresem wektora.
Zakres domyślny wynosi (-p, p)
f=(cos(t),sin(t))
draw(5*f)
trange=(0,pi/2)
Poniżej przedstawiono zestaw ciekawych krzywych oraz kody do ich wykreślania.
...
saturn3231