substituierte (partielle) Ableitungen

minzee

Bekanntes Mitglied
Hi :)

Ich habe eine mathematische Formel. Diese Formel wird mittels Substitution abgeleitet. Für jede Substitution würde ich gerne eine eigene Klasse anlegen. Wie würdet ihr so etwas programmieren? Ich habe zwar schon eine Lösung gefunden, nur gefällt mir die irgendwie nicht.

Hier mal ein Beispiel:

y = sin(cos(sqrt(x)))

Substitution:

v = sqrt(x)
u = cos(v)
y = sin(u)

Ableitungen:

dy/dx = dy/du * du/dv * dv/x

dv/dx = 1/(2 * sqrt(x))
du/dv = -sin(v)
dy/du = cos(u)

Resubstituiert:

dy/dx = cos(u) * (-sin(v)) * 1/(2 * sqrt(x))
dy/dx = cos(cos(v)) * (-sin(sqrt(x)) * 1/(2 * sqrt(x))
dy/dx = cos(cos(sqrt(x))) * (-sin(sqrt(x)) * 1/(2 * sqrt(x))

Je Substitution soll es eine eigene Klasse geben. Also z. B. so irgendwie:
Java:
class V
{
   double get()
   {
      return sqrt(x);
   }
   double getDerivative()
   {
      return 1 / (2 * sqrt(x));
   }
}
class U
{
   double get()
   {
      return Math.cos(v);
   }
   double getDerivative()
   {
      return -Math.sin(v);
   }
}
class Y
{
   double get()
   {
      return Math.sin(u);
   }
   double getDerivative()
   {
      return Math.cos(u);
   }
}
Und hier sieht man schon das Problem. Es gibt noch Abhängigkeiten. Z. B. in der Klasse Y muss man noch irgendwie angeben, wie man an das u rankommt.

Jetzt könnte man dieses u natürlich im Konstruktor der Klasse Y übergeben. Aber das würde ich gerne vermeiden. Der Programmierer, der dann mit diesen Klassen arbeitet, sollte sich keine Gedanken mehr darüber machen müssen, welche Substitution wovon abhängig ist. Diese Abhängigkeiten sollten irgendwie automatisch im Hintergrund aufgelöst werden.

Wie würdet denn ihr so etwas machen?

Erschwerend kommen übrigens folgende Punkte hinzu:

- Es soll auch möglich sein, dass gewisse Substitutionen partiell ableiten.

- Die Klassen gibt es, weil man die Formeln beliebig zusammensetzen können soll. Aus diesen hier definierten Klassen soll man dann auch z. B. folgende Formel bilden können: y = sin(sqrt(x))
 
Zuletzt bearbeitet:

Neue Themen


Oben