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 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);
> [x = -\sqrt{y}, x = \sqrt{y}]
< solve(x^2 - y, y);
> y = x^2

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]);

\text{wykres 2D } x^2 + 1

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]);

\text{wykres 2D } x^2 \text{, } x^3 \text{i } x^4

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]);

\text{wykres 3D } x^2

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);
> \displaystyle \sum_{k=0}^{n}\binom{n}{k}

Dodając polecenie simpsum upraszczamy sumę.

< sum(binomial(n, k), k, 0, n), simpsum;
> 2^n

Iloczynami zajmujemy się w sposób analogiczny jak z sumami. Tutaj pomocna jest funkcja product.

< product(5*k, k, 1, n);
> \displaystyle \prod_{k=1}^n 5k

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