Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
36
2.Schematyróżnicowe
całkowania,alenieprzynositoradykalnejpoprawywyników.Dodatkowokoszty
tychmetodwzrastająbardzoszybkowrazzrzędemrozwinięciaTaylora.Schemat
(2.3)wymagaobliczeniatylkojednejwartor
scifunkcji,natomiastschemat(2.9)po-
trzebujejużwkażdymkroku3wartor
scifunkcji,aschematzawierającyrozwinięcie
dowyrazówrzędu3potrzebuje6wartor
scifunkcji.
Warto,żebyCzytelnikur
swiadomiłsobie,coprzedewszystkimdecyduje
okoszcierealizacjidanegoschematu.Wprzypadkuschematuotwartegojestto
wzasadziejedyniekosztodwoływaniasiędoproceduryobliczeniawartor
scifunk-
cjiiwartor
scijejpochodnych.Samarealizacjawzorówopisującychschematjest
zwyklebardzomałokosztowna(kilkadodawar
nimnożer
nliczbzmiennopozycyj-
nych),natomiastznalezieniewartor
scifunkcjitokosztodwołaniasiędoprocedury
(zwykleniemały,bowymagającywieluoperacji),anastępniekosztrealizacjisa-
mejprocedury.Tenostatnikosztzależyoczywir
scieodtego,jakzłożonajestfunk-
cjaf,alenawetdlaprostychfunkcjielementarnychjestonznaczący.
PRZYKŁAD2.2.Rozwiążemyrównaniezprzykładu2.1,stosującschematzam-
knięty,zwanyschematemtrapezów,
xk+11xk+
h
2
(fk+fk+1).
Rozwiązanie.Rozpoczynamyodnapisaniaproceduryrealizującejten
schemat.
trapez:=proc(f,t0,x0,h,rep)
localt,x,i,a,z;
a:=array(1..rep,1..2);
t:=t0;
x:=x0;
foritorepdo
a[i,1]:=evalf(t);
a[i,2]:=evalf(x);
x:=fsolve(z=x+1/2*h*(f(t,x)+f(t+h,z)),z);
t:=evalf(t+h)
od;
[seq([a[i,1],a[i,2]],i=1..rep)]
end
Następniewykonujemyobliczenia
>z3:=trapez(f,1,1,0.2,21);