|
|
Ist eine Zahl Teil der Fibonacci-Folge? |
|
peggi |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 18:57
Titel: Ist eine Zahl Teil der Fibonacci-Folge?
|
 |
Hallo ihr da draußen!
Ich soll für meinen Matlab-Kurs eine Funktion schreiben, die herausgibt, ob eine Zahl Teil der Fibonacci-Folge ist, und wenn ja, welches Element der Folge. Die Fibonacci-Folge selbst haben wir schon iterativ und rekursiv programmiert. Aber bei der o.g. Aufgabe stehe ich (und nicht nur ich) total auf dem Schlauch.
Am besten nutze ich wahrscheinlich den iterativen Teil:
%isfibonacci soll prüfen, ob eine Zahl Element der Fibonacci-Folge ist
function [f]=isfibonacci(n)
f=ones(1,n);
for a=3:n;
f(a)=f(a-1)+f(a-2);
end
Wobei diesmal f ja eigentlich der Wert ist, der eingegeben wird und n der ist, der herauskommen soll??
Kann mir vllt jemand helfen?
LG, peggi
|
|
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 19:03
Titel:
|
 |
Nein n ist die Eingabe und f die Ausgabe.
Du erstellst dir alle f's also die in dem Bereich die dich interessieren und dann kannst du mit find suchen ob die Zahl Teil dieser Menge ist.
siehe
|
|
|
eupho |

Forum-Meister
|
 |
Beiträge: 777
|
 |
|
 |
Anmeldedatum: 07.01.09
|
 |
|
 |
Wohnort: Marburg
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 21:52
Titel:
|
 |
Das, würde ich sagen, kommt ganz darauf an, ob vorallokiert werden soll oder nicht. Man kann natürlich zuerst einen Vektor mit 10 Millionen Einträgen schreiben und dann mit find suchen, alternativ kann man aber deine bereits geschriebene Funktion minimalst verändern, indem bei jedem Schleifendurchlauf nach der eingegebenen Zahl gesucht wird.
|
|
|
peggi |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 22:51
Titel:
|
 |
Vielen Dank für die schnelle Antwort!
Ich habe jetzt erst die Folge definiert:
%fibonacci gibt die Fibonacci-Folge als Vektor heraus bis zum n-ten
%Element.
function [f]=fibonacci(n)
f=ones(1,n);
for a=3:n;
f(a)=f(a-1)+f(a-2);
format long g
end
und dann mich in der zweiten function darauf bezogen:
%isfibonacci soll prüfen, ob eine Zahl Element der Fibonacci-Folge ist
function [f]=isfibonacci(m)
x=fibonacci(50);
f=find(x==m);
end
Aber das geht doch bestimmt eleganter und in nur einer Funktion, oder?
Wie meintest du das mit der Schleife?
while x<m;
n=n+1;
oder so??
Grüße, peggi
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.12.2010, 23:36
Titel: Re: Ist eine Zahl Teil der Fibonacci-Folge?
|
 |
Hallo peggi,
Zitat: |
Ich soll für meinen Matlab-Kurs eine Funktion schreiben, die herausgibt, ob eine Zahl Teil der Fibonacci-Folge ist, und wenn ja, welches Element der Folge. |
Ein Ansatz in Pseudo-Code:
Um die nächste Fibonacci-Nummer zu berechnen, brauchst Du nur die beiden letzten Nummern, und gar nicht alle.
Dies ist zwar ein tolles Forum. Aber Google findet auch sehr elegante Methoden um das Problem zu lösen - und zwar ohne alle Fibonacci-Nummern berechnen zu müssen! Wie wäre es z.B. mit "is number fibonacci"?
Gruß, Jan
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 03.12.2010, 00:20
Titel:
|
 |
Hallo,
hier stand Mist. Sorry
MFG
Sco
Zuletzt bearbeitet von Sco am 03.12.2010, 01:24, insgesamt einmal bearbeitet
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 03.12.2010, 00:58
Titel:
|
 |
Hallo Sco,
Zitat: |
Natürlich ist dieser Code nur bis zu einer bestimmten Größe von Zahlen ausführbar... |
Stimmt, und diese bestimmte Größe ist 1. Für "zahl" >= 2 werden zumindest keine Ergebnisse mehr gefunden.
Ich vermute, Du hast irgendeinen tiefgreifenden Tippfehler eingebaut?!
Gruß, Jan
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 03.12.2010, 01:18
Titel:
|
 |
Hallo Jan,
jub ich hab da wohl etwas verwechselt
(Ich schieb es mal auf die Uhrzeit...)
Dann mal ein hoffentlich besserer Vorschlag:
wobei "n" die eingegebene Zahl ist.
MFG
Sco
Zuletzt bearbeitet von Sco am 03.12.2010, 02:12, insgesamt 2-mal bearbeitet
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 03.12.2010, 01:52
Titel:
|
 |
Hallo Sco,
Zitat: |
jub ich hab da wohl etwas verwechselt :oops:
(Ich schieb es mal auf die Uhrzeit...) |
Nein, das klappt auch nicht. Dachtest Du an so etwas wie:
@Peggi: Nicht wundern und nicht verwirren lassen.
Gruß, Jan
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 03.12.2010, 02:05
Titel:
|
 |
Hallo Jan,
nein so meinte ich es nicht, ich hatte einen kompletten Aussetzer, da ich dachte cumsum ist die Fib.-Folge
Es war ein langer Tag vorm PC (und Matlab), denke es ist jetzt auch besser Schluss zu machen, ehe noch mehr "Mist" kommt
Denke aber die neue Lösung sollte wenigstens von den Ergebnissen her passen.
MFG
Sco
|
|
|
peggi |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.12.2010, 13:45
Titel:
|
 |
Danke für die Rückmeldungen, auch wenn es -@Sco- teilweise etwas verwirrend war. @Jan: Ich hatte ja schon gesucht gehabt, aber nichts sinniges gefunden deswegen bin ich so froh, daß es als letzte Möglichkeit solche Foren gibt. Sry nochmal LG, peggi
|
|
|
ppirokke |

Forum-Fortgeschrittener
|
 |
Beiträge: 64
|
 |
|
 |
Anmeldedatum: 19.11.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2010a
|
 |
|
|
 |
|
Verfasst am: 04.12.2010, 16:45
Titel:
|
 |
Hi,
vieleicht kannst du ja was mit der Formel von Binet anfangen (siehe z.B. Wikipedia), damit kann man ohne Rekursion Fibonaccielemente berechnen.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|