A erweiterte Matrix {A b}, (aus Ax = b)[br]ℤ[sub]p[/sub] Restklasse p=7[br]IP[sub]i[/sub] definiere Einheitmatrizen für Zeilenadditionen und Zeilenaustausch[br]Müssen händisch an die Eingabematrix angepasst werden - werden von links multipliziert [br][br]{ i , j , a } Zeilenadditionen: {Zeile i} += {Zeile j} a[br]{ j , j , a } Zeilenmultiplikationen: {Zeile j} = {Zeile j} a[br]{ i , j } Zeilentausch i [math]\longleftrightarrow[/math] j { i < j }[br][br]Ai[sub]p[/sub] [math]\equiv[/math] Ai mod p - ist die Restklassen Anwendung[br][br]Wenn sie eine neue Aufgabe bearbeiten, dann überschreiben sie die Matrix Zeile (5) durch Ändern oder Copy&Paste. Setzen sie die Bearbeitungsschritte (Schablonen der Elementarmatrizen) [br]IP[sub]i[/sub] auf {{1,1,1},.....,{1,1,1}} [br]das geht schneller als bei neuen Eingaben die Klammern {} korrekt zu setzen. [br]Oder kopieren sie eine id-Schablone ein [br]IP_[b]1...4 [/b]:{{1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {1, 1}}; [br]wo sie dann nur noch die benötigten Elementarmatrizen mit aktuellen Werten überscheiben![br]Unter 5.x werden die Schritte von rechts (zuerst) nach links und in 6.x von unten (zuerst) nach oben abgearbeitet. [br][br]Modulo Inverse (p prime)[br]Um einen (Diagonal-) Eintrag a auf 1 zu setzen suche ich einen Faktor k der bei der Multiplikation auf eine Restklasse 1 führt, also eine Zahl k a mod p =1 erzeugt, die Faktoren können sie anzeigen mit[br][br][i]Sequence( Element(KeepIf(floor(x)==x, (Sequence(p) p +1)/(a)),1), j,1,p-1)[/i][br]p=7=> {8, 4, [b]5[/b], 2, 3, 6}[br][br]z.B. eine [b]3[/b] * 5 = 15 mod 7 [math]\equiv[/math] = 1 ggf. die Zeile k damit multiplizieren {k,k,5}[br]oder die Funktion [i]FaktorMod1(a)[/i] benutzen - siehe Beispiel Anwendung. [br]Falls die simple Suche FaktorMod nicht ausreicht wäre ein [url=https://www.geogebra.org/m/wzheqbfs]erweiterter Euklid[/url][math]\nwarrow[/math] angesagt![br][br]Wenn sie mit den 4 Schritten nicht auskommen müssen sie vor A4 einen neuen Schritt einfügen, A4 und folgende sollten nicht geändern werden und der letzte Schritt bleiben, weil diese Namen in der Auswertung verwendet werden.[br][br][i]Funktionen E(),T(), IE() stellen nach v.745 ihre Funktion ein (bug_report erfolgt ), ersetzt durch EX()![/i]
unwesentliche Zwischenschritte nicht dargestellt[br]Restklasse mod 29
Erste Spalte im Standard-Verfahren [br]Handoptimiert hätte ich gewählt[br]IP={{5, 1, -6}, {4, 1, -1}, {3, 1, -4}, {2, 1, -2}, {1, 2}};[br]- tausche 2 nach 1 [br]- ziehe 1 * aj1 von allen folgenden j=2...5 ab