Iterationsverfahren

Neue Frage »

annnddddiiiii Auf diesen Beitrag antworten »
Iterationsverfahren
Meine Frage:
Hallo liebe Mathematiker,

ich habe folgendes Problem:

Ich habe mir ein Excel-Makro gebastelt welches ausgehend von einem Startwert über eine Spalte von 100 Zellen länge einen Ziewert am Ende dieser Spalte einiteriert. Ich habe mir dafür den am Ende eingefügten Algorithmus überlegt, der auch in den meisten Fällen sehr gut funktioniert. Manchmal konvergiert er jedoch nicht. Gibt es für solche Fälle ein sicheres nummerisches Verfahren. bzw einen Algorithmus, der immer funktioniert? Es sei vielleicht dazu gesagt dass die Startwerte teilweise extrem klein sind (z.B E-13).

Danke schon mal.
Gruß,Andi




Meine Ideen:
sllv = Aktueller Wert am Ende der Tabelle
sllvs = Zielwert
sl01 = startwert
i = 1
n = 1
Abweichung = Abs(sllv - sllvs)
a = sllv - sllvs


If a < 0 Then 'Iterationsangleichung für sl01 zu klein


Do While i < 100 And Abweichung > g 'Solange i<100 und Abweichung> Genauigkeit

Do While a < 0 And Abweichung > g And i < 100 'Solange sllv zu klein wird sl01 um sl01/n vergrößert

sl01 = sl01 + sl01 / n

i = i + 1 'Aktualisierung der Werte
ActiveSheet.Cells(4, 2).Value = sl01
sllv = ActiveSheet.Cells(104, 2).Value
a = sllv - sllvs
Abweichung = Abs(sllv - sllvs)

Loop


n = n * 10


Do While a > 0 And Abweichung > g And i < 100 'Solange sllv zu groß wird sl01 um sl01/n(verfeinert) verkleinert

sl01 = sl01 - sl01 / n

ActiveSheet.Cells(4, 2).Value = sl01 'Aktualisierung der Werte
sllv = ActiveSheet.Cells(104, 2).Value
a = sllv - sllvs
i = i + 1
Abweichung = Abs(sllv - sllvs)

Loop


n = n * 10 'Durchlauf der zwei Schleifen bis Genauigkeit erreicht oder i=100

Loop


Else


Do While i < 100 And Abweichung > g 'Solange i<100 und Abweichung> Genauigkeit

Do While a > 0 And Abweichung > g And i < 100 'Solange sllv zu groß wird sl01 um sl01/n verkleinert

sl01 = sl01 - sl01 / n

i = i + 1 'Aktualisierung der Werte
ActiveSheet.Cells(4, 2).Value = sl01
sllv = ActiveSheet.Cells(104, 2).Value
a = sllv - sllvs
Abweichung = Abs(sllv - sllvs)

Loop


n = n * 10


Do While a < 0 And Abweichung > g And i < 100 'Solange sllv zu klein wird sl01 um sl01/n(verfeinert) vergrößert

sl01 = sl01 + sl01 / n

ActiveSheet.Cells(4, 2).Value = sl01 'Aktualisierung der Werte
sllv = ActiveSheet.Cells(104, 2).Value
a = sllv - sllvs
i = i + 1
Abweichung = Abs(sllv - sllvs)

Loop


n = n * 10 'Durchlauf der zwei Schleifen bis Genauigkeit erreicht oder i=100

Loop


End If
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »