Wie finde ich eine Ableitung einer Funktion mit c?

8

Ist es möglich, mit c Programm eine Ableitung einer Funktion zu finden? Ich benutze Matlab, indem es eine eingebaute Funktion diff () hat, die benutzt werden kann, um eine Ableitung einer Funktion zu finden.

%Vor%

Ist es möglich, die Ableitung der obigen Funktion mit c zu finden? Was ist der Algorithmus dafür?

    
Eka 16.10.2012, 13:01
quelle

5 Antworten

13

Ja, das ist durchaus möglich. Die Lösung hängt jedoch von Ihren Anforderungen ab. Wenn Sie eine einfache numerische Lösung benötigen, ist Folgendes möglich (bis zu einem gewissen Grad mit einigen Einschränkungen - naive Implementierung):

%Vor%

Für komplexere numerische Berechnungen können Sie die GNU Scientific Library

Wenn Sie jedoch die Formel der Ableitung einer gegebenen Funktion ana- lytisch finden müssen, müssen Sie:

  1. Analysieren Sie die Eingabeformel zu einem abstrakten Datentyp, z. B. einem AST;
  2. Ableiten Sie es mit den Identitäten und Regeln der Ableitung (es gibt nur ein paar von ihnen, dieser Teil sollte der einfachste sein),
  3. Serialisieren Sie den abstrakten Datentyp, den Sie als Ergebnis des Ableitungsprozesses erhalten haben, zu einem String und geben Sie diesen als Ergebnis aus.

Allerdings müssen Sie das alles nicht tun; Es gibt großartige C-mathematische Bibliotheken, die solche Funktionalität bieten.

Edit: Nach einigem Googeln konnte ich keinen finden. Die beste Lösung, um loslegen zu können, ist der GeoGebra-Quellcode - obwohl es in Java geschrieben ist, ist es ziemlich fair leicht zu lesen für jemanden, der in einer C-ähnlichen Sprache fließend genug ist. Wenn nicht, dann fahren Sie fort und implementieren Sie diesen Algorithmus selbst:)

    
user529758 16.10.2012, 13:11
quelle
2

In der C-Sprache ist nichts eingebaut, um dies zu ermöglichen. Sie können vielleicht eine numerische Bibliothek finden, um es zu tun, wenn Sie online suchen, obwohl ich bezweifle, dass es irgendetwas gibt, das symbolische Ableitungen zur Verfügung stellt. Sie könnten sich vorstellen, ungefähre numerische Ableitungen selbst zu verwenden, indem Sie Vorwärts-, Rückwärts- und / oder Zentralunterschiede verwenden.

    
mathematician1975 16.10.2012 13:02
quelle
2

Für einfache Funktionen funktioniert die folgende numerische Unterscheidung sehr gut:

%Vor%     
coproc 16.10.2012 13:14
quelle
1

Ich weiß, dass ich zu spät bin, aber ich habe eine Bibliothek geschrieben, die genau das tut.

Erlaubt es, die Funktion zu analysieren und einen Funktionsbaum zu erzeugen. Dann kannst du es sogar lösen oder ableiten.

Sie können es bei finden. Ссылка

    
B3rn475 05.06.2014 20:10
quelle
0

In C können Sie eine grobe numerische Differenzierung relativ einfach durchführen, aber jede Art von symbolischer Differenzierung erfordert ein Framework von Drittanbietern oder das Rollen Ihrer eigenen.

C ist eine Allzweck- und Low-Level-Programmiersprache, im Gegensatz zu Matlab, das auf mathematische Berechnungen spezialisiert ist und erweiterte Werkzeuge für symbolische Berechnungen bietet.

    
Dmytro Sirenko 16.10.2012 13:12
quelle

Tags und Links