Maxima – rozwiązywanie problemów matematycznych, część trzecia
« Część 2.: Stałe i zmienne. Funkcje. Obliczenia symboliczne.
W trzeciej części tego kursu – po wcześniejszym wprowadzeniu w podstawy – omówię chyba najczęściej wykonywane obliczenia z użyciem komputera przez przeciętnego użytkownika.
Spis rzeczy:
- Rozwiązywanie równań.
- Rozwiązywanie układów równań.
- Wykresy.
- Obliczanie granic funkcji.
- Różniczkowanie.
- Całkowanie.
- Sumy i iloczyny.
- Zapowiedź czwartej części.
Rozwiązywanie równań.
Rozwiązywanie równań to nic trudnego dla Maximy. Gdy chcemy rozwiązać jakieś równanie, używamy do tego celu funkcji solve
.
< solve(x^2 = 1);
> [x = - 1, x = 1]
Parametrem funkcji powinno być – jak w powyższym przykładzie – równanie. Gdy pominiemy znak równości program automatycznie przyjmie, że podane przez nas wyrażenie = 0
.
< solve(x^2 - 1);
> [x = - 1, x = 1]
Funkcja solve
może także przyjmować dodatkowo jeden parametr. Używamy go w przypadku, gdy w równaniu znajduje się więcej niż jedna zmienna, w celu określenia, według której zmiennej program ma rozwiązać równanie. Gdy tego dodatkowego parametru nie określimy Maxima zwróci nam błąd.
< solve(x^2 - y, x);
>
< solve(x^2 - y, y);
> 
Rozwiązywanie układów równań.
Układy równań rozwiązujemy przy użyciu tej samej funkcji, której użyliśmy w zwykłych równaniach, czyli solve
. Zmianie ulega jednak sposób przyjmowania przez tą funkcję parametrów. Prototyp funkcji w przypadku układów równań wygląda tak:
solve([rów_1, ..., rów_n],[x_1, ..., x_n]);
,
gdzie rów_1, ..., rów_n
to lista równań, a x_1, ..., x_2
to lista zmiennych. Wynikiem jest (jak poprzednio) lista możliwych rozwiązań.
< solve([x + y = 2,x - y = 0], [x, y]);
> [[x = 1, y = 1]]
Wykresy.
Informacje ogólne.
By skorzystać z możliwości rysowania ładnych wykresów potrzebny nam jest gnuplot. Program ten instalujemy ściągamy ze strony projektu na SourceForge lub opcjonalnie, gdy pracujemy pod linuksem w standardowy sposób (np. z repozytoriów).
Wykresy w dwóch wymiarach.
Do rysowania wykresów w dwóch wymiarach stworzona została funkcja plot2d
. Przyjmuje ona dwa parametry. Pierwszy to funkcja, którą program ma narysować, a drugi to zakres użytej zmiennej, w której chcemy zobaczyć wykres.
< plot2d(x^2 + 1, [x, -10, 10]);
Nic nie stoi na przeszkodzie by w jednym okienku wyświetlić kilka wykresów różnych funkcji. W tym wypadku jako pierwszy parametr funkcji plot2d
podajemy listę funkcji do narysowania.
plot2d([x^2, x^3, x^4], [x, -10, 10]);
Wykresy w trzech wymiarach.
Gdy potrzebny nam wykres w trzech wymiarach potrzebujemy funkcji plot3d
. Podstawowy prototyp tej funkcji jest podobny do prototypu plot2d
i różni się on jedynie tym, że podajemy jeszcze jeden parametr, który określa zakres drugiej zmiennej.
plot3d(x^2, [x, -10, 10], [y, -10, 10]);
W tej części chciałem tylko przekazać podstawy dotyczące rysowania wykresów. Myślę, że te podstawy są wystarczające. Ponieważ zaganienie to jest bardzo obszerne postaram się omówić je dokładniej w następnej części kursu.
Obliczanie granic funkcji.
Granice funkcji obliczamy za pomocą funkcji limit
. Funkcja ta przyjmuje 3 parametry – pierwszym jest funcja, której granice chcemy obliczyć, drugim argument funkcji, a trzecim liczba, do której dąży argument danej funkcji.
< limit(1/(x + 1), x, inf);
> 0
Gdy funkcja nie ma granicy obustronnej Maxima zwróci UND
< limit(1/(x + 1), x, -1);
> UND
Jeżeli chcemy policzyć granice jednostronne musimy dodać czwarty argument, którym jest albo minus
, albo plus
, którego używamy odpowiednio w przypadku gdy chcemy policzyć granicę lewostronną lub prawostronną.
< limit(1/(x + 1), x, -1, minus);
> MINF
Różniczkowanie.
Pochodną funkcji obliczamy za pomocą diff
.
< diff(x^2, x);
> 2 x
W celu obliczenia pochodnych wyższych rzędów, funkcję diff
uzupełniamy o dodatkowy parametr, oznaczający wielkość rzędu.
< diff(x^4, x, 3)
> 24 x
Całkowanie.
Za pomocą Maximy całkowanie możemy przeprowadzić całkowicie symbolicznie bądź numerycznie.
Do obliczania symbolicznego używamy funkcji integrate
.
< integrate(cos(x), x);
> SIN(x)
Całki oznaczone obliczamy dodając jako dodatkowe parametry funkcji integrate
granice całkowania.
< integrate(cos(x), x, 0, %pi);
> 0
Gdy chcemy poznać wartość całki, która nie daje się obliczyć w standardowy sposób, nie zostaje nam nic innego jak przybliżanie numeryczne. Do naszych celów wystarczy funkcja romberg
.
< romberg(cos(sin(x+1)), x, 0, 1);
> 0.5759175005968216
Sumy i iloczyny.
Do sum używamy funkcji sum
. Przyjmuje ona 4 parametry: postać składnika, wskaźnik sumy oraz początek i koniec wskaźnika.
< sum(binomial(n, k), k, 0, n);
> 
Dodając polecenie simpsum
upraszczamy sumę.
< sum(binomial(n, k), k, 0, n), simpsum;
> 
Iloczynami zajmujemy się w sposób analogiczny jak z sumami. Tutaj pomocna jest funkcja product
.
< product(5*k, k, 1, n);
> 
By stało się to nam do czegoś przydatne (symbolicznie), należałoby to jakoś dostosować. Zadeklarujmy więc funkcję.
< funkcja(n) := product(5*k, k, 1, n);
> funkcja(n) := PRODUCT(5 k, k, 1, n)
< funkcja(2);
> 50
Zapowiedz czwartej części.
Czwarta część będzie poświęcona wykresom w zaawansowanym stopniu równaniom różniczkowym.
Część 4.: Rozwiązywanie równań różniczkowych i układów równań różniczkowych »
Leave a Reply