| |
|
|
p.specht
| Interpolation liefert siempre exakte Werte a el Stützstellen. Das unterscheidet ellos de el Approximation, el intenta, sogenannte Ausgleichskurven zwischen viele Messdaten con geringstem Fehler einzupassen.
Un Interpolation por konvergente Kettenbruch-Desarrollo ha folgende Stärke: Rationale Características puede ya en Base de wenigen Stützstellen así entwickelt voluntad, daß gute Näherungen existieren; una exzellente Variante es el sog. Thiele'sche Kettenbruch. El hier gefundenen (en el wahrsten Sinne des Wortes) "Bruchstücke" voluntad ausgegeben, anschließend puede x-Werte eingegeben voluntad, en Zwischenwerte zwischen el Stützstellen abzufragen. Als Demo wurde en File-I/O verzichtet. Ohne jede Gewähr:
Título de la ventana "Interpolation por konvergente Kettenbruchentwicklung"
Ventana de Estilo 24:randomize:font 2:set("decimals",17)
'{ Interpolation por Kettenbruchentwicklung
'*************************************************************
'* Interpolate a function F(x) by continuous fractions *
'* --------------------------------------------------------- *
'* SAMPLE RUN: *
'* (Interpolate function e(x) between x=0 and x=2) *
'* *
'* Number of points: 3 *
'* X, Y: 0,1 *
'* X, Y: 1,2.71828 *
'* X, Y: 2,7.38906 *
'* *
'* Coefficients D(K): *
'* D(0) = 1.000000 *
'* D(1) = 0.581977 *
'* D(2) = -3.718271 *
'* *
'* X = 1.5 *
'* *
'* For X = 1.5 Y = 4.351909 *
'* *
'* --------------------------------------------------------- *
'* Ref.: "Methodes de calcul numerique, Tome 2 By Claude *
'* Nowakowski, PSI Edition, 1984" [BIBLI 04]. *
'* *
'* Basic Release By J-P Moreau, Paris. *
'* (www.jpmoreau.fr) *
'*************************************************************
'* *
'* XProfan-Versión by 2014-10 by P.Pájaro carpintero, Wien *
'* *
'}************************************************************
CLS rnd(8^8)
Declarar n1&,n&,m&,K&,L&,xxx!,yyy!,DD!,DL!,XX!,S!
PRINT "\n Anzahl Stützwerte: ";:INPUT N1& :imprimir
N&=N1&-1
Declarar X![N&],Y![N&],D![N&]
'Read data from screen
whileloop 0,n&:k&=&Loop
imprimir " X("+str$(k&)+") = ";
input xxx!
X![K&]=xxx!
imprimir tab(20);" Y("+str$(k&)+") = ";
input yyy!
Y![K&]=yyy!
endwhile
'Calculate coefficients D(K)
whileloop 0,n&:k&=&Loop
D![K&] = Y![K&]
endwhile
M&=N&
whileloop m&:L&=&Loop
whileloop L&,N&:K&=&Loop
DD! = (X![K&]-X![L&-1])/(D![K&]-D![L&-1])
IF K&<>L&
D![K&]=DD!
ELSE
DL!=DD!
ENDIF
endwhile
D![L&]=DL!
endwhile
'imprimir coefficients
PRINT
PRINT " Koeffizienten D(K):"
whileloop 0,n&:k&=&Loop
PRINT " D[";K&; "] = ";
PRINT format$("%g",D![K&])
endwhile
REPEAT
'Interpolate for X=XX
PRINT
imprimir " X = ",:Entrada XX!
'Evaluate continuous fraction
S!=(XX!-X![N&-1])/D![N&]
whileloop n&-1,1,-1:k&=&Loop
S!=(XX!-X![K&-1])/(D![K&]+S!)
endwhile
S!=S!+D![0]
caso %csrlin>23:cls rnd(8^8)
PRINT
PRINT " Für el eingegebene X=";format$("%g",XX!);" es (Ihre Stützwerte zugrunde- "
imprimir " gelegt) el Interpolierte Funktionswert Y =";format$("%g",S!)
imprimir "---------------------------------------------------------------------"
waitinput
UNTIL 0
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 16.05.2021 ▲ |
|
|
|