Automatische/Numerische Ableitung bestimmen.

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
BerndNeumann
User
Beiträge: 3
Registriert: Donnerstag 26. November 2020, 08:21

Hallo zusammen,

ich bin relativer Neulingion Python, jedoch im Rahmen eines Projekts direkt schon auf ein Problem gestoßen.
Ich möchte mittels einer function (def) einer Variablen die partielle Ableitung einer Funktion f(x) nach einer weiteren Variablen zuweisen.
Hier interessiert mich nur das numerische Ergebnis. Symbolisch Ableiten ist nicht gewünscht.

In der uncertainties Bibliothek habe ich bereits das gefuden, wonach ich suche, bis auf eine kleine Ausnahme.
Die Variablen der Funktion f(x) müssen als Wert + Unsicherheitsbetrag definiert werden (ufloat).
Hier der Code:

Code: Alles auswählen

import uncertainties
from uncertainties import ufloat 

u=ufloat(1,0.1)
v=ufloat(10,0.1)

function=3*u*2*v
a=function.derivatives[u]
b=function.derivatives[v]

print(a)
print(b)

Gibt es eine Möglichkeit so partiell Abzuleiten, ohne die Variable als "ufloat" zu definieren, also nur als int oder float. Einen Blick in den Code der Bibliothek uncertainties hat leider nichts gebracht, da meine Erfahrung zu gering ist, um zu analysieren, was ich ändern sollte.

Hat jemand einen Ansatz oder kann mir eine Bibliothek zum automatischen, numerischen Ableiten empfehlen?


Viele Grüße
Benutzeravatar
DeaD_EyE
User
Beiträge: 1239
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Ich glaube, die Frage hast du auch bei python-forum.io gestellt.
Zumindest lese ich zum zweiten Mal etwas über dieses Modul uncertainties.
Gibt es eine Möglichkeit so partiell Abzuleiten, ohne die Variable als "ufloat" zu definieren, also nur als int oder float.
Nein, das geht nicht, da es eigene Datentypen sind, die zusätzliche Methoden anbieten.
Nachdem du die Objekte erstellst hast, kannst du doch mit ihnen rechnen.
Da der Datentyp auch alle Operatoren unterstützt, kannst du mit ihnen arbeiten, als wenn es floats oder ints wären.

Das ist so ähnlich wie bei decimal.Decimal.
Naja, noch ein cooles Paket, falls du auf Einheiten stehst: https://pint.readthedocs.io/en/stable/

Das ist so ähnlich wie uncertainties, nur mit Einheiten.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum willst du auf ufloat verzichten? Dessen Hauptaufgabe besteht darin, API zur Definition der abzuleitenden Funktion zu sein. Also das du sie so kompakt hinschreiben kannst. Das Erlauben die normalen floats nun mal nicht.
Antworten