Ergebnis 1 bis 5 von 5
  1. #1
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard [B] Das Newton-Verfahren in Perl

    Hey,
    Ich musste im Zuge eines anderen Skriptes das Newton-Verfahren Anwenden, um die Nullstellen einer Funktion zu errechnen.
    Hab das ganze jetzt mal in ein eigenständiges Skript gepackt.
    Das Newton-Verfahren nimmt man (glaube Ich), in der 11. Klasse durch.
    Der erste Sprung über die X-Achse wird automatisch berechnet, um die benötigten Schritte stark einzuschränken!

    Auch wenn ihr das Skript an sich nicht braucht freue ich mich über jede Kritik.

    Usage:

    Das erste Argument gibt die Anzahl an Schritten an. 0 ist default.
    Wenn ihr 0 angebt, dann stoppt das Skript automatisch wenn die Nullstelle gefunden wurde! Deshalb ist 0 absolut zu empfehlen.
    Die Funktion und die Ableitung sind fest im Code verankert, können aber in den 2 Subs beliebig verändert werden. Achtet darauf dass " ** " einem " ^ " entspricht

    Im Skript ist
    Code:
    return $x**3+2*$x-1;
    also
    Code:
    f(x) = x^3+2*x-1
    So, hier das Skript. Viel Spaß!



    Beispiel-Output:



    Ich muss wohl noch eine Funktion zum Runden einbauen, aber nur wenn jemand Verwendung für das Skript hat.

    Changelog:

    19.3.2010:

    - Added 0 as Maximum to activate automatic stopping, when the point has been found. You can now use 'perl math.pl 0'.
    Geändert von Bonkers (20.03.2010 um 11:26 Uhr)

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ich habe mir noch etwas überlegt, um das eingeben von Polynomen etwas zu vereinfachen.

    Ein Polynom N-ten Grades lässt sich ja wie folgt darstellen:
    f(x) = (aN) * x^(N) + (aN-1) * x^(N-1) + [...] + a2 * x^2 + a1 * x + a0

    Dabei muss man ja nur die Exponenten und Koeffizienten speichern.
    Das macht sich relativ gut in einem Hash, weil die Exponenten jeweils nur einmal vorkommen (gesetzt man hat richtig zusammengefasst... und nicht sowas stehen wie x+x anstatt 2x).

    Über Ableitungsregeln kann man dann auch automatisch die Ableitung berechnen lassen.

    Beispielcode:


    P.S.: ich weiß, dass dein Weg mehr generisch ist, weil man da auch andere Funktionenklassen mit deren Ableitung eintragen kann, jedoch muss man dafür auch die Ableitung selber berechnen

    P.S.2: ansonsten sicher eine ganz nette Idee (obwohl das Newton-Verfahren eher nutzlos ist wenn man eh am PC sitzt und einen Funktionplotter zur Hand hat...)


    MfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard

    Danke für deine Antwort!

    obwohl das Newton-Verfahren eher nutzlos ist wenn man eh am PC sitzt und einen Funktionplotter zur Hand hat...
    Stimmt schon, aber erstens war das Skript ja "Silent" gedacht, und zweitens musste ich damals die Tabellen per Hand im Heft rechnen, da hätte ich das Skript gebrauchen können

    mit deren Ableitung eintragen kann, jedoch muss man dafür auch die Ableitung selber berechnen
    Die Ableitung zu "berechnen" sollte wohl nicht das Problem sein, oder? Vielleicht sollte einer von uns beiden ja eine "Ableitungs-Sub" schreiben, sollte per RegEX kein Problem darstellen.

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

  4. #4
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von Bonkers Beitrag anzeigen
    Die Ableitung zu "berechnen" sollte wohl nicht das Problem sein, oder?


    Zitat Zitat von Bonkers Beitrag anzeigen
    Vielleicht sollte einer von uns beiden ja eine "Ableitungs-Sub" schreiben, sollte per RegEX kein Problem darstellen.
    Das wärst dann wohl eher du, da ich nur wenig Perl-Erfahrung habe (Hashes subs zu übergeben musste ich mir z.B. auch vorher nochmal anschauen...).

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  5. #5
    Stanley Jobson Avatar von Bonkers
    Registriert seit
    01.02.2010
    Beiträge
    735

    Standard



    Das wärst dann wohl eher du, da ich nur wenig Perl-Erfahrung habe
    Ich werde mich auf jeden Fall mal dran versuchen, obwohl ich irgendwie das Gefühl habe dass das trotz RegEX nicht so einfach werden wird.

    Zur Perl-Erfahrung:

    Egal um was es geht, ich Code immer einfach drauf los, wozu habe ich schließlich immer Google zur Hand

    Blackberry: der eine typ ist danach gestorben
    Bonkers: Echt?
    Blackberry: jep

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •