Mathematische Modelle für Schleifenberechnungen

26/09/2007 - 14:47 von Tim Frink | Report spam
Hallo,

ich suche eine Möglichkeit, um die Berechnungen innerhalb einer
Schleife in einem Computerprogramm durch ein mathematisches
Modell darzustellen. Was ich also vermeiden will, ist das, was
die Maschine macht. Also für jede Schleifeniteration den Wert
sukzessiv anzupassen, um beim Verlassen der Schleife das
entgültige Ergebnis zu liefern. Vielmehr soll die Berechnung
dadurch vereinfacht werden, dass man den Wert, abhàngig von
der Anzahl der Schleifeniterationen, direkt mit einer Formel
ausrechnet. Ein Beispiel:

Gegeben sei eine Schleife, die insgesamt 10x ausgeführt wird:

i = 0,
b = 2,
c = 2,
d = 2,
e = 2;

while( i < 10 ) {
a = a + 1;
b = b + b;
c = c * c;
d = d + e;
e = e + 1;
i++;
}

Natürlich kann man a-e, wie es die Maschine tut, in jeder
der 10 Schleifeniterationen anpassen. Ich würde aber gerne
die mehrfache Schleifenausführung unterbinden und für die
Variablen a-e direkt die entgültigen Werte angeben, unter
der Annahme, dass sie sonst erst nach 10 Iterationen
entstehen würden.

Hat jemand eine Idee, wie man das machen könnte? Mir kamen zuerst
mathematische Reihen in den Sinn, ich weiß aber noch nicht
wirklich, wie ich die o.g. Ausdrücke durch àquivalente Reihen
ersetzten kann. Ein größeres Problem ist auch die Berechnung
von 'd', das von einer danach folgenden Variable abhàngt.

Kennt jemand Verfahren, die sich damit beschàftigen? Jegliche
Kommentare oder Lösungvorschlàge sind sehr willkommen.

Vielen Dank.

Schöne Grüße,
Tim
 

Lesen sie die antworten

#1 Helmut Richter
26/09/2007 - 15:29 | Warnen spam
On Wed, 26 Sep 2007, Tim Frink wrote:

Gegeben sei eine Schleife, die insgesamt 10x ausgeführt wird:

i = 0,
b = 2,
c = 2,
d = 2,
e = 2;

while( i < 10 ) {
a = a + 1;
b = b + b;
c = c * c;
d = d + e;
e = e + 1;
i++;
}

Natürlich kann man a-e, wie es die Maschine tut, in jeder
der 10 Schleifeniterationen anpassen. Ich würde aber gerne
die mehrfache Schleifenausführung unterbinden und für die
Variablen a-e direkt die entgültigen Werte angeben, unter
der Annahme, dass sie sonst erst nach 10 Iterationen
entstehen würden.



Die meisten sieht man auf Anhieb:

Nach n Iterationen ist:

a = n (wenn a am Anfang 0 war, was nicht dasteht)
b = 2^(n-1)
c = 2^(2^n+1)
e = n+2

Nur d ist nicht offensichtlich. Da berechnet man ein paar Werte, z.B.
durch Eingabe der Formel in eine Excel-Tabelle, und findet durch
Probieren:

d = (n²+3n+4)/2

Das Probieren wird wesentlich erleichtert, wenn man sieht, dass im
Wesentlichen die Zahlen der Reihe nach aufsummiert werden, die Sache
also wie n²/2 wàchst.

Helmut Richter

Ähnliche fragen