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

Collatz Problem

 

qwertzuiopü
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 13:37     Titel: Collatz Problem
  Antworten mit Zitat      
Code:

function [ns, seq] = collatz(n)
i = 2;
while seq(i-1) ~= 1
   if mod(seq(i-1), 2) == 0
    seq(i) = seq(i-1)/2;
   else seq(i) = 3*seq(i-1) + 1;
   end
   i = i + 1;
 end
 ns = length(seq);
 


Hallo Smile Ich studiere Mathematiklehramt (Grundschule) in Leipzig und muss das Collatz Problem in Matlab/ Octave programmieren. Die Reihe soll einmal von 300 starten. Wenn ich nun "[n, seq] = collatz(300)" in das Befehlsfenster eingebe, kommt "error: 'collatz' undefined near line 1 column 10".

Erkennt jemand einen Fehler? Ich habe leider überhaupt keine Ahnung davon Sad
Private Nachricht senden Benutzer-Profile anzeigen


Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 05.07.2017, 14:35     Titel:
  Antworten mit Zitat      
Hallo,

ich bin mir nicht sicher, was deine Variablen ns und seq sollen.

Das Collatz Problem lässt sich aber folgenderweise berechnen:

Code:
function [folge,ite] = collatz(n)
%ite entspricht anzahl der Iterationen bis die Folge 4,2,1 erreicht wird
%i ist die aktuelle Zahl
i=n;
ite=1;
folge=[n];
while i~=1
    ite=ite+1;
    if mod(i,2)==0
        i=i/2;
    else
       i=3*i+1;
    end
    folge=[folge,i];
end
end


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
qwertzuiopü
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 14:48     Titel:
  Antworten mit Zitat      
Danke für die Hilfe Smile
und wie lasse ich die Folge nun von 300 starten? Gebe ich nun "function [folge, ite] = collatz(300)" in das Befehlsfenster ein, erscheint ein syntax error.
Private Nachricht senden Benutzer-Profile anzeigen
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 05.07.2017, 14:52     Titel:
  Antworten mit Zitat      
Der Funktionsname reicht, also einfach
Code:
[folge,ite]=collatz(n)

und für n deine gewünschte Zahl eingeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
qwertzuiopü
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 14:56     Titel:
  Antworten mit Zitat      
Und gebe ich das ein, kommt der Fehler "error: 'collatz' undefined near line 1 column 14" Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 06.07.2017, 06:18     Titel:
  Antworten mit Zitat      
Das kann eigentlich nicht sein Confused

Wie hast du denn die Funktion erstellt?
Private Nachricht senden Benutzer-Profile anzeigen
 
qwertzuiopü
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 05.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2017, 11:43     Titel:
  Antworten mit Zitat      
Was bedeutet denn diese Fehlermeldung?

Bildschirmfoto 2017-07-11 um 12.42.27.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2017-07-11 um 12.42.27.png
 Dateigröße:  129.32 KB
 Heruntergeladen:  335 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 11.07.2017, 13:15     Titel:
  Antworten mit Zitat      
Hallo,

wie bereits gesagt, musst du im Command-Window lediglich den Funktionsnamen, die Eingabeparameter (bei dir 300) und die Ausgabeparameter(Folge, Anzahl der Iterationen) eingeben. Das Schlüsselwort "function" darfst du hier nicht eingeben.

Also
Code:
[Folge,AnzahlIterationen]=collatz(300);


Dann sollte der von dir genannte Fehler nicht auftreten.
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.