|
Kroko123 |

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.07.2013, 23:11
Titel: Ackermannfunktion
|
 |
Hallo liebe Leute,
ich habe ein Problem mit der Implementierung der Ackermannfunktion. Als Pseudo Code habe ich dieses hier gegeben, was ich nun implementieren möchte:
FUNCTION a(n,m)
IF n=0 THEN
RETURN m+1
ELSE
IF m=0 THEN
RETURN a(n-1,1)
ELSE
RETURN a(n-1,a(n,m-1))
END
END
Dies ist meine Implementierung, die leider nicht funktioniert:
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 09:14
Titel:
|
 |
Hallo,
verstehe ich es richtig, dass die Funktion sich rekursiv aufrufen soll?
Hier ein paar Hinweise:
- die Funktion muss ein Rückgabeargument haben, und dieses muss in der Funktion gesetzt werden
- das erste m und n sollten von außen übergeben statt per input abgefragt werden, da es sonst mit den rekursiven Aufrufen schwierig wird.
- das clear; clc ist in einer Funktion unsinnig.
Wenn etwas nicht funktioniert, ist es grundsätzlich wichtig zu sagen, was genau nicht funktioniert. Gibt es beispielsweise Fehlermeldungen (wenn ja, welche) oder weicht das Verhalten der Funktion vom gewünschten ab (wenn ja, inwiefern)?
Grüße,
Harald
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 10:17
Titel:
|
 |
Hallo,
Also Fehlermeldung sehe ich diese hier:
Ja soweit ich weiß soll sie sich rekursiv aufrufen. Wie soll ich denn denn den Übergabewert "nach außen bringen?".
Was genau das Programm leisten soll kann ich leider gar nicht sagen, ich habe nur den oben genannten Pseudocode gegeben. Nun sollte daraus ein Matlab Programm implementiert werden.
Grüße
Marcel
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 10:29
Titel:
|
 |
Hallo,
du musst die Funktion schon unter dem Namen speichern, mit dem sie aufgerufen werden soll. Also entweder alle a durch pruefungsvorbereitung1 ersetzen, oder die Datei als a.m speichern.
Ansonsten: siehe oben.
Grüße,
Harald
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 11:11
Titel:
|
 |
Leider verstehe ich das nicht
Ich möchte doch einfach nur mal eben den Pseudo Code von oben in einen Matlab Code implementieren.
Habe nun stehen (unter a.m abgespeichert):
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 11:54
Titel:
|
 |
Hallo,
Zitat: |
Leider verstehe ich das nicht |
Was verstehst du nicht?
Leider hast du den ersten meiner Hinweise noch nicht umgesetzt. Das musst du schon machen, damit die Funktion weiß, was sie zurückgeben soll.
Falls du noch Probleme mit Funktionen in MATLAB hast, hilft vielleicht die Doku:
http://www.mathworks.com/help/matlab/ref/function.html
Grüße,
Harald
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 15:27
Titel:
|
 |
Servus,
nun habe ich es so geschrieben:
Und erhalte nun die Fehlermeldung:
Ja nun wo liegt nun mein Fehler? Irgendwas mache ich immer verkehrt, leider habe ich noch 3 socher Aufgaben mit Rekursion. Gestern habe ich die selben schon mit Iteration gemacht, damit ging es problemlos.
Grüße
Marcel
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 15:37
Titel:
|
 |
deine funktion besitzt jetzt zwar laut definition einen rückgabe wert, dieser wird aber in der funktion nicht erzeugt.
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 15:40
Titel:
|
 |
Ah, okay, danke.
Und wie und was baue ich da jetzt wo ein?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 16:40
Titel:
|
 |
Hallo,
hast du denn den von mir vorgeschlagenen Link mal gelesen?
Meine Empfehlung wäre, sich die Grundlagen von MATLAB systematisch anzueignen anstatt sich von einem Problem zum anderen zu hangeln.
Grüße,
Harald
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 17:03
Titel:
|
 |
Gut, dann belassen wir es eben mal dabei.
Ich habe nun keine Zeit mich weiter in Matlab einzuarbeiten. Als Maschinenbauer möchte ich einfach nur die Prüfung bestehen und mehr auch nicht.
Trotzdem vielen Dank.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 17:40
Titel:
|
 |
Hallo,
Zitat: |
Gut, dann belassen wir es eben mal dabei. |
Sag jetzt bitte nicht, dass du aufgibst, obwohl ich dir die Lösung quasi mundgerecht serviert habe.
Zitat: |
Als Maschinenbauer möchte ich einfach nur die Prüfung bestehen und mehr auch nicht. |
Mit der Prüfung könnte das schwierig werden, wenn solch elementare Kenntnisse fehlen.
Sorry, aber meinst du denn, dass man euch zum Spaß versucht, MATLAB beizubringen? Solche Kenntnisse können für das Berufsleben sehr wertvoll sein.
Grüße,
Harald
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 18:11
Titel:
|
 |
Alles schön und gut, aber ich fange jetzt nicht an mir den Text im besagten Link zu übersetzen. In Deutsch hätte ich es mir gerne durchgelesen.
Matlab finde ich gut und es interessiert mich auch, aber nicht solche Sachen mit Rekursion und dergleichen. Auch die Programmierung mit Rückgabewerden usw. verstehe ich eher weniger. Nun werde ich allerdings mir nicht alles in einer Woche selbst beibringen, da ich noch einige andere Sachen zutun habe.
Ebenfalls möchte ich noch eine Medianberechnung mit Teile und Herrsche machen, so dass ich noch einiges zutun habe. bzw. ich gebe es lieber schon vorher auf, weil das wird nichts.
Leider verstehe ich auch gar nicht, was das Programm genau macht, wie gesagt, ich haben nur den Pseudo Code. Für mich ist daraus nicht ersichtlich, wo denn welcher Wert eingegeben wird und wo, was etwas übergeben wird.
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 18:37
Titel:
|
 |
nunja harald hat die lösung schon hingeschrieben. da ist nicht mehr viel zu ändern außer das was er als kommentar dazugeschrieben hat. wenn das prüfungsrelevant ist sollte das irgendwann mal im unterricht dran gewesen und du solltest dir nicht alles selber beibringen müssen in einer woche. die dokumentation von matlab ist recht gut aber halt auf englisch was man aber als maschinenbaustudent schon irgendwie beherrschen sollte.
|
|
|
Kroko123 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 33
|
 |
|
 |
Anmeldedatum: 10.04.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.07.2013, 18:39
Titel:
|
 |
Zur Ackermannfunktion habe ich genau das, was oben steht: "Den Pseudocode", nicht mehr und nicht weniger.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|