Iterationsverfahren |
21.06.2010, 21:02 | annnddddiiiii | Auf diesen Beitrag antworten » |
Iterationsverfahren 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 |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
Die Neuesten » |
|