Erweiterter euklidischer Algorithmus

Neue Frage »

henriii Auf diesen Beitrag antworten »
Erweiterter euklidischer Algorithmus
Jetzt sitze ich schon tagelang an einem Verständnisproblem. Ich versuche gerade, autodidaktisch den erweiterten Euklidischen Algorithmus zu verstehen anhand folgender Überlegungen:

Der Text sagt, ax + by = ggT(a,b)

zunächst soll ganz normal der ggT berechnet werden, zusätzlich in jedem Schritt aber noch die Zahlen



und



mit den Anfangswerten x0 = 1, y0 = 0, x1 = 0, y1 = 1

das soll anscheinend so sein, weil r0 = a und r1 = b, wieso?? welche division gibt als rest den wert a selbst oder b selbst?

wenn ist, ist ja der Algorithmus beendet und das y und k löst meine diophantische Gleichung.

Ich verstehe jetzt nicht, wie die Anfangswerte von x und y zustande kommen. Und wieso gibt es überhaupt diese Anfangswerte? Ich meine, die existieren doch noch garnicht in dem Schritt? Kann mir das bitte jemand anschaulich erklären?
HAL 9000 Auf diesen Beitrag antworten »
RE: Erweiterter euklidischer Algorithmus
Ob's "anschaulich" genug ist, weiß ich nicht zu sagen. Ich hole mal weit aus, um die Idee des EEA zu verdeutlichen:


Zu jedem (!) Zeitpunkt des Algorithmus soll für die anfallenden Reste



gelten, dabei ist die Folge der Zahlen, die beim "einfachen" euklidischen Algorithmus anfällt, d.h. mit Start .

Nun bestimmt man ja und setzt dann den nächsten Rest gemäß



fest. Tja, und nun setz mal (*) für die drei Indizes hier in diese Rekursionsgleichung ein, und erhältst

.

Koeffizientenvergleich nach ergibt, dass eine Festlegung gemäß




die Gleichung (*) für Index erfüllt, sofern diese bereits für erfüllt ist (Schlussweise durch Vollständige Induktion).


Und nun nochmal zur Wahl der Startwerte der x,y-Folgen:

Für ist , und es gilt ja

Für ist , und da gilt
Mystic Auf diesen Beitrag antworten »
RE: Erweiterter euklidischer Algorithmus
Da die Folgen und ersichtlich all der gleichen Rekursion - nur halt mit unterschiedlichen Startwerten - genügen, kann man sie auch sehr schön zu einem Vektor zusammenfassen, wie im nachfolgenden Maple-Programm geschehen... Augenzwinkern

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
EEA:=proc(a::integer,b::integer)
    # option trace;
    local u:=[a,1,0],v:=[b,0,1],w;
    do
       if v[1]=0 then return sign(u[1])*u end if;
       w:=u-floor(u[1]/v[1])*v; u:=v; v:=w
    end do
end:

EEA(17,5);
                           [1, -2, 7]
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »