Deutsch
Quelltexte/ Codesnippets

Regula falsi - die 'Falsche Regel' zur Lösung nichtlinearer Funktionen

 

p.specht

Ein Algorithmus aus den Urschleimzeiten der Mathematik, als verschiedene Funktionen überhaupt erstmals - zumindest numerisch - gelöst werden konnten.
Damals versuchte man, sich durch händische Berechnung mittels Pergament und Federkiel an die Lösungen heranzutasten. Pech, wenn es gleich mehrere Lösungen gab - man erhielt, abhängig vom Startwert, immer nur eine davon. Daher auch der Name "Falsche Regel".
WindowTitle "Regula falsi: Nullstellensuche über Sekanten-Abschnitte"
' Abt. "Historische Algorithmen"
' (D) Demoware Mai 2012 P. Specht; Ohne jedwede Gewähr!!!
' Gleichungslösung durch "Herantasten", Indikator: Fehlerkurvenanstieg
' Verwendet hier gerade die proc Formel_1
' Startwert ist verantwortlich, zu welcher einzelnen Lösung
' von ggf. mehreren Lösungen der Algorithmus jeweils tendiert
Font 2:Randomize:Cls rnd(8^8):set("decimals",18)
Declare a!,x!,i&
Var imax&=1000' Maximale Zahl Näherungsschritte
Begin:
print "\n Startwert für Lösungssuche (kritisch!): ";
input a!
x!=regulafalsi(a!)

if x!=val("4.9406564584124654E-323")

    print " Lösung nach ";imax&;" Schritten nicht gefunden!"

else

    print " Lösung:   x = ";x!
    print " gefunden nach ";i&;" Schritten."
    print " Funktionswert: ";formel_1(x!)'formel_0(x!)

endif

WaitInput
case %csrlin>22:cls
goto "Begin"

proc regulafalsi

    parameters a!' Startwert
    var er!=10^-13
    Declare x0!,x1!,x2!,y0!,y1!
    x2!=a!
    x1!=a!+0.1' Soll nur gleich zu Beginn Division durch Null vermeiden
    i&=0

    while i&<=imax&

        x0!=x1!:x1!=x2!' next generation vorbereiten
        rem y0!=formel_0(x0!) : y1!=formel_0(x1!)' Testfunktion Parabel
        y0!=formel_1(x0!) : y1!=formel_1(x1!)' Polynom 3. Grades

        if (y1!-y0!)<>0

            x2! = x0! - y0! * (x1!-x0!) / (y1!-y0!)

        else

            print " Warnung: Verfahren wurde instabil!"
            break

        endif

        case abs(x2!-x1!)<=er!:break
        inc i&

    endwhile

    'Bei Error: x2 = -INF + 1e-307 =
    'kleinstmöglicher DoublePrecision Floatwert<>0
    case i&>imax&:x2!=val("4.9406564584124654E-323")
    return x2!

endproc

proc Formel_0

    parameters x!
    declare y!
    '---------------------------------------------------------------
    ' Formel zuvor stets auf homogene Form bringen:  ... = 0
    ' Ges: Lösung zu  x^2 = +4 , wird also (beide Seiten: - 4) zu:
    y!=x!*x! - 4' mit y = Abweichung von 0 (Irrtumsvariable)
    ' Verfahrensziel: Suche ab Startwert a ein x, das y zu Null macht
    ' Tipp für Schnittpunkt 2er Funktionen: Differenzfunktion bilden!
    '---------------------------------------------------------------
    return y!

EndProc

proc Formel_1

    parameters x!
    declare y!
    '-------------------------------------
    ' Zu lösen: x^3-2*x^2+12*x = 100
    y!=x!*x!*x!-2*x!*x!+12*x!-100' = 0
    '-------------------------------------
    return y!

EndProc

 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
07.05.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

570 Betrachtungen

Unbenanntvor 0 min.
Sven Bader02.11.2021
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
R.Schneider28.05.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie