Ausgabe in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:13 Di 12.11.2013 | Autor: | Madabaa |
Hallo
ich habe zwei rekursive folgen.
1.
for i= 1:30
z=(1/i)-5*z
end
2.
for j= 30:-1:1
a=(1/5j)-(a/5)
end
Ich möchte das die einzelne Ergebnisse jeweils nebeneinander stehen,damit ich sie vergleichen kann. Wie mache ich das?
Gruß
Madabaa
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:37 Di 12.11.2013 | Autor: | Marcel |
Hallo,
> Hallo
>
> ich habe zwei rekursive folgen.
>
> 1.
> for i= 1:30
> z=(1/i)-5*z
> end
das kann eigentlich nicht funktionieren, weil das z rechterhand nicht
initialisiert wurde! (Es kann sein, dass Matlab dann für i=1 halt rechts z=0
selbst initialisiert...)
> 2.
> for j= 30:-1:1
> a=(1/5j)-(a/5)
> end
>
> Ich möchte das die einzelne Ergebnisse jeweils
> nebeneinander stehen,damit ich sie vergleichen kann. Wie
> mache ich das?
Ich würde sagen, entweder alles in einer Schleife verpacken, oder aber
Du legst Dir zwei Vektoren an, etwa
z=zeros(1,30)
z(1)=1 (oder der passende Wert)
for k=2:30
z(k)=(1/k)-5*z(k-1)
end
(i oder j würde ich in Matlab nicht als Laufvariable wählen, denn i oder j wird
dort auch als imaginäre Einheit verwendet)
Analog baust Du Dir einen Vektor a.
Wenn ich das richtig in Erinnerung habe, sind nun a,z dann Zeilenvektoren.
Dann schau mal, wie man die transponiert (normalerweise geht das mit ',
aber strenggenommen macht das "konjugiert transponiert", was solange
egal ist, wie alle Einträge rein reell sind - ich glaube, "nur transponieren"
geht mit .').
Wenn das stimmt, dann baue Dir halt die Matrix
A=[a.',z.'] (Syntax prüfen bitte)
Ausgabe mit
disp(['Meine berechneten Werte:']);
disp(A);
oder
disp(A)
oder halt einfach wie oben - solange Du keinen Strichpunkt am Ende
machst, gibt Matlab Dir ja A aus!
Dann stehen die Ergebnisse direkt nebeneinander (es geht auch anders,
etwa mit
disp([' Erster Vektor: ',a,';zweiter Vektor:',z])),
jedenfalls kannst Du das mal testen.
(Das hätte nicht funktioniert, was aber gehen sollte:
for p=1:30
disp([num2str(z(p)),'; ',num2str(a(p))])
end)
Ich teste das gleich auch mal, da ich Dir bisher nur alles aus der Erinnerung
heraus gesagt habe...
P.S. Nur mal so als Info:
Schreibe Dir mal die "Folgen" [mm] $a\,$ [/mm] und [mm] $z\,$ [/mm] wirklich in rekursiven Formeln
nieder:
[mm] $z_k=\frac{1}{k}-5z_{k-1}$
[/mm]
[mm] $a_k=\frac{1}{5(k+1)}-\frac{a_{k+1}}{5}$ $\iff$ $a_{k+1}=\frac{1}{k+1}-5a_k$
[/mm]
Fällt Dir was auf?
P.S. Im Anhang findest Du eine Matlab-Datei - Dir sollte klar sein:
Mit z(1)=2 initialisiere ich z(1) auf den Wert 2. Sofern man a(30)=z(30) hat,
werden beide Vektoren identisch sein werden. Das kannst Du gerne mal
durchtesten!
Matlab_Datei
Gruß,
Marcel
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:49 Mi 13.11.2013 | Autor: | Madabaa |
Danke für deine Hilfe
|
|
|
|