Obliczanie całek: metody numeryczne i analityczne
 Całkę oznaczoną zdefiniowaliśmy jako granicę
 ciągu odpowiednich sum.

--> a:0$ b:1$ f(x):=x^2$

--> x(i,n):= a + i*((b-a)/n);

--> load(draw)$

Funkcja wxgr(n) pozwala na graficzną
prezentację trapezu krzywoliniowego
odpowiadającego funkcji f i odcinkowi [a,b]
oraz figury składającej się z
n prostokątów, której pole ma przybliżać pole tego trapezu.
Funkcja pochodzi ze skryptu
num_int_graphics_demo2.wxm, którego autorem jest
David Stegenga, dostępnego opod adresem:

http://www.math.hawaii.edu/~dave/wxMaxima/num_int_graphics_demo2.wxm

--> rects(n):= makelist(rectangle([x(k-1,n),0],
[x(k,n),f(x(k-1,n))]), k,1,n)$

--> wxgr(n):= apply(wxdraw2d, append(
             [xrange = [a-(b-a)/4,b+(b-a)/4], color = blue],
             rects(n),
             [transparent = true,
explicit(f(x),x,a-(b-a)/4,b+(b-a)/4)]) )$

Rysunek dla n=5:

--> wxgr(5)$

Rysunek dla n=10:

--> wxgr(10)$

Funkcja left(n) oblicza sumę pól
odpowiednich prostokątów dla zadanego n;
,,left'' należy kojarzyć z tym, że wysokości prostokątów są równe
wartościom funkcji w lewych końcach przedziałów.
Funkcja left(n) jest realizacją najprostszej metody całkowania
numerycznego (''metody prostokątów'').

--> left(n):= sum(f(x(i-1,n)),i,1,n)*((b-a)/n);

Wartości funkcji left dla n=5 i dla n=10:

--> float(left(5));

--> float(left(10));

Wartośći funkcji left dla n=10,100,1000,10000 zbiegają do 1/3:

--> for m:2 thru 5 do print(m, float(left(10^m)), 1/3)$

Pole naszego trapezu krzywoliniowego można
obliczyć korzystając z tw. Newtona-Leibniza
wykonując rachunki symboliczne przy użyciu procedury integrate:

--> integrate(x^2, x, 0, 1);

Wartość przybliżoną naszej całki można obliczyć
przy użyciu procedury quad_qags. Procedura ta wykorzystuje
algorytmy całkowania numerycznego. Wynikiem jest lista
składająca się z czterech elementów:
wartości przybliżonej całki, oszacowania błędu,
liczby iteracji oraz kodu błędu.
Kod błędu równy 0 oznacza, że ,,nie wystąpiły żadne problemy''
(no problems encountered).

--> quad_qags(f(x), x, 0, 1);

Przykład funkcji, dla której "Maxima"
nie wykonuje obliczeń przy użyciu
twierdzenia Newtona-Leibniza, co wskazuje na to,
że całka nieoznaczona tej funkcji nie da się
wyrazić przez funkcje elementarne.

--> g(x):=sin(cos(x));

--> integrate(g(x), x, 0, 1);

Obliczenia przy użyciu procedury quad_ags
pozwalają na wyznaczenie przybliżonej wartości
całki z g(x) w granicach od 0 do 1.

--> quad_qags(g(x), x, 0, 1);


Created with wxMaxima.