Mathematik mit VBA - Teil 2: komplexe Zahlen und Nullstellen ganzrationaler Funktionen

    • VBA: Sonstige

    Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

      Hallo Roddy

      Ersteinmal vielen Dank für deinen umfassenden Code. Leider ist dein Beitrag von 2008, aber ich versuch mich trotzdem mal in der Hoffnung dass es dich noch gibt :)

      Ich würde gerne deinen Code übernehmen, bin aber leider auf ein Problem gestoßen. Für Polynomfunktionen mit x^7 bzw. x^6 kommt leider der Fehler "Nicht genügend Stapelspeicher". Offentsichtlich werden hier zu viele Funktionen hintereinander (geschachtelt) aufgerufen, womit Excel dann nicht mehr klar kommt. Daher die Frage, kennst du das Problem? Hast du möglicherweise sogar eine Lösung dafür?

      Ich würde mich sehr freuen wenn ich noch was von dir höre...

      Besten Dank

      cratchgisi
      Roddy:
      Letzte Aktivität Dienstag, 17. Mai 2011, 19:12

      Dürftest da wohl nicht viel Glück haben. Was versuchst du denn zu berechnen? Bei welcher Methode kommt die Fehlermeldung? Vermtulich darf man das ganze nicht rekursiv berechnen sondern iterativ.
      Das ist meine Signatur und sie wird wunderbar sein!
      Hi,

      ja, schein ich wohl nicht wirklich Glück zu haben...

      ich versuche eigentlich, aus Messdaten Kurven anzufitten, sprich Polynomfunktionen bis 7ter Ordnung. Jetzt weisen einigen Kurven nen Minumum bzw. nen Maximum auf auf einem Teilgebiet, da wollt ich dann aus den parametrisierten Kurven die zugehörigen x-y- Werte auslesen. Da die Messkurve wenig Stützstellen hat, würde eine einfache Interpolation mit hier nicht wirklcih was genaues liefern.
      Das Programm von Roddy leistet genau das, jedoch klappt es aber nur bis ca. x^5, wenn ich aber was wie ax^7+bx^6+cx^5+dx^4+ex^3+fx^2+gx+h habe, dann steigt Excel aus. Die Fehlermeldung kommt original bei der Function

      Visual Basic-Quellcode

      1. Function Winkel2pi(Winkel As Double) As Double
      2. 'Sorgt dafür, dass "Winkel" im Bereich 0 <= Winkel < 2pi ist.
      3. 'Winkel2pi = (Winkel / (2 * pi) - Int(Winkel / (2 * pi))) * (2 * pi)
      4. Winkel2pi = (Winkel / (2 * 4 * Atn(1)) - Int(Winkel / (2 * 4 * Atn(1)))) * (2 * 4 * Atn(1))
      5. End Function


      Hier habe ich schon versucht das verschachtelte Aufrufen von Funktionen zu reduzieren (siehe den auskommentierten Text). Dies klappt dann auch, jedoch kommt dann sehr bald an anderer Stelle die gleiche Fehlermeldung. Offensichtlich sind es einfach zu viele verschachtelte Funktionsaufrufe, was dann zu viel ist für VBA. Jetzt denke ich ist es nicht besonderes klug, wenn ich überall durch den Code gehe und versuche die Verschachtelungen zu reduzieren... oder doch? Sonst einer ne Idee?

      Ich freu mich über jegliche Hilfe, auch andere Lösungsvorschläge sind natürlich herzlich willkommen (Z.B. mit Hand ableiten, und dann die Nullstellen per Iteration suchen. Hat einer so eine Lösung schon? Gleiches würde übrigens auch für die Integration gelten, auch hier wäre ich an Integralwerten unter Teilbereichen interessiert).

      Besten Dank !!

      Visual Basic-Quellcode

      1. ​Jetzt denke ich ist es nicht besonderes klug, wenn ich überall durch den Code gehe und versuche die Verschachtelungen zu reduzieren... oder doch? Sonst einer ne Idee?


      vermutlich doch
      Das ist meine Signatur und sie wird wunderbar sein!