Ratkaisuja 4
ratk4.mws viikko 11, 2000
Tiistai 14.3.
Teht. 1
> read("/home/apiola/opetus/peruskurssi/v2-3/maple/ohjelmat.mpl"): with(plots):
> useporras;
>
useporras:="f:=x->(1/3)*(x^2+1);\
X[0]:=1.0:n:=10:for i to n do X[i]:=f(X[i-1]) od:\
fjaxkuva:=plot([x,f(x)],x=0 .. 1,color=[blue,black]):\
display({fjaxkuva,seq(porras(X[i]),i=0..n)});";
> f:=x->sqrt(15+2*x);
Jos jono suppenee, niin se suppenee tämän funktion kiintopistettä kohti. Kiintopiste on helppo laskea. Tarkistetaan samantien.
> alpha:=solve(f(x)=x,x);f(alpha)=alpha;
Mistä tiedämme, että jono suppenee? Tapa 1) Osoitetaan induktiolla, että jono on kasvava ja ylhäältä rajoitettu (vrt. Ad)
Tapa 2) (hienostuneempi): Osoitetaan, että f toteuttaa jollain kiintopisteen sisältävällä välillä kiintopistelauseen ehdot.
>
k1:=plot([f,x->x,4,6],4..6,color=[red,blue,black,black]):
k2:=plot(D(f),4..6):
display(array([k1,k2]),scaling=constrained);
Nämä kuvat osoittavat, että väli [4,6] kuvautuu itselleen, oikein reilusti (vasemmassa kuvassa punainen kuvaaja on mustien vaakaviivojen välissä). Oikeaa kuvaa ei varsinaisesti tarvittaisi, niin selvästi näkyy jo vasemmasta, että derivaatan itseisarvo on alle 1:n. Siispä tuo mainio lause sanoo, että iteraatiojono suppenee tällä välillä olevaa 1-käsitteistä kiintopistetä kohti.
Piirretään vielä "cobweb":
> useporras;
>
> X[0]:=4.0:n:=8:for i to n do X[i]:=f(X[i-1]) od:fjaxkuva:=plot([x,f(x)],x=4 .. 6,color=[blue,black]): display({fjaxkuva,seq(porras(X[i]),i=0..n)});
>
> matrix(([seq([X[i],f(X[i])],i=0..n)]));
Torstai 10.2.
Teht. 1
Teht. 3
Teht. 4
> restart:
> a:=n->(-1)^(n-1)/n;
> seq(a(k),k=1..10);
> ind1:=[1,3,2,5,7,4];
> iton:=seq(2*k-1,k=1..10);
> inen:=seq(2*k,k=1..10);
> seq([iton[2*k-1],iton[2*k],inen[k]],k=1..5);
> ind:=map(op,[%]);
> seq(sum(a(ind[k]),k=1..n),n=1..nops(ind));
> evalf(%);
>
jarjesta:=proc(a,K,pton,pnen)
local iton,inen,ind,n,k,kk,Koo;
iton:=seq(2*k-1,k=1..K);
inen:=seq(2*k,k=1..K);
Koo:=floor(K/2);
ind:=seq([iton[2*k-1],iton[2*k],inen[k]],k=1..Koo);
ind:=map(op,[ind]);
evalf(seq(sum(a(ind[kk]),kk=1..n),n=1..nops(ind)));
end;
>
> joo:=jarjesta(a,100,"huu","go"):joo[nops([joo])];
Kehittelyversio, jossa pton=2 ja pnen=1, siis parametrilistan 2 viimeistä eivät käytössä.
Voi hyvin riittää (ainakin aluksi) se, että annetaan pnen:in olla 1, jolloin annetaan vain pton.
Tällä järjestyksellä näyttää olaven aika lähellä 1:tä.
Normaalissa järjestyksessä laskettuna:
> k:='k':evalf(sum(a(k),k=1..100));
>
>
>
Teht. 5