| |
|
|
p.specht
| Fourier-Interpolation: Bekanntlich laisser sich mathématique Funktionen mittels klassischer Fourier-décomposition spektral-analysieren, sprich: Analytisch dans Grund- et Oberwellenanteile décomposer. quelquefois hat on mais aussi seulement une simple Tabelle (z.B. Meßergebnisse) avec einer geraden (!) Anzahl de Stützwerten dans gleichen (!) Abständen disponible. Faßt on cet comme sich régulier wiederholenden Wellenzug sur, ist 'Diskrete Fourieranalyse' annoncé, qui aussi sous Bezeichnung 'Harmonische Analyse' bekannt ist.
cela klappt aussi renversé: si on qui ursprüngliche Funktion wieder aus dem Wellensalat rekonstruiert, spricht on de 'Fourier-Synthese'. Vorteil qui wieder zusammengesetzten Funktion: vous ist kontinuierlich, d.h. es peut aussi beliebige Zwischenwerte entre den Stützwerten ermittelt volonté, quoi Mathe-Freaks avec dem Begriff Interpolation appel.
Details: Statt einer Tabelleneingabe wurde im nachstehenden Beispiel une Formel zur Ermittlung qui Stützwerte verwendet. mais cela peux on naturellement jederzeit changement, solange on qui x_i-Werte de 0 jusqu'à 2*Pi courir läßt. qui muss on erforderlichenfalls arrêt là hintransformieren.
avant Einsatz cet Verfahrens sollte on kurz par-dessus sur), si den individuel Frequenzen im 'richtigen Leben' réellement une signification zukommt, - si alors bestimmte Ursachen qui unterschiedlichern Frequenzen pour cela Ergebnis responsable son könnten - sonst gibt es nämlich deutlich einfachere Arten qui Interpolation...
'qui Umsetzung dans XProfan ist une reine DEMO ausschließlich pour private Zwecke!
Titre de la fenêtre "Trigonometrische Interpolation finissons avec x = -1"
' Angelehnt à "B.incendie: Algorithmen zur praktischen Mathematik", Oldenbourg Vlg.1981, S.78
' Algorithmus portiert pour Xprofan-11 dans 2014-09 by P.Specht, Wien; sans jedwede Gewähr!
Fenêtre Style 24:randomize:set("decimals",18):Fenêtre %maxx/4,0-%maxx/2,%maxy-40
var xh&=width(%hwnd)/2:var yh&=height(%hwnd)/2 : Var m&=16' <<<<<<<<<<<<<<<<<<<<<<<<<<<
declare i&,j&,k&,a![2*m&],b![2*m&],f!,x![2*m&],y![2*m&],x!,p!
imprimer mkstr$("-",64)+"\n i X[i] F=Y(x[i])\n"+mkstr$("-",64)
whileloop 0,2*m&:i&=&Boucle:x![i&]=Pi()*i&/m& : y![i&]=cos(x![i&]+x![i&]*2)' <<<<<<<<<<<<<<<<
casenot i& mod (1+m&\16):imprimer si(i&>9,»," ");i&,tab(6);x![i&],tab(30);si(y![i&]<0,»," ");y![i&]
endwhile :imprimer mkstr$("-",64)
whileloop 2*m&:i&=&Boucle : a![0]=a![0]+y![i&]:a![i&]=a![i&]+y![i&]*(1-2*(i& mod 2))
endwhile :a![0]=a![0]/m&/2:a![m&]=a![m&]/m&/2:imprimer " a[ 0] = ";si(a![0]<0,»," ");a![0]
whileloop m&-1:k&=&Boucle
whileloop 2*m&:i&=&Boucle
a![k&]=a![k&]+y![i&]*cos(k&*x![i&]) : b![k&]=b![k&]+y![i&]*sin(k&*x![i&])
endwhile : a![k&]=a![k&]/m& : b![k&]=b![k&]/m&
imprimer " a[";si(k&<=9," ",»);k&;"] = ";si(a![k&]<0,»," ");a![k&];\
tab(33);" b[";si(k&<=9," ",»);k&;"] = ";si(b![k&]<0,»," ");b![k&]
endwhile :imprimer " a[";si(m&<=9," ",»);m&;"] = ";si(a![m&]<0,»," ");a![m&];\
tab(33);" b[";si(m&<=9," ",»);m&;"] = ";si(b![m&]<0,»," ");b![m&]
imprimer mkstr$("-",64)+"\n x P(x)\n"+mkstr$("-",64)
repeat :f!=0:imprimer " x = ";:input x!:cas x!= -1:end
whileloop m&-1:k&=&Boucle : f!=f!+(a![k&]*cos(k&*x!)+b![k&]*sin(k&*x!))
endwhile : p!=f!+a![0]+a![m&]*cos(m&*x!):locate %csrlin-1,1:
imprimer " ";si(x!<0,»," ");x!,tab(29);si(p!<0,»," ");p!
until %clé=27:end
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 15.05.2021 ▲ |
|
|
|