Thema Datum  Von Nutzer Rating
Antwort
Rot Integralauswertung mit Trapezverfahren
31.01.2021 17:12:18 floppydisc
NotSolved
04.02.2021 12:18:28 Gast89766
NotSolved

Ansicht des Beitrags:
Von:
floppydisc
Datum:
31.01.2021 17:12:18
Views:
381
Rating: Antwort:
  Ja
Thema:
Integralauswertung mit Trapezverfahren

Sehr geehrte Community,

ich bin neu hier und blutiger Anfänger in Excel VBA, weshalb ich für jeden Rat dankbar bin. Zur Lösung von Integralen mittels Trapezregel möchte ich das unten stehende Programm verwenden. Nach Durchlaufen aller Schleifen soll mir zu Ende angegeben werden, wie viele Iterationen durchgeführt wurden. Das Programm soll dabei folgendermaßen funktionieren: 

- Der Benutzer muss zuerst die obere und die untere Integralgrenze sowie die erforderliche Genauigkeitsschranke eingeben.

- im ersten Schritt steht die Berechnung eines Trapezintegrals als solches 

- der erste Teil der Schleife berechnet zu dem iterierten X- Wert den zugehörigen Y- Wert, solange die t1 größer ist als epsilon. Im zweiten Teil der Schleife wird dann die Schrittweite halbiert.

Gerne würde ich die X- Werte und die Y- Werte in einem Array mit 5 Werten speichern. Könnt ihr mir sagen, wie ich das Array deklarieren muss?  Auch bei dem untenstehenden Code bin ich mir nicht sicher, ob Fehler vorhanden sind. 

Option Explicit

Function Trapez_mit_Abbruchkriterium(a As Double, b As Double, eps As Double) As Double         ' a und b bilden die Intervallgrenzen; eps gibt die Genauigkeit an

    Dim i As Integer, h As Double, n As Integer, t1 As Double, t0 As Double, Dim f() As Variant, Dim x() As Variant, Dim Y() As Variant, counter As Integer

     ' i die Laufzahl der Teilintervalle; h die Streifenbreite; n die Anzahl der Teilintervalle

x [0] = a                                                                                      

      ' In x(n) stehen die Stützstellen, in Y(n) die zugehörigen Stützwerte

x [1] = b

Y [0] = f(a)

Y [1] = f(b)

 

n = 1                                                                                            ' Zählvariable initialisieren

 

h = (b - a)                                                                                      ' Streifenbreite (über das ganze Intervall)

t1 = h * (Y(0) + Y(1)) / 2                                                             ' Berechnung eines Trapezes

 

' Starten der Iteration: in t0 und t1 stehen die berechneten Trapezsummen zu t0 und t1

Do While Abs(t1 - t0) > eps

    counter = 0

    t0 = t1

        For i = n To 1 Step 1

        x[2 * i] = x[i]

        x[2 * i - 1] = (x[i] + x[i - 1]) / 2

        Y[2 * i] = Y[i]

        Y[2 * i - 1] = f(x[2 * i - 1])

' Halbieren der Schrittweite

    n = 2 * n

    h = h / 2

 

    t1 = 0

        For i = 1 To n - 1 Step 1

        t1 = t1 + Y[i]

    counter = counter + 1

Loop

MsgBox "Die Schleife wurde " & counter & " mal durchlaufen."

End Function

Function h(x) As Double

'Hierhin schreibt man die Funktion, für die das bestimmte Integral berechnet werden soll.

h = (x * x) * Exp(-x)

End Function

Sub test()

 

End Sub

 

Vielen Dank schon im Voraus!!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Integralauswertung mit Trapezverfahren
31.01.2021 17:12:18 floppydisc
NotSolved
04.02.2021 12:18:28 Gast89766
NotSolved