Je me suis assis sur le cours Coursera. Le cours était destiné aux débutants en Java, et dans l'un des didacticiels vidéo, le sujet 7 étapes pour résoudre les problÚmes a été soulevé .Moi, en toute conscience, j'ai écouté le tutoriel vidéo, je me suis dit, cette affaire est allée loin et depuis longtemps.Le reste du cours a été facile, détendu. Mais, sur l'un des sujets de l'université, à savoir la soi-disant «Programmation scientifique», la tùche suivante est apparue:Résoudre un systÚme d'équations linéaires en utilisant l'expansion de matrice suivante :
OĂč Est la matrice triangulaire infĂ©rieure, et Est la matrice triangulaire supĂ©rieure.
Le sujet de l'algĂšbre linĂ©aire, que nous avons abordĂ© au 1er cours. Franchement, je me suis souvenu des principes gĂ©nĂ©raux des opĂ©rations avec des matrices, des vecteurs et le saint des saints - la mĂ©thode de Gauss. Si vous y rĂ©flĂ©chissez avec le cerveau, alors nous n'avons Ă©tudiĂ© aucune dĂ©composition LU, mais la mĂ©thode "google" aide toujours. SauvĂ©, jusqu'Ă ce point.J'ai trouvĂ© un algorithme gĂ©nĂ©ral pour trouver des matrices et , mais Ă trois heures et demie du matin, aucun cafĂ© ne m'a donnĂ© l'occasion de le mettre en Ćuvre correctement (Ă©tant donnĂ© que nous y avons codĂ© sur Octave). En fin de compte, j'ai paniquĂ© et j'ai dĂ©cidĂ© d'Ă©couter nĂ©anmoins le proverbe intelligemment nommĂ©.1. DĂ©crivez le problĂšme Ă la main
Tout ce qui vous manque dans la vie, c'est de comprendre quel est rĂ©ellement le problĂšme. Prenons un exemple du problĂšme ci-dessus et Ă©crivons-le sur une feuille de papier. Dans le bon sens, les conditions suivantes d'existence de matrices doivent ĂȘtre remplies et :- la matrice inverse doit exister, Je veux dire ;- tous les mineurs majeurs ne doivent pas ĂȘtre dĂ©gĂ©nĂ©rĂ©s, c'est-Ă -direEh bien, c'est pourquoi nous avons au moins besoin d'un «test de dupes», car il y a sĂ»rement des gens intelligents qui veulent utiliser la matrice qui ne nous convient pas. Mais nous allons omettre cela pour l'instant.Le problĂšme est clair pour nous: trouver des matrices et qui tombera dans les conditions ci-dessus. AprĂšs avoir essayĂ© de google les mĂ©thodes de solution, il est peu probable que vous puissiez implĂ©menter correctement l'algorithme la premiĂšre fois (si vous n'ĂȘtes pas bon en algĂšbre linĂ©aire). AprĂšs avoir traversĂ© des tonnes de tentatives, nous dĂ©velopperons trĂšs probablement une sĂ©quence d'actions pour rĂ©soudre notre problĂšme, puis nous passerons Ă l'Ă©tape 2.2. DĂ©crivez ce que vous avez fait
Prenons la matrice comme exemple
Maintenant, nous lui appliquons notre méthode de Gauss et éliminons les éléments inutiles de la 3Úme ligne, en soustrayant la premiÚre ligne de celle-ci, multipliée par le rapport du premier élément de 3 lignes au premier élément de 1 ligne:
Maintenant, débarrassez-vous du deuxiÚme élément de la ligne 3 avec une action similaire:
En conséquence, nous obtenons la matrice
Et maintenant, les coefficients que nous avons trouvés (le résultat du rapport des éléments ) prendre les valeurs de la matrice , et obtenir
En regardant Ă travers le modĂšle, n'est-ce pas?3. Trouver des modĂšles
Ă ce stade, vous retournerez probablement aux Ă©tapes 1 et 2, car le modĂšle que vous n'avez pas toujours trouvĂ© sera vrai pour tous les cas. Mais rien, car cela n'a pas fonctionnĂ©, cela se produira ensuite.Ainsi, sur la base d'un exemple, nous pouvons formuler le modĂšle d'algorithme / solution suivant:1. DĂ©finir une matrice carrĂ©ee ordre;2. DĂ©finissez la matriceoĂč - matrice d'identitĂ© e ordre;3. DĂ©finissez la matrice;4. Nous appliquons les transformations successives suivantes aux matrices, Ă condition que
Ă on a:
4. Vérification du modÚle / algorithme
Il y a un algorithme - il y a des millions de matrices pour le tester! Vous ne pouvez pas vous inquiĂ©ter de ce modĂšle, c'est Ă©videmment vrai (personnellement testĂ© sur la plus non dĂ©gĂ©nĂ©rĂ©e des matrices possibles). Mais souvenez-vous: dĂ©pĂȘchez-vous - vous faites rire les gens . VĂ©rifiez donc toujours les modĂšles que vous avez créés afin de ne pas continuer Ă sauter comme un sacrĂ© au tout dĂ©but.5. Traduction de l'algorithme en code
L'étape évidente, tout ce dont vous avez besoin est souvent déjà dans la syntaxe du langage, et sinon, personne ne vous dérange pour créer des classes et des fonctions pour résoudre ce problÚme, alors vous avez un algorithme. Depuis que j'ai implémenté cet algorithme dans le cadre d'un programme universitaire universitaire, je ne pouvais utiliser que Octave pour l'implémentation, donc tout le code que je vous présente est dans sa syntaxe (il est trÚs similaire à Python, donc j'utiliserai son surlignage pour le formatage):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. Recherche d'échecs de tests
Vous devriez toujours essayer de «casser» votre code. Ici (Ă©videmment) il n'y a pas de «protection complĂšte contre le fou», mais j'ai pris comme base l'hypothĂšse que la matrice initialement correcte sera introduite.Ă cette Ă©tape, vous devriez trouver toutes les erreurs, inexactitudes possibles dans votre code, Ă la suite desquelles le biais de l'algorithme construit peut Ă©galement ĂȘtre rĂ©vĂ©lĂ©. Par consĂ©quent, ici, vous devriez essayer autant d'omissions qui auraient pu ĂȘtre faites.7. DĂ©boguer les tests ayant Ă©chouĂ©
La plus logique et probablement attendue des Ă©tapes. Le code doit ĂȘtre biaisĂ© et l'algorithme corrigĂ©. Il n'y a rien de plus Ă ajouter ici.Conclusion
Je peux dire qu'il est peu probable que je prenne jamais au sĂ©rieux cette approche pour rĂ©soudre des problĂšmes, sinon pour mon Ă©tat de somnolence. Mais il vaut la peine de prĂȘter attention Ă cette mĂ©thode - elle est courte, et toute sa pĂ©nibilitĂ© consiste uniquement dans le fait qu'elle doit ĂȘtre utilisĂ©e.Remarque
Merci aux manuels d'algÚbre linéaire pour le matériel pour résoudre le problÚme.