AW: Taylorreihe als Funktion
01.03.2021 23:09:45
Yal
Hallo Klaus,
sorry, aber ich stelle gerade fest, dass meine Formel falsch war:
Die Potenzen von y/b gehen mit den horizontale Parameter und
die Potenzen von x/a mit den vertikalen.
Und nicht umgekehrt.
(Falsche Version zum Abgleich auskommentiert)
Function Taylor(x, y, a, b) As Double
Dim z, s
Dim F As Double
For s = 1 To 9
For z = 1 To 9
'F = F + Cells(z, s) * (x / a) ^ (s - 1) * (y / b) ^ (z - 1)
F = F + Cells(z, s) * (x / a) ^ (z - 1) * (y / b) ^ (s - 1)
Next
Next
Taylor = F
End Function
Das bedeutet, dass die Monster-Formel mit 81 Einzel-Elemente auch falsch ist, weil ich diese als Referenz verwendet habe. Es macht wahrscheinlich in dem Diagram 3D-Oberfläche keine wesentliche Unterschiede, aber schicke kein Mensch Richtung damit. Es könnte schief gehen...
Ich habe versucht zu optimieren. Was bei Dir Mathe/Physik ist bei mir Algorythmik. Es bringt leider nicht viel mehr als 7%:
Function Taylor(x, y, Optional a As Double = 1, Optional b As Double = 1) As Double
'Version 3
Dim z, s
Dim F As Double
Dim x1 As Double
Dim y1 As Double
x1 = 1
For z = 1 To 9
y1 = 1
For s = 1 To 9
If Cells(z, s) 0 Then F = F + Cells(z, s) * x1 * y1
y1 = y1 * y / b
Next
x1 = x1 * x / a
Next
Taylor = F
End Function
Warum besser? Die Potenze werden nicht bei jeder Iteration neuberechnet, sondern nur je eine Multiplikation.
Zusätzlich gibt ein Test, ob Cells(z,s) 0, was einige nutzlose Berechnung sparen sollte. Bei 20*20*81 = 32.400 Berechnung nicht berauschend. Ich hatte vor kurzem mit einem ähnlichen Verfahren eine Verbesserung von Faktor 7200: von 2 Std in 1 Sek.
Na gut.
Deine xclacs-Registrierung scheint abgelaufen zu sein (13. Feb). Es könnte der grund sein, warum Änderungen abgelehnt werden. Es sind ja auch keine richtig relevante Info drin und Du hast mit Sicherheit nicht den PW verwendet, den Du überall verwendest...
Die Nullen müssen drin sein. Der Taylor-Formel macht ..*(xi)^i*(phi)^j für alle i und j von null bis 8. Die ungerade rauszunehmen, nur weil von Dir nicht verwendet, wäre umständlich und im Rechenzeit vielleicht am Ende langsammer. Und es wäre ja auch kein Taylor mehr.
VG
Yal