Ich saĂ auf dem Coursera-Kurs. Der Kurs richtete sich an AnfĂ€nger in Java, und in einem der Video-Tutorials wurde das Thema 7 Schritte zur Lösung von Problemen angesprochen .Ich habe mir mit gutem Gewissen das Video-Tutorial angehört und dachte mir, dieses GeschĂ€ft ist weit und lange gegangen.Der Rest des Kurses war einfach und entspannt. Zu einem der FĂ€cher der UniversitĂ€t, nĂ€mlich der sogenannten âWissenschaftlichen Programmierungâ, stellte sich jedoch folgende Aufgabe:Lösen Sie ein lineares Gleichungssystem unter Verwendung der folgenden Matrixerweiterung ::
Wo Ist die untere Dreiecksmatrix und Ist die obere Dreiecksmatrix.
Das Thema der linearen Algebra, das wir im 1. Kurs aufgenommen haben. Ehrlich gesagt erinnerte ich mich an die allgemeinen Prinzipien der Operationen mit Matrizen, Vektoren und dem Allerheiligsten - der GauĂ-Methode. Wenn Sie es sich mit dem Gehirn ĂŒberlegen, haben wir keine LU-Zerlegung untersucht, aber die Google-Methode hilft immer. Bis zu diesem Punkt gerettet.Ich habe einen allgemeinen Algorithmus zum Finden von Matrizen gefunden und , aber um halb vier Uhr morgens gab mir kein Kaffee die Möglichkeit, es richtig umzusetzen (vorausgesetzt, wir haben dort auf Octave codiert). Am Ende flippte ich aus und beschloss, trotzdem das klug benannte Sprichwort zu hören.1. Beschreiben Sie das Problem von Hand
Alles, was Ihnen im Leben fehlt, ist zu verstehen, was das Problem wirklich ist. Nehmen wir ein Beispiel fĂŒr das obige Problem und schreiben es auf ein Blatt Papier. In guter Weise mĂŒssen die folgenden Bedingungen fĂŒr die Existenz von Matrizen erfĂŒllt sein und :- Die inverse Matrix muss existieren, Ich meine ;;- Alle groĂen MinderjĂ€hrigen sollten nicht entartet seinDeshalb brauchen wir zumindest einen "Narrentest", denn es gibt sicherlich kluge Leute, die die Matrix verwenden wollen, die fĂŒr uns nicht geeignet ist. Aber lassen wir es jetzt weg.Das Problem ist uns klar: Matrizen finden und das wird unter den oben genannten Bedingungen fallen. Nachdem Sie versucht haben, die Lösungsmethoden zu googeln, ist es unwahrscheinlich, dass Sie den Algorithmus beim ersten Mal korrekt implementieren können (wenn Sie nicht gut in linearer Algebra sind). Nachdem wir unzĂ€hlige Versuche durchlaufen haben, werden wir höchstwahrscheinlich eine Abfolge von MaĂnahmen entwickeln, um unser Problem zu lösen, und dann fahren wir mit Schritt 2 fort.2. Beschreiben Sie, was Sie getan haben
Nehmen Sie die Matrix als Beispiel
Jetzt wenden wir unsere GauĂ-Methode darauf an und entfernen unnötige Elemente in der 3. Zeile, indem wir die erste Zeile davon subtrahieren, multipliziert mit dem VerhĂ€ltnis des ersten Elements von 3 Zeilen zum ersten Element von 1 Zeile:
Entfernen Sie nun das zweite Element der 3-Zeile mit einer Àhnlichen Aktion:
Als Ergebnis erhalten wir die Matrix
Und nun die Koeffizienten, die wir gefunden haben (das Ergebnis des VerhÀltnisses der Elemente ) nimm die Werte der Matrix , und bekomme
Schauen Sie sich die Vorlage an, nicht wahr?3. Muster finden
In diesem Stadium kehren Sie höchstwahrscheinlich zu Schritt 1 und 2 zurĂŒck, da die Vorlage, die Sie nicht immer gefunden haben, in allen FĂ€llen wahr ist. Aber nichts, da es nicht geklappt hat, wird es als nĂ€chstes passieren.Anhand eines Beispiels können wir also den folgenden Algorithmus / die folgende Lösungsvorlage formulieren:1. Definieren Sie eine quadratische Matrixth Ordnung;2. Stellen Sie die Matrix einwo - IdentitĂ€tsmatrix th Ordnung;3. Stellen Sie die Matrix ein;;4. Wir wenden die folgenden aufeinanderfolgenden Transformationen auf die Matrizen an, vorausgesetzt, dass
Beim wir bekommen:
4. ĂberprĂŒfen der Vorlage / des Algorithmus
Es gibt einen Algorithmus - es gibt Millionen von Matrizen, um ihn zu testen! Sie können sich ĂŒber diese Vorlage keine Sorgen machen, es ist offensichtlich wahr (persönlich getestet auf der nicht entarteten der möglichen Matrizen). Aber denken Sie daran: Beeilen Sie sich - Sie bringen die Leute zum Lachen . ĂberprĂŒfen Sie also immer die Vorlagen, die Sie erstellt haben, damit Sie nicht wie zum Anfang springen.5. Ăbersetzung des Algorithmus in Code
Der offensichtliche Schritt, alles, was Sie brauchen, ist oft schon in der Syntax der Sprache, und wenn nicht, stört Sie niemand, Klassen und Funktionen zu erstellen, um dieses Problem zu lösen, dann haben Sie einen Algorithmus. Da ich diesen Algorithmus als Teil eines BildungsuniversitĂ€tsprogramms implementiert habe, konnte ich Octave nur fĂŒr die Implementierung verwenden, sodass der gesamte Code, den ich Ihnen prĂ€sentiere, in seiner Syntax vorliegt (er ist Python sehr Ă€hnlich, daher werde ich sein Highlight fĂŒr die Formatierung verwenden):A = input("Enter the matrix A: ")
numOfRows = size(A, 1)
numOfCols = size(A, 2)
if numOfRows ~= numOfCols
disp("Wrong matrix.")
else
n = numOfCols
disp("----------------")
L = eye(3)
disp("Making U = A")
U = A
disp("----------------")
for i=2:n
disp("Step "), disp(i-1)
for j=1:i-1
L(i,j) = U(i,j)/U(j,j)
U(i,:) = U(i,:) - U(j,:)*L(i,j)
end
disp("----------------")
end
disp("Check the answer of L*U: "), disp(L*U)
end
6. Suchen Sie nach fehlgeschlagenen Tests
Sie sollten immer versuchen, Ihren Code zu "brechen". Hier gibt es (offensichtlich) keinen vollstĂ€ndigen âSchutz vor dem Narrenâ, aber ich habe die Annahme zugrunde gelegt, dass die anfĂ€nglich korrekte Matrix eingefĂŒhrt wird.In diesem Schritt sollten Sie alle möglichen Fehler und Ungenauigkeiten in Ihrem Code finden, wodurch auch die Verzerrung des konstruierten Algorithmus aufgedeckt werden kann. Daher sollten Sie hier so viele Auslassungen ausprobieren, wie möglich gewesen wĂ€ren.7. Debuggen Sie fehlgeschlagene Tests
Die logischste und wahrscheinlich erwartete der Schritte. Der Code muss verzerrt und der Algorithmus korrigiert werden. Hier gibt es nichts mehr hinzuzufĂŒgen.Fazit
Ich kann sagen, dass es unwahrscheinlich ist, dass ich diesen Ansatz zur Lösung von Problemen jemals ernst nehmen wĂŒrde, wenn ich nicht schlĂ€frig wĂ€re. Es lohnt sich jedoch, auf diese Methode zu achten - sie ist kurz und all ihre MĂŒhsal besteht nur darin, dass sie angewendet werden muss.Hinweis
Dank der LehrbĂŒcher zur linearen Algebra fĂŒr das Material zur Lösung des Problems.