Verfasst am: 22.02.2015, 22:57
Titel: Rekursion in Matlab
Hallo,
Leider verwirrt mich dieses ohne "return variable" wie es in anderen Programmiersprachen üblich ist ein bisschen, darum weiss ich nicht, wo der Fehler in meiner Rekursion liegt. Ich möchte gerne eine Folge addieren und von 1 bis n hochzählen. Dann wenn ich 50 habe möchte ich noch a^n dazu addieren. Kann mir jemand weiterhelfen? Die Zeile mit dem nchoosek sollte stimmen.
Code:
function task_2_2
n=50; a=4; b=3; r=1;
sol = rec(a,b,n,r);
fprintf('%i \n', sol);
return
function sol = rec(a,b,n,r) if r<=n
sol = nchoosek(n,r)*((-1)^r)*(b^r)*(a^(n-r));
sol = sol+rec(a,b,n,r+1);
else
sol=a^n;
end return
die Summanden erreichen Werte in der Größenordnung 1e41. Da die Rechenoperationen in einer unterschiedlichen Reihenfolge ausgeführt werden, kann eine Ungenauigkeit in der Größenordnung von 1e24 daher rühren.
Wenn du mit symbolischen Variablen rechnen lässt, kommt bei beiden Programmen 1 heraus. Sollte das so sein?
die Summanden erreichen Werte in der Größenordnung 1e41. Da die Rechenoperationen in einer unterschiedlichen Reihenfolge ausgeführt werden, kann eine Ungenauigkeit in der Größenordnung von 1e24 daher rühren.
Wenn du mit symbolischen Variablen rechnen lässt, kommt bei beiden Programmen 1 heraus. Sollte das so sein?
ja das könnte sehr gut möglich sein, da ich dass für Numerik programmiere.
Könnte also genau das sein was das Lernziel ist - verstehen warum (wie Harald beschrieben hat) andere Rechenreihenfolgen andere Ergebnisse ergeben können.
Andreas
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.