Nein, denke ich nicht, denn Python ist nicht für sowas ausgelegt. Aber es gibt ja viele Möglichkeiten Nullstellen auszurechnen, so gibt es für Quadratische Gleichungen ja die Mitternachtsformel.netswipe hat geschrieben:Naja vielelicht funktioniert ja sowas wie
for Funktion == 0:
print x
Kurvendiskussionen, dafür Funktionen zerlegen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Mitternachtsformel? Hab ich noch nie gehört, klingt aber lustig *räusper*
Also die bekannteste Methode um Nullstellen numerisch zu berechnen ist wohl das Newton'sche Näherungsverfahren. (Hier muss allerdings die erste Ableitung der Funktion bekannt sein):
Man beginnt also mit einem Schätzwert, x(i).
Dann gehts so weiter:
x(i+1) = Schätzwert - Funktionswert an der Stelle x(i) / Funktionswert der ersten Ableitung an der Stelle x(i).
x(i) = x(i+1), und weiter gehts ...
Wenn x(i+1) und x(i) sich kaum mehr unterscheiden, bricht man ab, dann ist man bei der Nullstelle.
Dookie hat bei seinem Programm (soweit ich das erkennen kann) die sog. Intervallschachtelung verwendet.
Hier braucht man 2 Schätzwerte, x(0) und x(1), aber nicht die erste Ableitung.
- Man berechnet mal die Funktionswerte von x(0) und x(1), f(x(0)) und f(x(1))
- und prüft, ob eine Nullstelle dazwischen liegt: man prüft einfach ob f(x(0)) * f(x(1)) < 0.Wenn ja gehts weiter, wenn nein muss man neue Startwerte wählen.
- Das intervall zwischen x(0) und x(1) wird halbiert, dort liegt der neue Punkt x(2).
- Liegt zwischen x(1) und x(2) eine Nullstelle (also ist f(x(1)) * f(x(2)) < 0?)
- Wenn ja, wieder halbieren, usw.
- Wenn nein, dann liegt die Nullstelle zwischen x(0) und x(2), und wir machen mit diesem Intervall weiter (halbieren, ...)
Tja, das geht so lange, bis der Funktionswert beim Halbierunspunkt ungefähr bei Null liegt.
Gut, ich glaube ich hab jetzt mehr verwirrt als geholfen, aber denk Dir die Methoden mal durch, sind eigentlich ganz leicht und durchschaubar
PS: Mir is grad eingefallen: Statt der ersten Ableitung beim Newton, kann man auch die numerische Ableitung einsetzen, aber ich glaube das verwirrt jetzt noch mehr ...
Gruß, mawe
Mitternachtsformel? Hab ich noch nie gehört, klingt aber lustig *räusper*
Also die bekannteste Methode um Nullstellen numerisch zu berechnen ist wohl das Newton'sche Näherungsverfahren. (Hier muss allerdings die erste Ableitung der Funktion bekannt sein):
Code: Alles auswählen
f(x(i))
x(i+1) = x(i) - ----------
f'(x(i))
Dann gehts so weiter:
x(i+1) = Schätzwert - Funktionswert an der Stelle x(i) / Funktionswert der ersten Ableitung an der Stelle x(i).
x(i) = x(i+1), und weiter gehts ...
Wenn x(i+1) und x(i) sich kaum mehr unterscheiden, bricht man ab, dann ist man bei der Nullstelle.
Dookie hat bei seinem Programm (soweit ich das erkennen kann) die sog. Intervallschachtelung verwendet.
Hier braucht man 2 Schätzwerte, x(0) und x(1), aber nicht die erste Ableitung.
- Man berechnet mal die Funktionswerte von x(0) und x(1), f(x(0)) und f(x(1))
- und prüft, ob eine Nullstelle dazwischen liegt: man prüft einfach ob f(x(0)) * f(x(1)) < 0.Wenn ja gehts weiter, wenn nein muss man neue Startwerte wählen.
- Das intervall zwischen x(0) und x(1) wird halbiert, dort liegt der neue Punkt x(2).
- Liegt zwischen x(1) und x(2) eine Nullstelle (also ist f(x(1)) * f(x(2)) < 0?)
- Wenn ja, wieder halbieren, usw.
- Wenn nein, dann liegt die Nullstelle zwischen x(0) und x(2), und wir machen mit diesem Intervall weiter (halbieren, ...)
Tja, das geht so lange, bis der Funktionswert beim Halbierunspunkt ungefähr bei Null liegt.
Gut, ich glaube ich hab jetzt mehr verwirrt als geholfen, aber denk Dir die Methoden mal durch, sind eigentlich ganz leicht und durchschaubar
PS: Mir is grad eingefallen: Statt der ersten Ableitung beim Newton, kann man auch die numerische Ableitung einsetzen, aber ich glaube das verwirrt jetzt noch mehr ...
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ist eingentlich grundlegendes Lösen von sehr einfachen Gleichungen, vielleicht kennst du es ja unter dem Namen der Großen Lösungsformel oder abc-Formel. Weiteres dazu steht auch in der Wikipedia.mawe hat geschrieben:Mitternachtsformel? Hab ich noch nie gehört, klingt aber lustig *räusper*
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi Leonidas!
Ja, die Formel kenn ich natürlich, aber nicht unter dem Namen Mitternachtsformel. Wir sagen dazu ... hmmm ... Formel zum Lösen quadratischer Gleichungen
Gruß, mawe
Ja, die Formel kenn ich natürlich, aber nicht unter dem Namen Mitternachtsformel. Wir sagen dazu ... hmmm ... Formel zum Lösen quadratischer Gleichungen
Gruß, mawe
Nun, so will ich das nicht sehen: Python ist nicht unbedingt numerisch stabil, ja. Aber sehr gut für viele wissenschaftliche Anwendungen geeignet - darunter liegt dann manches Mal C oder Fortran Code.Leonidas hat geschrieben:Nein, denke ich nicht, denn Python ist nicht für sowas ausgelegt.
PS Im Moment ist gerade eine Diskussion zur Zukunft von SciPy zugange. Bei Interesse einfach mal die Numpy-Mailingliste mitlesen.
Gruß,
Christian
^^mawe hat geschrieben:Hi Leonidas!
Ja, die Formel kenn ich natürlich, aber nicht unter dem Namen Mitternachtsformel. Wir sagen dazu ... hmmm ... Formel zum Lösen quadratischer Gleichungen
Gruß, mawe
Für mich heißt das DIng pq-Formel Aber ich glaub das is dann doch nen wenig Kompliziert das auf den entsprechenden Ansatz zu bringen.
Ich denke ich werd mir das newton'sche näherungsverfahren angucken. Ich kenn die zwar hab sie auch mal benutzt aber so richtig kapiert hab ich sie nie. Mal sehen... wozu gibt es mathlehrer
Danke, netswipe
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Ich finde die "Mitternachtsformel" ist für Dich ungeeignet. Erstens ist sie numerisch nicht stabil, und Du hast ja nicht nur mit quadratischen Gleichungen zu tun, oder?
Gruß, mawe
Ich finde die "Mitternachtsformel" ist für Dich ungeeignet. Erstens ist sie numerisch nicht stabil, und Du hast ja nicht nur mit quadratischen Gleichungen zu tun, oder?
Soll das etwa heissen Du kennst dich nach meiner grossartigen Beschreibung immer noch nicht aus?Ich denke ich werd mir das newton'sche näherungsverfahren angucken. Ich kenn die zwar hab sie auch mal benutzt aber so richtig kapiert hab ich sie nie. Mal sehen... wozu gibt es mathlehrer
Gruß, mawe
-
- User
- Beiträge: 12
- Registriert: Sonntag 6. März 2005, 20:12
- Wohnort: Edermünde
- Kontaktdaten:
Ähm doch, aber ich hab keine richtige Ahnung wie ich das pythontechnisch umsetzen soll War doch gut erklärt ^^mawe hat geschrieben: Soll das etwa heissen Du kennst dich nach meiner grossartigen Beschreibung immer noch nicht aus?
Gruß, mawe
Die funktionesweise hab ich schon verstanden, aber der Code macht mir da nen bisserl Probleme. Wie lass ich z.b. python schätzen? oder dann die minimalunterschiede von 0,0000001 ignorieren? (runden?)
Grüße,
Netswipe
Nein, Runden ist in numerischen Anwendung meist keine so gute Idee. Bei iterativen Algorithmen nimmst Du am besten ein Abbruchkriterium:netswipe hat geschrieben:oder dann die minimalunterschiede von 0,0000001 ignorieren? (runden?)
Code: Alles auswählen
#pseudo code
if math.fabs(gesuchte_Zahl-errechnete_Zahl) <= Abbruchkriterium:
#oder je nach ursprünglicher Gleichung
if math.fabs((errechnete_Zahl-1)/errechnete_Zahl)) <=Abbruchkriterium
#oder sooo ...
Gruß,
Christian