Wykład 13 - materiały pomocnicze (sesja Maximy)

Transkrypt

Wykład 13 - materiały pomocnicze (sesja Maximy)
Obliczanie calek: metody numeryczne i analityczne Calke oznaczona zdefiniowaliśmy jako granice ciagu odpowiednich sum.
(%i38)
a:0$ b:1$ f(x):=x^2$
(%i41)
x(i,n):= a + i*((b-a)/n);
(%o41)
x (i, n) := a + i
(%i42)
load(draw)$
b−a
n
Funkcja wxgr(n) pozwala na graficzna prezentacje trapezu krzywoliniowego odpowiadajacego funkcji f i odcinkowi [a,b] oraz figury skladajacej sie z n prostokatów,
której pole ma przybliżać pole tego trapezu. Funkcja pochodzi ze skryptu
num int graphics demo2.wxm, którego autorem jest Daviad Stegenga, dostepnego opod adresem:
http://www.math.hawaii.edu/ dave/wxMaxima/num int graphics demo2.wxm
(%i43)
rects(n):= makelist(rectangle([x(k-1,n),0],[x(k,n),f(x(k-1,n))]), k,1,n)$
(%i44)
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:
(%i45)
wxgr(5)$
(%t45)
Rysunek dla n=6:
1
(%i46)
wxgr(10)$
(%t46)
Funkcja left(n) oblicza sume pól odpowiednich praostokatów dla zadanego n;
,,left” należy kojarzyć z tym, że wysokości prostokatów sa równe wartościom
funkcji w lewych końcach przedzialów. Funkcja left(n) jest realizacja najprostszej metody calkowania numerycznego (”prostokatów”).
(%i47)
(%o47)
left(n):= sum(f(x(i-1,n)),i,1,n)*((b-a)/n);
left (n) :=
n
X
f (x (i − 1, n))
i=1
b−a
n
Wartości funkcji left dla n=5 i dla n=10:
(%i48)
(%o48)
(%i49)
(%o49)
float(left(5));
0.24
float(left(10));
0.285
Wartośći funkcji left dla n=10,100,1000,10000 zbiegaja do 1/3
(%i50)
for m:2 thru 5 do print(m, float(left(10^m)), 1/3)$
1
1
1
1
20.32835 30.3328335 40.333283335 50.33332833335
3
3
3
3
Pole naszego trapezu krzywoliniowego można obliczyć korzystajac z tw. NewtonaLeibniza wykonujac rachunki symboliczne przy użyciu procedury integrate:
(%i51)
integrate(x^2, x, 0, 1);
(%o51)
1
3
2
Wartość przybliżona naszej calki można obliczyć przy użyciu procedury quad qags.
Procedura ta wykorzystuje ona algorytmy calkowania numerycznego.
(%i52)
(%o52)
quad_qags(f(x), x, 0, 1);
[0.33333333333333, 3.7007434154171903 10−15 , 21, 0]
3

Podobne dokumenty