Wenn Du keine eigene CAS programmierst muß es der Benutzer machen.
Und, da Du das mit Sicherheit nicht selbst tun willst, nimm doch eine die schon fertig ist.
--- Heiko.
Ein mathematisches Problem...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Es gibt auch ein CAS welches mit Python zusammenhängt, mathGUIde, wenn du schon das in Common Lisp geschriebene, freie CAS Maxima nicht magst (und alle anderen auch nicht).
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])
Na, es wäre schon nett wenn Dein Programm das übernehmen würdeuruk-kai hat geschrieben: Aber muss der Benutzer diese Umformung vornehmen?

Eine Methode wie das geht steckt ja schon im Snippet von Dietrich drin. Ich hätt sowas in der Art gemacht:
Code: Alles auswählen
def set_zero(eq):
lhs, rhs = eq.split("=")
return "%s - (%s)" % (lhs, rhs)
eq1 = "26 / x = 13"
print set_zero(eq1) # -> 26 / x - (13)
Dank dem Hinweis von Leonidas habe ich in der Uni-Siegen Seite herumgeschnueffelt. Professor Ring had eigentlich tolles Begleitmaterial fuer seine Pythonvorlesung zusammengestellt das auf
http://www.math.uni-siegen.de/ring/python.html
zu finden ist (als Zips).
http://www.math.uni-siegen.de/ring/python.html
zu finden ist (als Zips).
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Warum wollen ihm eigentlich alle einreden, etwas fertiges zu verwenden anstatt selbst zu programmieren? Es gibt auch Leute, die Spass daran haben, etwas nachzuprogrammieren, einfach um zu sehen wie's funktioniert. Also warum wollt ihr ihm das ausreden? Codesnippets und Showcase wären leer, wenn alle so denken würden.Leonidas hat geschrieben: Es gibt auch ein CAS welches mit Python zusammenhängt, mathGUIde, wenn du schon das in Common Lisp geschriebene, freie CAS Maxima nicht magst (und alle anderen auch nicht).
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Kennst Du die mathematische Theorie hinter einer CAS? Zum Beispiel ist das tolle newtonsche Verfahren was hier immer wieder angesprochen wurde teilweise recht fehleranfällig, bei bestimmten Funktionen verinngert sich nämlich pro Schritt nicht der Abstand zur Nullstelle, sondern vergrößert sich immer noch. Zum anderen: wie finde ich zwei Punkte die links und rechts von der Nullstelle liegen, um ein anderes Verfahren wie das Intervallhalbierungsverfahren nutzen zu können? Wann kann ich simulated annealing benutzen, wann ist ein genetischer Algorithmus das richtige?Warum wollen ihm eigentlich alle einreden, etwas fertiges zu verwenden anstatt selbst zu programmieren? Es gibt auch Leute, die Spass daran haben, etwas nachzuprogrammieren, einfach um zu sehen wie's funktioniert. Also warum wollt ihr ihm das ausreden? Codesnippets und Showcase wären leer, wenn alle so denken würden.
Ich hab mich mit sowas zum Teil in meiner Bachelorarbeit für Mathe auseinandergesetzt, bzw. mache es jetzt immer noch, aber das ist alles andere als trivial, und die Forschung ist sich da häufig nicht mal einig.
Und Gleichungen symbolisch lösen ist selbst für eine Person nicht trivial (was meinst Du warum so viele Leute in Mathe Schwierigkeiten haben), warum sollte also der Computeralgorithmus dafür einfach sein? (kleiner Hinweis: es gibt nicht mal für alle Gleichungen eine algebraische Lösung, woher weiß ich dass es eine gibt und mein Algorithmus nicht einfach zu dumm ist?)
Wenn Du wirklich die Theorie hinter der Anwendung von numerischer Mathematik hier kennen würdest, so würdest Du ihm nicht empfehlen es selbst zu schreiben... Genauso wie ich es in diesem ganzen Thread schon getan habe.
--- Heiko.
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Oh mann ...
1. Wo wurde hier gefragt, wie man Gleichungen _symbolisch_ löst? Kann ich nicht finden.
2. Was hat Deine Abhandlung mit meiner Frage zu tun? Klar gibt es andere Verfahren als das Newtonsche (ja, ich kenn auch andere, toll ...), aber was spricht bitte dagegen, ein Beispiel ZUR ÜBUNG mit Newton zu programmieren.
Ein Hinweis auf CAS ist ja nützlich, dagegen sag ich auch nichts. Aber so nach dem Motto "wozu machst Du das, es gibt schon was Gscheiteres" ist doch komisch, oder? Nicht mehr und nicht weniger hab ich gemeint.
1. Wo wurde hier gefragt, wie man Gleichungen _symbolisch_ löst? Kann ich nicht finden.
2. Was hat Deine Abhandlung mit meiner Frage zu tun? Klar gibt es andere Verfahren als das Newtonsche (ja, ich kenn auch andere, toll ...), aber was spricht bitte dagegen, ein Beispiel ZUR ÜBUNG mit Newton zu programmieren.
Ein Hinweis auf CAS ist ja nützlich, dagegen sag ich auch nichts. Aber so nach dem Motto "wozu machst Du das, es gibt schon was Gscheiteres" ist doch komisch, oder? Nicht mehr und nicht weniger hab ich gemeint.
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
1. Im Original Post:
2. Es ist richtig dass das newtonsche Verfahren mal eben zur Übung zu programmieren kein Problem ist. Deswegen hat jemand anderes auch einen link auf das Verfahren gepostet.
Nur: der Thread wuchs danach immer weiter und weiter, und führte auch zu so "absurditäten" wie string-manipulation in der Gleichung um linker von rechter Seite abzuziehen um etwas =0 setzen zu können, o.Ä. Das ist sicherlich in kleinem Maßstab in Ordnung, aber ohne dass der OP sein Funktionsgebiet eingrenzt (einfache Funktionen mit einer Variablen können extrem viele sein, zum Beispiel auch hyperbolische, trigonometrische, etc.) ist es nicht ersichtlich dass das newtonsche Verfahren für ihn das beste, wenn überhaupt ein sinnvolles ist. Zum Beispiel kann es sein dass er mit dem Intervallhalbierungsverfahren bei einer Funktion ein sehr viel besseres Ergebnis erziehlt, bei einer anderen aber ein extrem viel schlechteres, die Folge also langsamer konvergiert. Wann ist es sinnvoll noch ein anderes Verfahren anzuwenden?
Willst Du das alles erklären? Ich nicht. Deswegen mein konsequenter Hinweis darauf dass es Leute gibt die das schon für einen gemacht haben, und die sicherlich mehr Ahnung haben als ich und die meißten hier zusammengenommen, und die das dementsprechend richtig machen und zwar so dass ich nur noch die Gleichung eingebe und er mir ein Ergebnis ausspuckt. Ein Hinweis auf Newton reicht deswegen meines Erachtens. Danach sollte man ihm nur sagen: nutz 'ne CAS.
--- Heiko.
Sieht für mich ganz danach aus dass es um symbolische Manipulation einer Gleichung ging, nicht ums näherungsweise finden einer Nullstelle, was spätestens dann daraus wurde als jemand das newtonsche Verfahren vorgeschlagen hat. Deswegen auch mein Hinweis darauf dass es alles andere als trivial ist eine Gleichung symbolisch zu lösen, erst recht mit dem Computer.Ich suche einen Code, mit dem man einfache Gleichungen mit einer Variablen lösen kann.
z.B. x+13=97
x=84
2. Es ist richtig dass das newtonsche Verfahren mal eben zur Übung zu programmieren kein Problem ist. Deswegen hat jemand anderes auch einen link auf das Verfahren gepostet.
Nur: der Thread wuchs danach immer weiter und weiter, und führte auch zu so "absurditäten" wie string-manipulation in der Gleichung um linker von rechter Seite abzuziehen um etwas =0 setzen zu können, o.Ä. Das ist sicherlich in kleinem Maßstab in Ordnung, aber ohne dass der OP sein Funktionsgebiet eingrenzt (einfache Funktionen mit einer Variablen können extrem viele sein, zum Beispiel auch hyperbolische, trigonometrische, etc.) ist es nicht ersichtlich dass das newtonsche Verfahren für ihn das beste, wenn überhaupt ein sinnvolles ist. Zum Beispiel kann es sein dass er mit dem Intervallhalbierungsverfahren bei einer Funktion ein sehr viel besseres Ergebnis erziehlt, bei einer anderen aber ein extrem viel schlechteres, die Folge also langsamer konvergiert. Wann ist es sinnvoll noch ein anderes Verfahren anzuwenden?
Willst Du das alles erklären? Ich nicht. Deswegen mein konsequenter Hinweis darauf dass es Leute gibt die das schon für einen gemacht haben, und die sicherlich mehr Ahnung haben als ich und die meißten hier zusammengenommen, und die das dementsprechend richtig machen und zwar so dass ich nur noch die Gleichung eingebe und er mir ein Ergebnis ausspuckt. Ein Hinweis auf Newton reicht deswegen meines Erachtens. Danach sollte man ihm nur sagen: nutz 'ne CAS.
--- Heiko.
Zuletzt geändert von modelnine am Samstag 21. Januar 2006, 17:51, insgesamt 2-mal geändert.
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Du hast mit Deinen Bedenken natürlich Recht. Was mich nur gestört hat war ganz einfach, dass mit Sprüchen wie "machs nicht" (vom Sinn her
) die Freude am Programmieren verdorben wird (jedenfalls wäre es bei mir so). Ein Hinweis was alles schiefgehen kann ist nützlich, keine Frage. Was er dann damit macht ist seine Sache (sollte jedenfalls so sein).
So schlecht finde ich die Methode zum Nullsetzten übrigens nicht
Naja, egal. Schwamm drüber. uruk-kai hat jetzt einige Meinungen gehört, jetzt ist er wieder dran

So schlecht finde ich die Methode zum Nullsetzten übrigens nicht

Naja, egal. Schwamm drüber. uruk-kai hat jetzt einige Meinungen gehört, jetzt ist er wieder dran
