read("/p/edu/mat-1.414/maple/v201.mpl"):Tämä lukee Maple-istuntoon ainakin funktiot
linspace, L, lagint, interplot
linspace:=proc() local i,n,a,b; a:=args[1];b:=args[2]; if nargs=2 then n:=10 else n:=args[3] fi; [seq(a+i*(b-a)/(n-1),i=0..n-1) ] end:Tällä funktiolla on erityisen helppo tehdä tasavälisesti diskretoitu lista.
Datan muokkaus piirtoa varten
f:=x->x^2: xd:=linspace(0,1,6); yd:=map(f,xd); xyd:=seq([xd[k],yd[k]],k=1..nops(xd)); # xydlista:=zip((x,y)->[x,y],xd,yd); # vaihtoehtoinen tapa plot([xyd],x=xd[1]..xd[6],style=point,symbol=cross,symbolsize=20); # plot(xydlista,....);Nämä on syytä sisäistää (ainakin toinen tapa), niitä tarvitaan monessa muussakin paikassa kuin vain seuraavassa interplotissa, johon tuollainen kätkeytyy. (Kts myös [HAM] Liite B.2. s. 200, Funktion diskretointi ja taulukointi.)
Apufunktio: interplot
Kooditiedostossa v201.mpl on nyt vaivaa säästävä apufunktio, joka tulkoon myös tähän:
interplot:=proc(xd,yd) local xyd,p,x; xyd:=zip((x,y)->[x,y],xd,yd); p:=interp(xd,yd,x); plots[display]([plot(p,x=xd[1]..xd[nops(xd)],color=blue),plot(xyd,styl e=point,symbol=cross,symbolsize=20,color=black)]); end: Digits:=20: interplot(xd,yd); # Esim: xd:=[...]: f:=x->...: yd:=map(f,xd): # interplot(xd,yd); # display([interplot(xd,yd),f(x),x=xd[1]..xd[nops(xd)]]);Tätä voi modifioida tarpeiden mukaan. Samalla ehdotan, että tottuisitte tämäntapaisia pikkuproseduureja kirjoittelemaan näppärästi ja ilman pelkoa.
plot(D7f,x=0..3); plot(d7f,x=0..3);ja niiden arvoja laskea näin: subs(x=0.4,d7f); evalf(%); Jos haluat jälkeenpäin määritellä funktioksi, lienee selvintä vasta tässä vaiheessa:
diff(f(x),x$7); d7ff:=unapply(%,x);
xdb:=8.0,9.2,10.5,11.3,12.0,12.6,13.0,13.3,13.6:Muuten Maplen spline selviää tästä kyllä kunnialla. Omaa versiotamme ei kannata tässä yrittää, siitä tulee mahdottoman paljon editointia. Jos sitä haluttaisiin, olisi syytä kirjoittaa splini ensin funktioksi: omasplini:=proc(xd,yd,x) ... end:
Vuosi 1940 1950 1960 1970 1980 1990 Väki (megahlöä) 132.165 151.326 179.323 203.302 226.542 249.633Huomionarvoista on, että jos tuosta vain ryhtyy interpoloimaan ja piirtämään (vaikkapa uudenuutukaisella interplot:lla ), niin datapisteet menevät sivuun. Jos tarkkuutta lisää, esim. Digits:=20: niin alkavatkin osua.
Kannattaa miettiä myös tehtävän skaalausta ja tietyti kannattaa kokeilla erimuotoisten esitysten laskentatarkkuutta.