WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

while schleife oder so etwas

 

weigi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2011, 21:23     Titel: while schleife oder so etwas
  Antworten mit Zitat      
Hallo
ich habe schon wieder mal eine Frage aber auch die letzte in der hffnung das sie beantwortet werden kann
gesucht icht ein script das einen Zeilenvektor mit dem Namen Folge erzeugt, dessen Elemtene die Zahlen der Fibonaccifolge sind. Diese folge beginnt mit 1,1,2,3,4,5,8,...
Das Bildungsgesetz lautet an=a(n-1) + a(n-2)
Das Array soll enden wenn erstmals der Wert 100 überschritten wird Hinweis Sinnvollerweise initialisiert man den Vektor Folge mit den ersten beiden Zahlen , den beiden Einsen. Dann kann man mit einer Schleife das bildungsgesetz umsetzen.

Würde mich sehr freuen wenn das jemand hinbekommen würde ist für mich sehr wichtig da ich darin eine Prüfung schreibe
vielen dank
lg
weigi


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2011, 21:33     Titel:
  Antworten mit Zitat      
Hallo ich wollte noch meinen versuch posten
Code:
z_last = 1; z = 1;
while z < 100
   z_save = z_last;
   z_last = z;
   z = z_last + z_save;
disp(z)

ich bekomme jedoch nur einen Spalten vektor und keinen Zeilenvektor was mache ich da noch falsch?
lg
weigi
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 05.02.2011, 21:55     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

ich bekomme jedoch nur einen Spalten vektor und keinen Zeilenvektor was mache ich da noch falsch?

In deinem Beispile bekommst du KEINEN Spaltenvektor, sondern nur eine Zahl. Es mag vielleicht aufgrund der "disp" Ausgabe aussehen wie ein Spaltenvektor, aber "z" wird ja jedesmal überschrieben, so dass es sich nur um eine Zahl handelt. Du muss jedesmal das aktuelle Element an deinen bisherigen Vektor anhängen (in meinem Beispiel der Vektor "number"):

Code:

z_last = 1; z = 1; k = 1;
numbers = zeros(1,10); % preallocate

while z < 100
    z_save = z_last;
    z_last = z;
    z = z_last + z_save;
    numbers(k) =z; % hier werden alle Fib-Elemente in "numbers" gespeichert
    k = k+1;
end
 


Naürlich stimmen hierbei die ersten beiden Elemente der Fib.-Folge nicht (im Vektor "numbers"). Aber mit dem Beispiel solltest du deine Aufgabe ja selbstständig lösen können.

Ansonsten kannst du einen Zeilen- in einen Spaltenvektor (und umgekeht) umwandeln durch:
Code:

test = [1 2 3 4 5 6 7 8 9];
transpose(test)
test'
 


Zudem sei noch angemerkt, dass sich über ein kurzes Feedback (oder Dankeschön) in deinen Threads die Antwortenden wohl freuen würden. Immerhin ist es ja nicht selbstverständlich das einem Leute kostenlos helfen und dafür ihre Freizeit investieren, aber dies nur am Rande.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
weigi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2011, 22:04     Titel:
  Antworten mit Zitat      
Hallo
danke das war schon sehr hilfreich
wenn ich nun aber nicht weis wie viele Spalten es sein müssen also nciht zeros(1;10) schreiben kann wie kann icih das den noch variabel gestalten? das wirklioch genau die benötigte anzahl vorahnden ist?
thx
weigi
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2011, 22:49     Titel:
  Antworten mit Zitat      
Code:
z_last = 1; z = 1; o = 1;

while z < 100
    z_save = z_last;
    z_last = z;
    z = z_last + z_save;
    numbers(o) =z; % hier werden alle Fib-Elemente in "numbers" gespeichert
    o = o+1;
  p=o-1;

end

z_last = 1; z = 1; k = 1;
numbers = zeros(1,p); % preallocate

while z < 100
    z_save = z_last;
    z_last = z;
    z = z_last + z_save;
    numbers(k) =z; % hier werden alle Fib-Elemente in "numbers" gespeichert
    k = k+1;
end
b=[1 1 numbers]
 

So habe iches nun gemacht aber ob das wirklich gut ist??
lg
weigi
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 05.02.2011, 23:34     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

So habe iches nun gemacht aber ob das wirklich gut ist??

Naja es funktioniert ja erstmal, aber du führst ja letztendlich die gesamte Routine 2 mal aus. Bei z<100 mag das zeitlich kein Problem sein, aber bei sehr vielen Gliedern der Fib-Folge schon. In dem Sinne kannst du ja erstmal einen sehr großen Vektor mit Nullen erzeugen (dauert kürzer als die gesamte while Schleife abzuarbeiten) und im nachhinein die Nullen aus dem Vektor entfernen:
Code:

numbers = zeros(1,1000000);
...
b=[1 1 numbers];
b(b==0) = [];
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.02.2011, 02:31     Titel:
  Antworten mit Zitat      
Hallo weigi,

Du könntest natürlich auch die Formel von Moivre-Binet nutzen, um das ganze ohne Schleife hinzubekommen. Mit etwa Arithmetik bekommt man auch heraus, das wievielte Glied den Wert 100 überschreitet.

Wikipedia weiß dazu mehr.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
weigi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2011, 22:31     Titel:
  Antworten mit Zitat      
Hey
danke für alle eure Hilfen war echt super von euch
vielen vielen dank
lg
weigi
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.