Vinnaren i pepparkakshustävlingen!
2014-02-12, 20:34
  #1
Medlem
TroLLisGoNNaTrolls avatar
Jag sitter och försöker fila på en funktion som ska spotta ut snittet av tusen matrisers determinant. Det mesta fungerar FÖRUTOM triangulering när en ful liten nolla söker sig in i diagonalen. Målet är att skriva ett script som sorterar om raderna så att nollan (förhoppningsvis) inte hamnar i diagonalen.
Anledningen till att nollan inte ska vara där är att det senare i funktionen kommer ett script som ordnar en upper triangle matris av nämnda matris och då hamnar denna nollan som nämnare i ett bråk vilket ger värdet oändligt och detta sabbar hela resultatet av. Hjälp mig snälla!
Citera
2014-02-13, 00:20
  #2
Medlem
Du får nog lägga in lite kod om du vill ha specifik hjälp. Värt att nämna är att det naturligtvis finns en metod i MATLAB för att beräkna determinanten för en matris som med största sannolikhet är effektivare än det du försöker göra. Du anropar den med det(A).

Om du nu nödvändigtvis vill göra din egen metod så kan du först börja med att gaussa matrisen, och sedan ta produkten av diagonalelementen på den triangulära matrisen du får. Det låter som att det är det du försöker göra. Problemet uppstår när du vill skapa nollor i kolonn j genom att addera multipler av rad j?

Detta är enkelt att åtgärda, om A(j,j) = 0 undersöker du om det finns något element i A, säg A(k,j), som ligger under A(j,j) (dvs k > j) och som är nollskilt. Om så är fallet byter du helt enkelt plats på rad k och j, och fortsätter som du gjorde innan. Om det inte finns något sådant element måste determinanten vara 0 så du kan returnera 0.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback