Español
Fuente/ Codesnippets

Newton-Raphson gewaltig beschleunigt: STEFFENSEN-Algorithmus

 

p.specht

Como en uno hier kubischen Función a esperar, liefern verschiedene Startwerte drei verschiedene real Lösungs-Näherungen en el gefordertern Toleranzbereich. Ejemplo: Newton-Raphson benötigt 44 Iterationen, Steffensen wegen verbessertem Näherungsalgorithmus sólo sieben! Achtung: Goto-Spagetticode Old Style!
Título de la ventana "STEFFENSEN-ALGORITHMUS"
'   berechnet implizit el "Biegung" el Funktionskurve, nähert se exponentiell.
'   NUR FÜR DEMONSTRATIONSZWECKE! Keine Gewähr! No warranties whatsoever!
' Original: 1987 John H Mathews, Californa State Univ.
Ventana de Estilo 24:Font 2
Selección aleatoria:CLS Rnd(8^8)
Conjunto("Decimals",15)
Declarar DELTA!,EPSILON!,max&,ANS$,P0!,SMALL!,POLD!
Declarar K&,COND&,P1!,P2!,p3!,P4!,DF0!,D1!,D2!,DP!,DF1!,Y3!,RELERR!
'*** HIER DIE FUNKTION SOWIE IHRE ABLEITUNG EINPROGRAMMIEREN:
'    FNF (X!) = X!*X!*X! - 3*X! + 2
Def FNF(1)  @!(1)*@!(1)*@!(1) - 3 * @!(1) + 2
'    FNF1(X!) = 3*X!*X! - 3
Def FNF1(1)  3*@!(1)*@!(1) - 3
'***********************************************************
Goto "G52"'skip imprimir subroutine
S30:
' DIE FUNKTION IN KLARTEXT AUSGEBEN:
REM SUBROUTINE PRINT FUNCTION
PRINT "         F(X)  =  X^3 - 3*X + 2  = 0            "
Volver
'***********************************************************
G52:
Goto "G100"
G100:
REM PROGRAM STEFFENS
DELTA!  =Val("1E-16")'Relative Fehlergrenze des Parámetros
EPSILON!=Val("1E-16")'Ansolute Funktionswert-Toleranz
MAX&=99'Maximale Anzahl a Iterationen
G140:
Gosub "S300": REM SUBROUTINE INPUTS
GOSUB "S400": REM SUBROUTINE STEFFENSEN
GOSUB "S1000":REM SUBROUTINE RESULTS
PRINT
Imprimir
PRINT " ANDEREN STARTWERT PROBIEREN <j/n>? ";
Entrada ANS$
Casenote (ANS$="N") Or (ANS$="n"):GOTO "G140"
GOTO "G5000"
S300:
REM SUBROUTINE INPUTS
CLS Rnd(8^8)
PRINT
PRINT " STEFFENSEN'S BESCHLEUNIGUNG DES NEWTON-RAPHSON-ALGORITHMUS "
PRINT "   ZUR NULLSTELLENSUCHE IN EINER (NICHTLINEAREN) FUNKTION   "
PRINT
Gosub "S30"' ZU SUBROUTINE PRINT FUNCTION
PRINT
PRINT " Lo se una anfänglicher Startwert P0 benötigt:"
PRINT " Gewünschter Startwert P0 = ";
Entrada P0!
PRINT
RETORNO
S400:
REM SUBROUTINE STEFFENSEN
SMALL!=Val("1E-20")
POLD!=P0!
K&=0
COND&=0
P3!=P0!
P2!=P0!+1
P1!=P0!+2

