Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Iteration mit VBA über Newton Verfahren

Forumthread: Iteration mit VBA über Newton Verfahren

Iteration mit VBA über Newton Verfahren
15.03.2009 10:32:00
AS
Guten Tag, ich bin ziemlicher Neuling was VBA angeht (2 Wochen) , und habe eine Frage:
Ich habe folgende Werte x,A,B,C und p0 ( ist const) und möchte iterativ die Temperatur T bestimmen in folgender Funktion f(T):
http://img79.imageshack.us/img79/3463/formel.jpg
http://img262.imageshack.us/my.php?image=tabelle.jpg
wenn ich alles schön einzeln deklariere funktioniert mein Code wunderbar,
nun möchte ich aber mit einer For-Schleife mir die Arbeit ersparen.
Leider funktioniert der Code so, wie ich es mir gedacht habe nicht.
Hier der Code:

Private Sub Test()
Dim x As Variant
Dim A As Variant
Dim B As Variant
Dim C As Variant
Dim i As Integer
Dim fT(1 To 1, 1 To 5) As Double
Dim dfT(1 To 1, 1 To 5) As Double
Dim p0 As Variant
x = Sheets("Tabelle1").Range("B5:B9")
A = Sheets("Tabelle1").Range("C5:C9")
B = Sheets("Tabelle1").Range("D5:D9")
C = Sheets("Tabelle1").Range("E5:E9")
p0 = Sheets("Tabelle1").Range("H5")
e = 2.718281828459
'Startwert T
T = 273.15
Do
For i = 1 To 5
fT(1, i) = fT(1, i) + x(i, 1) * e ^ (A(i, 1) - (B(i, 1)) / (T + C(i, 1))) - p0
'Abbruchbedingung
If Abs(fT(1, i)) 


Wäre über jede Hilfe dankbar !

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hinweis, keine Lösung
15.03.2009 10:40:23
Josef
Hallo ? (realnames werden hier bevorzugt)
schöne Bildchen, aber eine Beispieltabelle wäre sicher Hilfreicher. https://www.herber.de/forum/file_upload.html
Gruß Sepp

Anzeige
AW: Iteration mit VBA über Newton Verfahren
15.03.2009 12:00:46
Gerd
Hallo AS,
die Variablen T und e sind nicht deklariert.
Einschätzung:
Die Abbruchbedingung
If Abs(fT(1, i)) < 0.000001 Then Exit Do
tritt bei deinem Code nicht ein. Es fehlt wohl eine Vorkehrung, dass Abs(fT(1, i)) jeweils gegen Null geht.
Somit erzeugt die äußere Do - Loop eine Endlosschleife.
Da mir aber kein Apfel auf den Kopf gefallen ist, musst Du oder ein anderer Mathematiker diese
Iteration noch einbauen :-)
Trotzdem, für zwei Wochen ist dein Ansatz nicht schlecht.
Ergänzend: Evtl. gehört die Do-Loop nach innen?
Und ob ein einzelner Wert oder eine Wertematrix pro i am Schluss herauskommen soll, weis ich natürlich
ebenfalls nicht.
Gruß Gerd
Anzeige
AW: Iteration mit VBA über Newton Verfahren
15.03.2009 18:12:46
AS
Danke für eure Antworten!
Die Gleichung ist so aufgebaut wie in Bild 1 zu sehen , d.h. für i=4 hab ich ne Summe, aber T ist immer dieselbe Variable f(T) halt ne normale Fkt. mit einer variable.
Userbild
hier die Tabelle:
https://www.herber.de/bbs/user/60337.xls
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Iteration mit VBA über das Newton Verfahren


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)", wähle "Einfügen" und dann "Modul".

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Private Sub Test()
       Dim x As Variant
       Dim A As Variant
       Dim B As Variant
       Dim C As Variant
       Dim i As Integer
       Dim fT(1 To 1, 1 To 5) As Double
       Dim dfT(1 To 1, 1 To 5) As Double
       Dim p0 As Variant
       Dim T As Double
       Dim e As Double
    
       x = Sheets("Tabelle1").Range("B5:B9")
       A = Sheets("Tabelle1").Range("C5:C9")
       B = Sheets("Tabelle1").Range("D5:D9")
       C = Sheets("Tabelle1").Range("E5:E9")
       p0 = Sheets("Tabelle1").Range("H5")
       e = 2.718281828459
       T = 273.15
    
       Do
           For i = 1 To 5
               fT(1, i) = x(i, 1) * e ^ (A(i, 1) - (B(i, 1)) / (T + C(i, 1))) - p0
               'Abbruchbedingung
               If Abs(fT(1, i)) < 0.000001 Then Exit Do
           Next i
           'Hier könnte der Code zur Aktualisierung von T stehen
       Loop
    End Sub
  4. Anpassungen vornehmen: Stelle sicher, dass die Daten in "Tabelle1" entsprechend deiner Excel-Datei angeordnet sind.

  5. Makro ausführen: Gehe zurück zu Excel, drücke ALT + F8, wähle Test und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Unzureichend deklarierte Variablen: Stelle sicher, dass alle Variablen, wie T und e, korrekt deklariert sind. Fehlende Deklarationen können den Code zum Absturz bringen.

  • Endlosschleife: Wenn die Abbruchbedingung If Abs(fT(1, i)) < 0.000001 nie erfüllt wird, kann dies zu einer Endlosschleife führen. Überprüfe die Eingabewerte und die Logik des Codes.

  • Falsche Datenbereiche: Achte darauf, dass die Bereiche in Range korrekt definiert sind. Andernfalls erhältst du möglicherweise unerwartete Ergebnisse.


Alternative Methoden

Eine alternative Methode zur Implementierung des Newton Verfahrens in Excel besteht darin, die Zielwertsuche zu verwenden:

  1. Zellen auswählen: Wähle die Zelle aus, deren Wert du ändern möchtest.
  2. Zielwertsuche: Gehe zu Daten > Was-wäre-wenn-Analyse > Zielwertsuche.
  3. Parameter einstellen: Setze die Zelle, die du ändern möchtest, auf den gewünschten Wert und definiere die Zielzelle, die das Ergebnis liefert.

Praktische Beispiele

Nehmen wir an, du arbeitest mit folgenden Werten:

  • x: 1, 2, 3, 4, 5
  • A: 1.5, 2.5, 3.5, 4.5, 5.5
  • B: 0.5, 1.5, 2.5, 3.5, 4.5
  • C: 0, 1, 2, 3, 4
  • p0: 10

Das Beispiel zeigt, wie du mithilfe der VBA-Iteration die Temperatur T für verschiedene Werte berechnen kannst. Achte darauf, dass die Tabelle in Excel korrekt formatiert ist.


Tipps für Profis

  • Debugging: Nutze die Debug.Print Funktion, um den Wert von Variablen während der Iteration zu überwachen. Dies hilft dir, den Verlauf der Berechnungen nachzuvollziehen.

  • Optimierung: Überlege, ob du die Berechnungen in einer separaten Funktion auslagern kannst, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern.

  • Mehrdimensionale Arrays: Wenn du mit mehrdimensionalen Daten arbeitest, sei dir der Struktur deines Arrays bewusst, um Fehler zu minimieren.


FAQ: Häufige Fragen

1. Wie kann ich die Iteration anpassen, wenn ich mehr Werte habe? Du kannst die Schleifen und Bereiche im Code einfach erweitern, indem du die Grenzen in den For-Schleifen anpasst.

2. Welche Excel-Version benötige ich für die Nutzung von VBA? VBA ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Excel für Microsoft 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige