Funktion ableiten

Hat irgendwer hier schonmal versucht ne Ableitungsfunktion um Funktionen abzuleiten (:D) geschrieben oder schon einmal gesehen, in welchem Verfahren man da rangeht?
.....Oder muss ich die Theorie selber from scratch entwickeln?
 
f(x)=x^n /Ausgangsfunktion

f'(x)=n*(x^(n-1)) /Abgeleitete Funktion

oder war was anderes gemeint?

COREY
 
hat bloß nich jede funktion die form x^n, gell ? ;-)

produkt / quotientenregel erkennen (+ beachten ^^), sinus/cosinus und solche späße..
geschrieben hab ich sowas nich, aber wenn du ein programm suchst, google mal danach.. http://www.calc101.com/ z.b. hört sich gut an..
ka, vielleicht auch maple..

man muss imho 2 dinge erreichen: struktur der funktion herausfinden + die grundlegenden ableitungsregeln anwenden. zweiteres ist nich das problem, die gängigen regeln (z.b. für x^n oder t ? |R) definierst du explizit und wendest sie dann entsprechend an.. aber die struktur..

ich bin jetz zu müde, um nachzudenken, aber vielleicht kriegt man ne ansprechende struktur, indem man die klammern durchzählt (+ positionsangaben bestimmt..) und dann die entsprechenden operatoren zuordnet..
 
Ich werde das programmieren auf ner shell-ebene. Ich fange morgen an nach dem ich meine letzte Klausur geschrieben habe an und poste hier meine fortschritte. Vielleicht kann man ja Fehler finden bzw. Ideen austauschen.
Also meine erste Idee ist erstmal:
Den String (Funktion) Char für Char durchgehen und checken:
wie oft bzw. ob nach einem x...* (mal) ein weiteres x auftaucht. Dann weiss man erstmal wie oft man produktregel/quotientenregel anwenden muss.
Dann die Funktion in zwei Strings aufteilen und durcharbeiten.
 
Ahhh, ein "Bauchprogrammierer" ;)
Je komplexer die Aufgabestellung wird, desto sinnvoller ist es, konzeptionell vorzugehen.
Aber die Erfahrung muss wohl jeder selber machen ... ich auch :(

Bin gespannt auf Deine Ergebnisse :D
Viel Erfolg *ehrlich*
 
Als Tipp, google dich mal schlau über numerische Verfahren zur Approximation von Ableitungen... da gibt es einiges an Algorithmen mit denen man die Ableitung sehr genau + ein kleiner Fehler berechnen kann (der Fehler ist meist in der Region 10^-große Zahl.. also zu vernachlässig in den meisten Fällen)

Ein einfaches Verfahren, haben wir selbst schon mal in Haskell implementieren müssen :(, ist zb bis zu einem bestimmten Wert die Formale Definition von Ableitung nachzurechnen, siehe:

http://de.wikipedia.org/wiki/Differ..._einem_Punkt:_Formale_Definition_und_Notation

Damit kann man sich dann zb Punkt für Punkt die Funktionswerte der Ableitung errechnen.

Was bringt das? Nun, man abstrahiert vollkommen von der gegebenen Funktion, man muss sie nur ausrechnen können. Es ist also egal ob da ein cos, e^x oder was auch immer steht, man muss sich nicht überlegen welche Regel zu Anwendung kommt, kaum was parsen etc..
 
re

Hi zusammen!
@hbier:
Ich will dich ja nicht entmutigen oder desillusionieren, aber die Idee ist völlig illusorisch. Ich habe selbst mal versucht, eine Ableitungsfunktion zu programmieren, als ich folgendes Programm schrieb:
Function 2.0
(Zum testen empfohlen ;) )
Bei den bereits erwähnten x^n-Funktionen ist es natürlich einfach (siehe Coreys Beitrag), aber sobald ein Sinus auftaucht, wird es bereits problematischer. Wenn du jetzt aber einen Quotienten aus einem Polynom und dem Arcustangens einer log-Funktion hast (Ja ich weiß, ich könnte es vielleicht übertrieben haben ;) ) , dann hast du ein Problem.
Also: Versuche dich daran, aber - ehrlich gesagt - erwarte ich nicht, dass es dir gelingen wird.
Schönen Abend noch!
cu Gabriel
 
Wenn du jetzt aber einen Quotienten aus einem Polynom und dem Arcustangens einer log-Funktion hast (Ja ich weiß, ich könnte es vielleicht übertrieben haben ) , dann hast du ein Problem.

was nicht heißt, das es unmöglich ist.

ableiten folgt strengen mathematischen regeln, wieso sollte man das nicht programmieren können ?

