euklidischer Algorithmus < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 23:08 Di 07.01.2014 | Autor: | smirre |
Aufgabe | Programmieren sie den euklidischen Algorithmus in Matlab. Die Zahlen sollen unabhängig in jedem einzelnen Durchlauf neu eingegeben werden können. |
Hallo :)
In der letzten Übungsstunde sollten wir den euklidischen Algorithmus zur Bestimmung des ggT in Matlab programmieren. Leider bin ich nicht sehr weit gekommen.
Meines Wissen nach müsste man für das Programm eine if-Schleife verwenden. Allerdings weiß ich nicht genau wie ich die einzelnen Gleichungen, die sich ja ständig ändern, in dieser if-Schleife unterbringen soll.
Ein zusätzliches Problem ist auch noch, dass ich die if-Schleife auf eine bestimmte Anzahl an Durchläufen begrenzen müsste, allerdings ist die Anzahl der Durchläufe ja von Zahl zu Zahl unterschiedlich.
Wäre super, wenn mir jemand helfen könnte!
Hoffe meine Frage ist verständlich gestellt :)
•Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:36 Di 07.01.2014 | Autor: | DieAcht |
Hallo,
> Programmieren sie den euklidischen Algorithmus in Matlab.
> Die Zahlen sollen unabhängig in jedem einzelnen Durchlauf
> neu eingegeben werden können.
> Hallo :)
> In der letzten Übungsstunde sollten wir den euklidischen
> Algorithmus zur Bestimmung des ggT in Matlab programmieren.
> Leider bin ich nicht sehr weit gekommen.
> Meines Wissen nach müsste man für das Programm eine
> if-Schleife verwenden. Allerdings weiß ich nicht genau wie
> ich die einzelnen Gleichungen, die sich ja ständig
> ändern, in dieser if-Schleife unterbringen soll.
> Ein zusätzliches Problem ist auch noch, dass ich die
> if-Schleife auf eine bestimmte Anzahl an Durchläufen
> begrenzen müsste, allerdings ist die Anzahl der
> Durchläufe ja von Zahl zu Zahl unterschiedlich.
> Wäre super, wenn mir jemand helfen könnte!
> Hoffe meine Frage ist verständlich gestellt :)
>
> •Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
Ich verstehe nicht wo dein Problem liegt.
Habt ihr den Algorithmus als Pseudocode aufgeschrieben?
Wenn ja, dann poste ihn doch bitte.
Damit die Übersichtlichkeit nicht leidet, benutze:
[code][/code]
Mir ist nicht klar ob du nun den Algorithmus verstanden hast oder Hilfe bei der Implementation brauchst.
Probleme bei der Implementation kann ich mir, wenn du den Pseudocode dazu hast, mit Matlab nicht vorstellen.
Gruß
DieAcht
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 00:38 Mi 08.01.2014 | Autor: | smirre |
ich habe den Algorithmus verstanden, weiß allerdings nicht genau wie ich den in der if-Schleife darstellen soll. Wir haben leider gar keine Hinweise für die Aufgabe bekommen. Kann sein, dass es nur an einer Kleinigkeit bei mir hängt und ich deswegen nicht weiter komme.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:58 Mi 08.01.2014 | Autor: | Marcel |
Hallo,
> ich habe den Algorithmus verstanden, weiß allerdings nicht
> genau wie ich den in der if-Schleife darstellen soll. Wir
> haben leider gar keine Hinweise für die Aufgabe bekommen.
den euklidischen Algorithmus findest Du "in Worten" etwa im Buch "Elementare
und algebraische Zahlentheorie", Müller Stach und Piontkowski - 2. Auflage,
Satz 3.7 (dort findest Du auch den erweiterten, einfach das Buch weiter
durchstöbern, knapp dahinter).
Jetzt stell Dir vor, Du bist ein Computer. Ich gebe Dir zwei Zahlen, die eine
heiße [mm] $a\,,$ [/mm] die andere [mm] $b\,.$ [/mm] Erzähl mal - rein mit Worten - wie Du algorithmisch
nun loslegst, um [mm] $\text{ggt}(a,b)$ [/mm] zu berechnen.
> Kann sein, dass es nur an einer Kleinigkeit bei mir hängt
> und ich deswegen nicht weiter komme.
Das können wir nicht sagen, wenn Du noch nicht mal den Anfang machst,
wo wir sehen könnten, dass Du überhaupt was tust...
Ein Anfang könnte ja so aussehen (erstmal einfach, ohne Fehlerabfang), bspw.:
1: |
| 2: | disp('Geben Sie die Zahlen a und b ein, von denen der ggT ermittelt werden soll!');
| 3: | a=input('Ihre Eingabe für a: ');
| 4: | b=input('Ihre Eingabe für b: ')
|
etc.
(Du weißt aber schon, wie man while-Schleifen in Matlab verwendet, oder?
Ich meine: GidF (klick!)!)
Oder Du schreibst direkt sowas wie eine Funktion...
P.S. Im Anhang findest Du mal einen (nicht auf absolute Fehlerfreiheit)
getesteten C++-Code von mir bzgl. der Aufgabenstellung (jedenfalls zur
reinen Berechnung des ggT's zweier einmal fest vorgegebenen Zahlen mit
Hilfe des eukl. Algorithmusses)!
Datei-Anhang
P.P.S. Ich sehe gerade, dass ich nicht den modernen eukl. Algorithmus (aus
dem Buch), sondern die klassische Variante (von hier: Wiki, klick!)
programmiert hatte. Welche Version sollt ihr denn programmieren?
Gruß,
Marcel
Dateianhänge: Anhang Nr. 1 (Typ: cpp) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:01 Mi 08.01.2014 | Autor: | smirre |
Vielen Dank Marcel! Der Tipp mit der while-Schleife hatte mir gefehlt.
ich habe den Anfang mit dem Input schon gemacht und haben den nicht rein gestellt, weil ich dachte, dass das ja mit dem euklidischen Algorithmus an sich ja nichts zu tun hat, weil Input ja immer gleich gemacht wird. Ich hab es jetzt mal mit der while schleife versucht:
a= input('Zahl 1: ');
b= input('Zahl 2: ');
while a > 0 & b > 0
a=mod(a,b);
b=mod(b,a);
end
so funktioniert es jetzt auch. Es muss nur drauf geachtet werden, dass a dabei die größere der beiden Zahlen ist.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:59 Mi 08.01.2014 | Autor: | DieAcht |
Hallo,
>
> a= input('Zahl 1: ');
> b= input('Zahl 2: ');
>
> while a > 0 & b > 0
>
> a=mod(a,b);
> b=mod(b,a);
>
> end
>
> so funktioniert es jetzt auch. Es muss nur drauf geachtet
> werden, dass a dabei die größere der beiden Zahlen ist.
Dann setz vor der while-Schleife noch [mm] a=\max(a,b) [/mm] und [mm] b=\min(a,b).
[/mm]
Du musst natürlich aufpassen bei der Implementierung bei den Variablen
Gruß
DieAcht
|
|
|
|