Abbruchkriterium do-Befehl < Maxima < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Ich möchte eine Gleichung iterativ lösen lassen mit dem do-Befehl. Mit einer festen Anzahl Schritten funktioniert das auch (i:1 thru 10 do...).
Was ich nicht hinkriege ist das ganze mit Abbruchbedingung (while oder unless), so dass ich eine "Genauigkeit" vorgeben kann. Problem scheint zu sein, das der eigentliche "do-Befehl" ganz hinten stehen muß und das Abbruchkriterium vorher von Maxima geprüft wird. Ich möchte aber ja das Ergebnis des letzten "do-Durchlaufs" als Abbruchkriterium nutzen. Die Beispiele in der Hilfe für "while/unless" sind ungeeignet.
Danke schon mal im Vorraus!
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:36 Do 06.02.2025 | Autor: | Infinit |
Hallo Techniker5,
ich habe zwar noch nie mit Maxima gearbeitet, das Problem, das Du beschreibst, gibt es aber natürlich auch in anderen Programmiersprachen. Ich habe mal ein wenig nach der Maxima-Syntax geschaut und würde Dir vorschlagen, nicht nur eine Differenz als Abbruckriterium zu nehmen, sondern auch eine bestimmte Anzahl von Durchläufen. Damit kannst Du auf jeden Fall sicherstellen, dass das Programm mal endet, was ja sicherlich gewollt ist. Vor Deiner Schleife werden ein paar Startwerte gesetzt, und dann könnte die Programmstruktur (ungefähr) so aussehen (mit ein paar Zahlen zum einfacheren Verständnis):
Resalt:0;
Res:1;
Eps:10^(-5);
Looplimit:1000;
for i:1 step 1 thru Looplimit while (abs(Res-Resalt)>EPS) do
block(
/* bringe hier Dein Iterationsprogramm rein
/* es liefert das Ergebnis Res
Resalt=Res;
print(Res) /* Nur zur Kontrolle, muss nicht sein
);
print(i); /* Auch nur zur Kontrolle
print(res);
In dieser Form würde ich das aufbauen, ich kann aber meine Hand nicht dafür ins Feuer legen, dass die Syntax komplett richtig ist.
Viele Grüße,
Infinit
|
|
|
|