bei deinem beispiel grade eben: 1.erkennung: quotientenregel. 2. "hinschreiben", also ( Z' * N - N' * Z ) / N? (oder wie auch immer das war *g*). Z, N lassen sich schonmal direkt einsetzen. die ableitung des polynoms (im zähler = Z) basiert auf den standard-ableitungsregeln, der tangens oder was auch immer genauso. das muss halt nur noch aufgelöst werden (auch hier gilt: nich alles auf einmal - bei komplizierten argumenten diese auch mal so stehen lassen und erst später betrachten; hier z.b. die allgemeine formel für die quotientenregel, danach erst die ableitungen bilden)

ber sobald ein Sinus auftaucht, wird es bereits problematischer.

warum ? die ableitung für den sinus ist der cosinus, also schreibt dein prog statt "sin()" eben "cos()".. wo ist das problem ?
 
re

Hi!
Erstes Problem: Du musst herausfinden, welchen Grades das Polynom ist und ob irgendein Glied "fehlt" (also mit 0 multipliziert wurde).
Auch die Quotientenregel anzuwenden wird nicht einfach.
Allerding sage auch ich nicht, dass es unmöglich ist. (Bloß für den Normalsterblichen. ;)) Es kann ja gar nicht unmöglich sein, weil ja beispielsweise Maple auch derartige Funktionen zur Verfügung stellt. Aber ich wiederhole: Dann hat man ein Problem!
Ach ja:

Zitat:
ber sobald ein Sinus auftaucht, wird es bereits problematischer.


warum ? die ableitung für den sinus ist der cosinus, also schreibt dein prog statt "sin()" eben "cos()".. wo ist das problem ?
Jaja. Ist schon klar. Aber dann musst du erstmal durch irgendwelche Stringparsakrobatikstechniken herausgefunden haben, dass ein Sinus vorkommt, dann von was der Sinus genommen werden soll (ich meine, wenn da so ein Sinus in der Landschaft steht, weiß man noch nicht so genau, wovon man den Sinus nehmen soll). Aber wieder gilt: Nicht unmöglich.
Ich sage nur: Viel Spaß!
Einen schönen Abend noch.
cu Gabriel
 
Erstes Problem: Du musst herausfinden, welchen Grades das Polynom ist und ob irgendein Glied "fehlt" (also mit 0 multipliziert wurde).

warum ? ich weiß nimmer so ganz, polynome wurden bei uns in analysis I etwas unter den tisch gekehrt, aber wenn son teil die form ax^n + bx^(n-1) + ... yx + z hat, dann sollte das prog erkennen, dass es summanden sind, die man getrennt ableiten kann..
deswegen ja auch anfangs die idee mit dem "klammern durchzählen (erfassen usw.)". daran könnte man ne struktur der funktion erkennen, also obs ne summe ist oder n produkt aus 2 polynomen oder was weiß ich und diese dann nach priorität bearbeiten. das es einfach ist, hab ich auch niemals behauptet..

btw wie gesagt, meine idee: prioritätssystem mit klammern + operatoren erstellen. durchdenken erlaubt, ich hab wie immer keine zeit ;-)

Aber dann musst du erstmal durch irgendwelche Stringparsakrobatikstechniken herausgefunden haben, dass ein Sinus vorkommt

ne suche nach dem string "sin" is nich soo kompliziert, außerdem verstehe ich nicht, warum hier einige ne 3-zeilen-lösung wollen.. kompliziertere programme brauchen halt ein paar zeilen mehr.. (nich auf dich bezogen, gabriel3 !)
btw gibts für sowas wie substringsuche sicher schon snippets, im schlimmsten fall brute-forced man sich halt zeichen für zeichen durch (nein, ich behaupte nicht, das wäre elegant oder effizent, aber einfach zu programmieren *g*)

ich meine, wenn da so ein Sinus in der Landschaft steht, weiß man noch nicht so genau, wovon man den Sinus nehmen

bei einem sinus steht das argument im normalfall in klammern dahinter, oder was meinst du ? abgesehen davon, dass ich in der ableitungsfunktion nur "cos()" stehen haben will, der muss da nichmal irgendwas zusammensuchen, sondern das argument 1 zu 1 übernehmen..
zumindest kann man sich ja bei der benutzung des programms darauf einigen, das argument bei der eingabe in klammern zu setzen.

eine absolut korrekte klammerung ist dabei natürlich das A und O, da kann man nicht, wie in der schule gern gemacht, etwas schludrig sein..

man, wenn das hier so weitergeht, setzt ich mich echt noch davor, dann is ruhe hier *g*
 
Zurück
Oben