WHILE (K& < MAX&) And (COND& = 0)

    P0!=P3!
    DF0!=FNF1(P0!)

    If DF0!<>0:Goto "G520"

        Más:Goto "G540"

    EndIf

    G520:
    P1!=P0! - FNF(P0!)/DF0!' Newton-Raphson-Schritt
    Goto "G590"
    G540:
    REM ELSE
    COND&=1
    DP!=P3!-P2!
    P3!=P0!
    Goto "G860"
    G590:
    REM ENDIF
    DF1!=FNF1(P1!)

    If  DF1! <>0:Goto "G620"

        Más:Goto "G640"

    EndIf

    G620:
    P2!=P1! - FNF(P1!)/DF1!
    Goto "G690"
    G640:
    REM ELSE
    COND&=1
    DP!=P1!-P0!
    P3!=P1!
    Goto "G860"
    G690:
    REM ENDIF
    D1!=(P1!-P0!)*(P1!-P0!)
    D2!=P2!-2*P1!+P0!

    IF D2!=0:Goto "G730"

        Más:Goto "G770"

    EndIf

    G730:
    COND&=1
    DP!=P2!-P1!
    P3!=P2!
    GOTO "G800"
    G770:
    REM ELSE
    P3!=P0!-D1!/D2!
    DP!=P3!-P2!
    G800:
    REM ENDIF
    Y3!=FNF(P3!)
    RELERR!=Abs(DP!)/(Abs(P3!)+SMALL!)
    Case RELERR! < DELTA!:  COND&=2
    Case  Abs(Y3!) < EPSILON! : COND&=3
    Case  (RELERR!  < DELTA!) And (Abs(Y3!) < EPSILON!) : COND&=4
    G860:
    REM WEITER
    K&=K&+1

ENDWHILE

P0!=POLD!
RETORNO
S1000:
REM SUBROUTINE RESULTS
CLS Rnd(8^8)
PRINT
PRINT " STEFFENSEN'S BESCHLEUNIGUNG DES NEWTON-RAPHSON-ALGORITHMUS "
PRINT "   ZUR NULLSTELLENSUCHE IN EINER (NICHTLINEAREN) FUNKTION   "
PRINT
Gosub "S30"'PRINT-SUBROUTINE
PRINT
PRINT " Der Startwert war P0 =",P0!
PRINT
PRINT " Nach "+Trim$(Str$(K&))+" Iterationen Quasi-Nullwert gefunden en:"
Imprimir : Imprimir
Imprimir "    P =",P3!
Imprimir : Imprimir
PRINT "  DP  =",ABS(DP!)," es seine relative Genauigkeit."
PRINT
Imprimir "  F(";Trim$(Str$(P3!));") =",FNF(P3!)
PRINT
Case FNF(P3!)=0  : PRINT "  Berechnete Función ergab GENAU NULL! "

If COND&=0:Goto "G1200"

    Más:Goto "G1240"

EndIf

PRINT "  El Konvergenz des Verfahrens es zweifelhaft. Begründung:"
PRINT
G1220:
PRINT "  Maximale Iterationszahl überschritten!"
Goto "G1400"
G1240:
REM ELSEIF

If COND&=1:Goto "G1260"

    Más:Goto "G1280"

EndIf

G1260:
PRINT "  Verfahrenskonvergenz zweifelhaft, como Division por Null."
Goto "G1400"
G1280:
REM ELSEIF

IF  COND&=2:Goto "G1300"

    Más:Goto "G1320"

EndIf

G1300:
PRINT "  Solución innerhalb el programmierten Toleranzen."
Goto "G1400"
G1320:
REM ELSEIF

If COND&=3:Goto "G1340"

    Más:Goto "G1360"

EndIf

G1340:
PRINT "  Funktionswert F(P) innerhalb el Toleranzgrenzen."
Goto "G1400"
G1360:
REM ELSEIF

If  COND&=4:Goto "G1380"

    Más: Goto "G1400"

EndIf

G1380:
PRINT "  Der Parámetro-Valor  P y Funktionswert F(P) "
PRINT "  mentira beide en el programmierten Toleranzen.       "
G1400:
REM ENDIF
Volver
G5000:
FIN
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
02.05.2021  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

531 Views

Untitledvor 0 min.
funkheld01.01.2022
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie