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

Fibonacci Folge

 

Phi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2011, 22:18     Titel: Fibonacci Folge
  Antworten mit Zitat      
Brauche Hilfe bei der Fibonacci Folge

Der Funktionskopf soll die Nummer der Größten zu berechnenden Zahl der F. Folge als einzigen Eingangspartner akzeptieren und die gesamte berechnete F.- Folge als Vektor zurückgeben.

Ich habe mal versucht die F. Folge zu erstellen f_n = f_(n-1) + f_(n-2) für n >= 2 gegeben mit den Anfangswerten  f_0 = 0 und f_1 = 1

Ich habe mal ein Versuch gestartet, ich hoffe ihr könnt mir weiterhelfen...
Code:
>> function f = fibonacci(n)
f = zeros(n,1);
f(0) = 0;
f(1) = 1;
for k = 1:n
f(k) = f(k-1) + f(k-2);
end


dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 17.04.2011, 23:16     Titel:
  Antworten mit Zitat      
Hallo,

so gehts:
Code:

f = zeros(n,1);
f(1) = 0;
f(2) = 1;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end
 


Problem war:
f(0) ist kein gültiger Index in Matlab, beginnt erst bei 1.
Wenn du die Forschleife schon bei 1 bzw. bei 2 beginnst dann kann kommt er ebenfalls auf nicht existente Indizes und überschreibt die bereits vorhandenen Werte im vektor.

lg Dani
Private Nachricht senden Benutzer-Profile anzeigen
 
phi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2011, 23:25     Titel:
  Antworten mit Zitat      
Aber wenn ich das so eingebe, kommt error Sad

Das sind meine ersten Übungen, deswegen klappt es nicht auf Anhieb...
Code:
function f = fibonacci(n)
f = zeros(n,1);
f(1) = 0;
f(2) = 1;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end


Was mache ich falsch?
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 17.04.2011, 23:35     Titel:
  Antworten mit Zitat      
deine funktion speicherst du ab in einem .m file(siehe anhang)
und rufst sie dann z B. im command window auf:
Code:

ergebnis=fibonacci(10) % Bsp. für die ersten 10 Folgeglieder
 


Viel Spaß noch!

lg Dani[/code]

fibonacci.m
 Beschreibung:

Download
 Dateiname:  fibonacci.m
 Dateigröße:  109 Bytes
 Heruntergeladen:  1792 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
phi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 00:18     Titel:
  Antworten mit Zitat      
Ist das so richtig, wenn ich für (10) einen 10spaltigen Vektor bekomme?

Und ist damit die Aufgabe schon gelöst?
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 18.04.2011, 07:29     Titel:
  Antworten mit Zitat      
ja, soweit ich das verstehe schon.
lg
Private Nachricht senden Benutzer-Profile anzeigen
 
phi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 17:27     Titel:
  Antworten mit Zitat      
Vielen Dank erst mal.

Jedoch komme ich mit den weiteren Aufgaben ebenfalls nicht weiter Sad

Ich muss die folgenden Aufgaben in der Funktion implementieren:

1. Die Berechnung gemäß der F.Folge in einer for-Schleife

2. es sollen die esten n_max Fibonacci Zahlen berechnet werden, wobei n_max die vom Benutzer vorgegebn Nummern ist

2. habe ich folgender weise versucht :
Code:
function f = fibonacci(n)
Function FmaxWert
N = lenght
Maxwert = Nums(1)
for k=2:N
if Nums(k) > Max
Maxwert = Nums(k)
end

Ich weiß da ist einiges falsch, abr ich hoffe ihr könnt mir weiterhelfen

Und wie stelle ich die Golfe grafisch dar?
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 18.04.2011, 18:00     Titel:
  Antworten mit Zitat      
Hallo, wenn ich deine Aufgabenstellung richtig verstehe dann hast du alles bereits erledigt in dem File, dass ich dir angehängt habe.
Das ist nämlich eine Funktion. wenn du die eben aufrufst bekommst du den vektor mit dem Ergebnis zurück.

Was genau mit n_max gemeint ist weiß ich jetzt nicht, wenn nicht das gemeint ist was du eh tust.
wenn du dann den ergebnisvektor zurückbkommst, kannst du ihn so plotten
Code:


Was du mit deinem Code vorhast verstehe ich leider nicht ganz. Müsstest du nochmal erklären bitte.

Aber aus meiner Sicht sind die beschriebenen Punkte der Aufgabe bereits gelöst.

Falls du den Maxwert deines Vektors suchst geht das so:
Code:

MaxWert=max(ergebnis)
%bzw, da die Fibonacci Folge monoton steigend ist:
MaxWert=ergebnis(end) %der letzte Wert des Vektors wird zurückgegeben

 


LG dani
Private Nachricht senden Benutzer-Profile anzeigen
 
Türkiye

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2015, 11:43     Titel: fibonacci zahl bis 45
  Antworten mit Zitat      
das ist die beste lösung. Bei nmax einfach die gewünschte zahl eingeben die man gerade braucht fertig!!


Code:
nmax=45;

fibo=zeros(1,nmax);

for n=1:nmax
    if n==1
        fibo(n)=0;
    else
        if n==2
            fibo(n)=1;
        else
    fibo(n)=fibo(n-1)+fibo(n-2);
        end
    end
end

edit winkow: bitte code umgebung verwenden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.10.2015, 12:55     Titel: Re: fibonacci zahl bis 45
  Antworten mit Zitat      
Hallo,

Oder noch ein wenig einfacher:
Code:
nmax=45;

fibo = zeros(1,nmax);
if nmax >= 2
  fibo(2) = 1;
end

for n = 3:nmax
    fibo(n) = fibo(n-1) + fibo(n-2);
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2024 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.