Felmeddelande
"Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = xxxxxxx"
Har fått detta meddelande i tio rader med olika värden för xxxxxx. Kan någon förklara mer specifikt vad detta betyder/kan bero på?
Determinanten för matrisen är nära noll? Försöker du invertera den eller vad gör du?
Kan du visa din kod, så kanske det är lättare att hjälpa :)
Är ganska krångligt men infogar bilder på allt.
Denna sektion som jag kör:
Har fått koden att fungera tidigare, men har lagt till en ekvation nu och det är då det började krångla. Förmodar att det är Newton2 som är problemet då jag även får msg printat efter de andra felmeddelandena. Förstår om det är krångligt att följa, kan förtydliga mer om det behövs.
Hej!
Om är en startapproximation till det det icke-linjära ekvationssystemet så ger Newtons metod en ytterligare approximation där uppdateringsvektorn beräknas som en matrismultiplikation med en invers matris,
.
Om matrisen -- som innehåller samtliga första ordeningens partiella derivator till , beräknade i startapproximationen -- har två eller fler kolonner som är nästan perfekt korrelerade (linjärt beroende) så kommer dess determinant att vara nära noll och matrisens konditionstal att vara mycket högt; det medför att inversen inte kan beräknas ordentligt då den kommer att innehålla enormt stora tal (division med nästan-noll).
Du skulle även kunna pröva att finna minsta-kvadrat-approximationer till uppdateringsvektorn genom att beräkna
.
Det kan även vara så att du har valt en olämplig startapproximation, , och att ett annat val av ger dig en matris som har en determinant som inte är nära noll.
Det känns som att detta kanske är mer av ett kemi-problem då. Provat att ändra approximationen åt olika håll och öka antalet iterationer men får ändå samma felmeddelande samt att "det krävs mer än kmax=... för att bestämma nollstället.
Man brukar undvika att invertera matriser. Man gör hellre en LR-uppdelning eller nåt liknande. Om problenet är inherent numeriskt instabilt hjälper inte det, men jag vet inte om det borde vara så med din uppgift.