Bartosz Pawlak Adam Stegenda Sebastian towski Tomasz Gobiewski
Bartosz Pawlak Adam Stegenda Sebastian Żółtowski Tomasz Gołębiewski Tomasz Kowalski 1
§ Maxima jest programem typu CAS (Computer Algebra System), wspomagającym wykonywanie obliczeń symbolicznych. Głównym składnikiem programu jest interpreter. § Maxima posiada własny, prosty interfejs graficzny - XMaxima. Niezależnie rozwijany jest wieloplatformowy interfejs wx. Maxima. Maximę można również uruchamiać w edytorze tekstu Emacs oraz Te. Xmacs. 2
Zalety Maxima § Licencja GPL § Dostępna pod wszystkie platformy zgodne z POSIX oraz Microsoft Windows § Ogromna liczba rozszerzeń § Względnie szczegółowa dokumentacja Wady Maxima § Brak dokumentacji po polsku § Trudna w obsłudze § Mała popularność programu 3
§ Program Maxima należy pobrać ze strony http: //maxima. sourceforge. net/ 4
5
6
§ W celu instalacji programu maxima w terminalu wpisujemy polecenie sudo apt-get install maxima 7
§ Zainstalowana maxima będzie działała w trybie tekstowym. 8
§ Następnie możemy zainstalować graficzną nakładkę wx. Maxima. 9
§ Możemy również dodać panele które będą ułatwiały prace z programem 10
§ Program posiada dwa środowiska graficzne: XMaxima (stare, dość archaiczne, ale bardzo stabilne) i wx. Maxima (nowe, zdecydowanie lepsze, ale nieco mniej stabilne). Po zainstalowaniu programu obydwa środowiska są gotowe do pracy. Ale drobne zmiany w konfiguracji wx. Maxima mogą zdecydowanie uprościć początki pracy w nim oraz polepszyć wygląd dokumentu. 11
§ Napisana w C++ z użyciem wx. Widgets (multiplatformowe GUI) § Bardzo szybko rozwijana co prowadzi do częstych zmian interfejsu § Względnie spolonizowana 12
§ Niezwykle prosta § Środowisko nadal bardziej tekstowe niż graficzne § Szybsza niż wx. Maxima § Nie zawsze działa out-of-box (wymaga konfiguracji) 13
§ Zwykle Maxima rozpoznaje z jaką wersją językową Windows ma do czynienia i ustawia język interfejsu odpowiednio. Ale jeżeli tak się nie stało, to można to zmienić w Edit / Options 14
§ Zmieniamy preferencje przez menu: Edycja / Preferencje /Wygląd § W pozycji "Domyślna czcionka" można zmienić typ lub rozmiar czcionki używanej do wprowadzania poleceń programu. Na początku pracy najlepiej pozostawić czcionkę domyślną. § W pozycji "Czcionka matematyczna" zaleca się zmienić domyślną czcionkę na Cambria. 15
§ Zaletą wx. Maxima jest znaczna ilość kreatorów poleceń programu, które upraszczają ich wprowadzanie. Większość poleceń menu programu uruchamia właśnie takie kreatory. Dostęp do najczęściej używanych poleceń można dodatkowo ułatwić poprzez wyświetlenie dodatkowych paneli ( View). Dla początkujących użytkowników zaleca się wyświetlić panele "Podstawowa Matem. " i "Wstaw komórkę" oraz historię wprowadzonych poleceń ("Historia"). 16
17
§ Maxima działa w trybie wejść %i (od input) i wyjść %o (od output). Wejścia jak i wyjścia są numerowane, co w połączeniu z %i albo %o tworzy unikalny identyfikator § Każdą instrukcję kończymy ; lub $. Użycie tego drugiego powoduje, ze wynik obliczeń nie pojawi się na ekranie § Maxima rozróżnia wielkość liter, tak wiec funkcje f(x) i F(x) nie są tym samym § Zmienna % przechowuje wynik ostatniego polecenia § Zmienna %% przechowuje natomiast wynik ostatniego wyrażenia w ciągu instrukcji ograniczonych () 18
§ Kill(all) – czyszczenie wszystkich zmiennych w pamięci § Kill(x) – wyczyszczenie zmiennej x z pamięci § ? Funkcja – manual dla danej funkcji 19
§ arytmetyczne +, -, *, § potęgowanie ^, ** § mnożenie macierzy. § silnia !, podwójna silnia !! 20
§ : przypisanie wartość do zmiennej lub wyrażenia x: 3, y: %o 3 § : = definicja funkcji, wymagany co najmniej jeden argument ln(x): =log(x)/log(%e) § operatory : : i : : = 21
§ = - operator porównania § >= - operator większe niż lub równe § is(x) - operator logiczny ustalający, czy x § and - operator koniunkcji or operator § equal(x, y) - operator zwracający true § not - operator negacji jest true, czy false (false), jeżeli x i y (nie) są równe § # - negacja operatora równości § < - operator mniejsze niż § <= - operator mniejsze niż lub równe alternatywy § true - stwierdzenie prawdziwe § false - stwierdzenie fałszywe § unknown - stwierdzenie o nieznanej logicznej wartości § > - operator większe niż 22
§ trigsimp(wyrażenie) Stosuje uproszczenia sin x 2 + cos x 2 = 1 oraz cosh x 2 − sinh x 2 = 1 do wyrażeń zawierających funkcje trygonometryczne i hiperboliczne § trigreduce(wyrażenie) - Zamienia potęgi i iloczyny wyrażeń trygonometrycznych i hiperbolicznych na krotności i sumy ich argumentów. Upraszcza funkcje trygonometryczne by nie było ich w mianownikach wyrażeń wymiernych 23
§ %e - podstawa logarytmu naturalnego § %i - jednostka urojona § %pi – π § %phi – złota liczba § inf - ∞ § minf - − ∞ § %gamma - stała Eulera § False – logiczny fałsz § True – logiczna prawda 24
§ Zmienne są bardzo przydatne. Z ich pomocą możemy sobie skrócić czas, który tracimy podczas wpisywania wielu podobnych wyrażeń. Zmienne definiujemy używając „: ” (dwukropka), poprzedzającego nazwę zmiennej. 25
§ Z pokazanych przykładów widać, że użycie funkcji sprowadza się do wpisania nazwy funkcji oraz podania argumentów przyjmowanych przez nią w nawiasach następujących po tej funkcji. Wielokrotne zagnieżdżanie również nie sprawia problemów. 26
§ Jako, że Maxima udostępnia mechanizm definiowania funkcji, nic nie stoi na przeszkodzie, by samemu je sobie zdefiniować. Funkcje definiujemy w ten sposób: 27
§ W skrócie, obliczeniami symbolicznymi nazywamy operacje matematyczne wykonywane na wyrażeniach matematycznych. Przykładami obliczeń symbolicznych są, między innymi, rozkład na czynniki, upraszczanie równań, rozwijanie wielomianów czy chociażby obliczanie całek i równań różniczkowych. § Maxima udostępnia nam szereg funkcji służących do obliczeń symbolicznych. Do podstawowych należą: § factor służy do rozkładu liczby lub wielomianów na czynniki, np. : 28
§ expand pozwala rozwijać wielomianów z postaci iloczynu do postaci głównej § trigexpand rozwija wyrażenia trygonometryczne 29
§ Dodatkowo Maxima potrafi wyświetlić na output w Te. X. Robi to funkcja tex() (tex(%) wyświetli nam w Te. Xu wynik ostatniego działania). 30
Podstawowym sposobem reprezentowania danych są listy: § listą jest wszystko ujęte w klamry [] § pierwszy element listy ma indeks 1 § l[n] = n-ty element listy l 31
makelist(expr, i, start, stop) makelist(expr, i, lista) § Tworzy listę której elementy powstają poprzez obliczenie wartości wyrażenie expr dla wszystkich całkowitych i od start do stop 32
append(lista 1, lista 2, . . . , lista n) § „Skleja” listy będące jej argumentami w jedną apply(f, lista) § Wynikiem funkcji jest wartość wyrażenia f(lista) 33
sort(L) § sort(L) sortuje listę w kolejności rosnącej. Ogólnie istnieje ogromna ilość funkcji dotyczących samych list działanie niektórych z nich możemy skojarzyć z metodami występującymi w różnych językach programowania np. pop(Element), push(Element), length(Lista), reverse(Lista) 34
factor(expr) § Faktoryzuje wyrażenie tzn. zapisuje w takiej postaci, aby ostatnim wykonywanym działaniem było mnożenie/dzielenie (rozkład na czynniki) 35
expand(expr) § expand() jest podstawową funkcją używaną do rozwijania wyrażeń. 36
§ Tablicę tworzymy poleceniem array(a, 4); § Zapisujemy wartość w tablicy komendą a[0]: 4; § Wyświetlamy wartość elementu poleceniem a[0]; Uwaga: Jeśli dany element nie został przypisany to zostanie wyświetlona nazwa tablicy "a" wraz z indeksem 37
§ Po wpisaniu liczby ukośnika i liczby dostajemy wynik w postaci ułamka § Po użyciu polecenia float dostajemy wynik w postaci liczby z przecinkiem § Ustawić precyzję obliczeń można za pomocą polecenia fpprec z użyciem bfloat 38
§ Patrząc na przykład widzimy w jaki sposób wpisywać funkcję oraz, jak znaleźć daną wartość dla konkretnego przykładu 39
§ Możemy uprościć wyrażenie stosując polecenie ratsimp § Używając polecenia trigsimp upraszczamy funkcję trygonometryczną 40
§ Używając funkcji solve lub algsys możemy dostać rozwiązanie równania 41
§ Używając poleceń sum i binomial do zapisu symbolu Newtona możemy uzyskać symbol sumy § Możemy uprościć sumę z poleceniem simpsum § Aby uzyskać symbol iloczynu używamy polecenia product 42
matrix([wiersz 1], . . , [wierszn]) § Tworzy macierz składającą się z n wierszy. Każdy wiersz jest równoliczną listą. Dozwolone operacje: § +, -, *, odpowiadających sobie elementów § ^ potęgowanie elementów A^3=A*A*A §. mnożenie macierzy (nieprzemienne) § ^^ potęgowanie macierzy A^^3=A. A. A 43
entermatrix(m, n) § Interaktywny sposób wprowadzania macierzy m × n 44
Wybrane funkcje operujące na macierzach: § determinant(M) wyznacznik macierzy M § invert(M) macierz odwrotna do M § rank(M) rząd macierzy M § transpose(M) macierz transponowana 45
linsolve(lista_rownan, lista_niewiadomych) § linsolve rozwiązuje układy równań liniowych: eq 1: 2*x+4*y+0. 2*z+11*p=8$ eq 2: 11/12*x+y=3$ eq 3: 3/2*x+7/2*z+y=-1$ eq 4: x+y+z+p=0$ rown: [eq 1, eq 2, eq 3, eq 4]$ rozw: linsolve(rown, [x, y, z, p]); 46
solve(expr, var) § Funkcja solve() stara się rozwiązać symbolicznie dowolne równanie lub układ równań. Pierwszym argumentem jest wyrażenie zawierające niewiadomą var. Może być ono dane w trzech postaciach: f(x)=g(x) f(x)=0 f(x) Dwie ostatnie postaci są równoważne. Gdy równanie zawiera tylko jedną zmienną, można opuścić drugi argument. Wynik zwrócony jest w postaci listy. 47
solve([eqn 1, . . . , eqnn], [x 1, . . . , xn]) Rozwiązuje układ n równań algebraicznych o n niewiadomych. 48
§ Polecenie limit(expr, x, val, dir) znajduje granicę limx→val expr(x). Opcjonalny argument dir określa czy szukamy granicy z prawej (plus) czy z lewej (minus) strony. limit(1/x, x, 0); limit(1/x, x, 0, plus); limit(sin(x)/x, x, 0); limit((1+1/x)^x, x, inf); limit((sin(x+h)-sin(x))/h, h, 0); limit((cos(x)+1)/sin(x)^2, x, %pi); 49
§ Polecenia diff() używamy do znajdowania pochodnych. diff(5*x, x); expand(10*x^23+5*x^12+1/4*x^2); diff(%, x); f(x): = sqrt((x^3 -2*x^2+3)/(x^4+5*x^3+x)); diff(f(x), x); factor(%); 50
51
! – silnia !! - podwójna silnia Funkcja na podwójną silne: 52
Maxima posiada wbudowaną funkcję fib(n), gdzie n to n-ta liczba ciągu Fibonacciego Własna funkcja: 53
Wartość bezwzględna - abs(x) Liczby doskonałe: Liczby pierwsze: primep(x) Lista liczb pierwszych: 54
Przykładowa funkcja: Jak widać w Maximie występują pętle for oraz instrukcje warunkowe if (istnieje również instrukcja while oraz możliwość skoku do momentu pęltli np. Begin. Of. Loop; ) a blok otwieramy poleceniem block; 55
ode 2(równanie, zmienna 1, zmienna 2) - wbudowana funkcja licząca równania różniczkowe zwyczajne pierwszego i drugiego rzędu ic 1(równ. różniczkowe, warunek pocz. 1, warunek pocz. 2) 56
ic 2 (równ. różniczkowe 2 rzędu, warunek pocz. 1, warunek pocz. 2, pochodna) bc 2(równanie różniczkowe 2 rzędu, warunek pocz. x 1, warunek pocz. x 2, warunek pocz. y 1, warunek pocz. 2); 57
NWD - gcd(x 1, x 2) NWW - lcm(x 1, x 2) Dzielniki - divisors(x) 58
Średnia - mean(a) Mediana - median(a) Wariancja - var(a) Odchylenie - std(a) 59
Rozwiązywanie Pierwiastek Pierwiastki rzeczywiste Rozwiązywanie liniowych 60
WIELOMIANY CD Dzielenie Iloraz Reszta Upraszczanie Stopień wielomianu 61
§ wykres 2 D, który po uruchomieniu otwierany jest w oknie programu 62
§ wykres 2 D, który po uruchomieniu wyświetla się w osobnym oknie 63
§ wykres 3 D, który po uruchomieniu otwierany jest w oknie programu 64
§ wykres 3 D, który po uruchomieniu wyświetla się w osobnym oknie 65
66
- Slides: 66