# Nämä apufunktiot saat käyttöön Maplessa joko read-komennolla: # read("Maplekoodit.txt") # tai # copy/pastella Mapleen. Jälkimmäisessä siistein tapa on (olisi jos ... kts. alempana) # INSERT -> CODE EDIT REGION # CTR-E:llä koodien määrittelyt suorittuvat, eli funktiot saadaan määritellyiksi. # Huom: Ainakin Macbookissa "code edit region":n jotkut merkit eivät näy, # esim. alkusulku (. # Silti se "on siellä", aika omituista. Lisäksi "code edit regionin kokoa ei pysty jälkeenpäin # muuttammaan. ÄLÄ SIIS KÄYTÄ, vaikkei pahalta aluksi näytä! linspace:= (a,b,n)->[seq(a+iii*(b-a)/(n-1),iii=0..n-1) ]: # Esim: # linspace(0,1,5) # ------------------------------------------------ # Lagrangen kertojapolynomi: L:=proc(j,xd,x) local oso,nimi,i,j1; j1:=j+1; oso:=product((x-xd[i]),i=1..nops(xd)-1)/(x-xd[j1]); nimi:=subs(x=xd[j1],oso); oso/nimi; end: #Parametrit # j -- antaa L:n indeksin, eli kyseessä on Lj # j=0..n, missä n on xd-listan pituus - 1 # xd -- xdata, [x0,x1,...,xn], lista (n+1 pistettä) # x -- polynomin muuttuja #Lagrangen polynomijono muodostetaan nyt näin, kun data on listassa xd # seq(L(j,xd,x),j=0..nops(xd)-1); # --------------------------------------------------- # Lagrangen interpolaatiopolynomi annettuun dataan xd,yd (listoja): lagint:=(xd,yd,x)->add(yd[j+1]*L(j,xd,x),j=0..nops(xd)): # Esim: # lagint([a,b,c],[ya,yb,yc],x); # xd:=[a,b,c]: lagint(xd,map(f,xd),x);