| |
|
|
p.specht
| Fourier-Interpolation: Bekanntlich dejar se matemático Características mittels klassischer Fourier-Zerlegung spektral-analysieren, sprich: Analytisch en Grund- y Oberwellenanteile zerlegen. Manchmal ha uno aber auch sólo una einfache Tabla (z.B. Meßergebnisse) con uno geraden (!) Anzahl de Stützwerten en gleichen (!) Abständen verfügbar. Faßt uno esta como se regelmäßig wiederholenden Wellenzug en, es 'Diskrete Fourieranalyse' angesagt, el auch bajo Bezeichnung 'Harmonische Analyse' bekannt es.
Das klappt auch umgekehrt: Wenn uno el ursprüngliche Función otra vez de el Wellensalat rekonstruiert, spricht uno de 'Fourier-Synthese'. Vorteil el otra vez zusammengesetzten Función: Sie es kontinuierlich, d.h. lo puede auch beliebige Zwischenwerte zwischen el Stützwerten ermittelt voluntad, qué Mathe-Freaks con el Begriff Interpolation llamada.
Details: Statt uno Tabelleneingabe wurde en el nachstehenden Ejemplo una Formel a Ermittlung el Stützwerte verwendet. Aber el puede ser natürlich en cualquier momento ändern, solange uno el x_i-Werte de 0 a 2*Pi laufen läßt. El muss uno erforderlichenfalls sólo hay hintransformieren.
Vor Einsatz dieses Verfahrens debería uno kurz darüber nachdenken, si el individual Frequenzen en el 'richtigen Leben' tatsächlich una Bedeutung zukommt, - si also cierto Ursachen el unterschiedlichern Frequenzen para el Ergebnis verantwortlich ser könnten - sonst hay nämlich deutlich einfachere Arten el Interpolation...
'El Umsetzung en XProfan es una reine DEMO ausschließlich para private Zwecke!
Título de la ventana "Trigonometrische Interpolation Beenden con x = -1"
' Angelehnt a "B.Brand: Algorithmen a praktischen Mathematik", Oldenbourg Vlg.1981, S.78
' Algorithmus portiert después de Xprofan-11 en 2014-09 by P.Pájaro carpintero, Wien; Ohne jedwede Gewähr!
Ventana de Estilo 24:randomize:set("decimals",18):Ventana %maxx/4,0-%maxx/2,%maxy-40
var xh&=width(%hwnd)/2:var yh&=height(%hwnd)/2 : Var m&=16' <<<<<<<<<<<<<<<<<<<<<<<<<<<
declarar i&,j&,k&,a![2*m&],b![2*m&],f!,x![2*m&],y![2*m&],x!,p!
imprimir mkstr$("-",64)+"\n i X[i] F=Y(x[i])\n"+mkstr$("-",64)
whileloop 0,2*m&:i&=&Loop:x![i&]=Pi()*i&/m& : y![i&]=cos(x![i&]+x![i&]*2)' <<<<<<<<<<<<<<<<
casenot i& mod (1+m&\16):imprimir if(i&>9,""," ");i&,tab(6);x![i&],tab(30);if(y![i&]<0,""," ");y![i&]
endwhile :imprimir mkstr$("-",64)
whileloop 2*m&:i&=&Loop : 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:imprimir " a[ 0] = ";if(a![0]<0,""," ");a![0]
whileloop m&-1:k&=&Loop
whileloop 2*m&:i&=&Loop
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&
imprimir " a[";if(k&<=9," ","");k&;"] = ";if(a![k&]<0,""," ");a![k&];\
tab(33);" b[";if(k&<=9," ","");k&;"] = ";if(b![k&]<0,""," ");b![k&]
endwhile :imprimir " a[";if(m&<=9," ","");m&;"] = ";if(a![m&]<0,""," ");a![m&];\
tab(33);" b[";if(m&<=9," ","");m&;"] = ";if(b![m&]<0,""," ");b![m&]
imprimir mkstr$("-",64)+"\n x P(x)\n"+mkstr$("-",64)
repeat :f!=0:imprimir " x = ";:input x!:caso x!= -1:end
whileloop m&-1:k&=&Loop : 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:
imprimir " ";if(x!<0,""," ");x!,tab(29);if(p!<0,""," ");p!
until %key=27:end
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 15.05.2021 ▲ |
|
|
|