Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ableitung programmieren (https://www.delphipraxis.net/143944-ableitung-programmieren.html)

TM. 26. Nov 2009 14:29


Ableitung programmieren
 
Hallo,

habe vor einiger Zeit angefangen, ein Funktions-Programm zu schreiben.
Eingebaut habe ich mittlerweile einen Parser, graphische Darstellung mit möglicher Zoom- und Genauigkeitänderung plus "Markierung" eines bestimmten Punktes der Funktion.

Nun habe ich mich an die Ableitung gewagt, die für verschiedene nächste Schritte benötigt wird.
Dazu lese ich alle Werte der eingegebenen Funktion - durch Rechenzeichen etc. getrennt - aus, leite diese dann einzeln ab und setze sie wieder in die Funktion ein.
Bsp. f(x) = x²+22x+5
Werte: x^2; 22x; 5;
Ableitungen: 2x; 22; 0;
Eingesetzt: 2x+22+0

Allerdings kann ich so nur "einfache" Funktionen wie diese ableiten. Für verkettete Funktionen wie bspw. sin(x²) müsste ich dazu nun anders vorgehen; Ableitung hier wäre ja cos(x²) * 2x.

Welche Systematik kann ich hier anwenden? Genügt es, einfach den Inhalt einer Klammer getrennt zu behandeln? Würde das auch mit mehreren Verkettungen funktionieren?

Habe jetzt eine ganze Weile herumgesucht; allerdings nichts Brauchbares finden können.

Vielleicht hat jemand hier eine Idee.

TM.

alleinherrscher 26. Nov 2009 14:33

Re: Ableitung programmieren
 
Hi! Würde sagen, wenn du es analytisch rechnen willst, muss dein Programm die Ableitungen der Grundfunktionen kennen, also z.B:

sin(x)->cos(x)
cos(x)->-sin(x)
exp(x)->exp(x)

usw...


Dann wendest du die Kettenregel an, also dein Programm schaut sich erst den ausdruck in der klammer an, leitet den ab und multipliziert das ergebnis mit der ableitung der äußeren funktion.

Wenn dein Parser gut ist bzw. dein Programm die Definitionen von sin, cos, tan etc. über die exp funktion kennt, würde es theoretisch auch reichen, wenn du die ableitungsregeln für die exp funktion implementierst und dann aus dem ergebnis den sin, cos etc. "herraussuchst"...

TM. 26. Nov 2009 15:17

Re: Ableitung programmieren
 
Hallo,

habe deinen letzten Satz leider nicht ganz verstanden. Was meinst du mit dem heraussuchen nach dem Implementieren?

Danke für deine Antwort, ich versuche es jetzt einmal mit den Klammern als Kriterium.

TM.

alleinherrscher 26. Nov 2009 15:39

Re: Ableitung programmieren
 
Hey! :)

Also du kannst ja cos und sin über die komplexe Exponentialfunktion ausdrücken:

http://upload.wikimedia.org/math/7/1...ff68c330f4.png
http://upload.wikimedia.org/math/f/3...a3949e366c.png

D.h. wenn dein Programm die Ableitung der exponentialfunktion beherrscht, kannst du vor dem Ableiten die Sinus und Kosinus Funktion in Exponentialfunktionen umformen (mithilfe der zwei Gleichungen), dann ableiten und anschließend müsste dein Programm aus den Abgeleiteten Exponentialfunktionen dann wieder den Sinus bzw. Kosinus "erkennen"... also quasi das selbe, wie vor dem Ableiten, nur in umgekehrter Reihenfolge...

TM. 26. Nov 2009 16:39

Re: Ableitung programmieren
 
Hi,

danke für die Erklärung...
Im Moment hänge ich allerdings an anderen Probleme; da die Verkettungsfunktionen so vielfältig sein können, müsste ich erst eine Menge anderer Vorarbeit leisten... Mal sehen, ob ich so etwas überhaupt hinbekomme.

TM.

jfheins 26. Nov 2009 16:52

Re: Ableitung programmieren
 
Richtig.

Aber wie unser Mathelehrer sage: "Differenzieren ist Arbeit, Integrieren ist Kunst" ;)

Du kannst also zu der Funktion durch konsequenten Anwenden der 3 Regeln (Kettenregel, Produktregel, Quotientenregel) immer die Ableitung herausfinden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz