PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ableitung in Java?


Frank86de
15.02.2004, 00:17
Also, ich muss gerade in Mathe meine Facharbeit schreiben. (Nullstellen finden per verschiedenen Verfahren). Nun hat ich gedacht für das NewtonVerfahren ein kleines Proggie zu konstruieren.
Mein Problem:
a) Ich beschäftige mich erst seit kurzem mit Java. (da kann mir keiner helfen :D )
b) Kann ich in Java irgentwie ne Ableitung einer Funktion erstellen, oder muss man da selber etwas schreiben? Ich kann mir zwar vorstellen, dass man Funktionen á la "f(x)=ax^3+bx^2+cx+d" vorgeben kann, so dass man nur noch a,b,c,d eingeben muss., und somit eigermßen leicht ableiten kann. Aber es sollen auch gebrochen rationale Funktionen, Expotential und (vielleicht sinus-, oder Log- Funktionen funktionieren).

Ich will nur wissen, ob es im Bereich des Möglichen (wenigens für eine beliebige Quadratische Funktion) folgendes Programm zu schreiben:

xn+1=xn-f(xn)/f '(xn)
Und es soll möglich sein, einzustellen wie oft er diese "Schleife" durchläuft.

upsidedown
15.02.2004, 00:35
Bei Polynomen ist das Problem doch trivial - für beliebige Funktionen: vergiss es ;)

Wenn du numerisch ableiten willst - es sei auf die numerical recipes verwiesen:
http://www.studenten-city.de/forum/showthread.php?t=21781
Auch sehr interessant:
http://www.siam.org/books/kelley/kellcode.htm
Für jede Form von Numerik würde ich dir eh MatLAB wärmstens an Herz legen :yes:

In den n-r findest auch diverses material, dass du wunderbar in deine FA einbauen kannst - mit Sicherheit lohnend die Lektüre.

Eine Funktion die sehr allgemein in der Lage ist Funktionen abzuleiten ist mit Sicherheit weit jenseits einer Facharbeit. Wird auch wirklich nicht verwendet für solche Probleme: Entweder man liefert die Ableitungsfunktion mit (kann man ja mitunter) oder man berechnet die Ableitung numerisch. Damit kommt in entweder in die sog. inexakten Newtonverfahren oder man geht gleich die Klasse der Broyden-Verfahren über. Die letzteren reduzieren sich im 1-D Fall zum sog. Sekantenverfahren, im mehrdimensionalen hat man allerdings ein paar Freiheiten mehr.

Zu deinem letzten Satz: Man gibt normalerweise nicht vor, wieviele Iterationen man durchlaufen will, sondern welchen relativen Fehler man unterschreiten will und nach wievielen der Algorithmus abbrechen soll wenn das (noch?) nicht erreicht ist. Wie man das programmiert findest du in den matlabcodes diverse Beispiele.