Mi s-a pus o întrebare în care mi se cere să rezolv un sistem de ecuații liniare. În întrebare se precizează că ar trebui să setez o matrice A și un vector coloană b pentru a rezolva ecuația Ax=b, , unde x este vectorul coloană (w x x y z).
A = [1 1 1 1; 0 1 4 -2; 2 0 -2 1; 1 -2 -1 1]
b = [28;7;22;-4]
A1 = inv(A).*b
sum(A1,2)
Asta am făcut până acum, însă știu că răspunsul pe care mi-l dă MATLAB este incorect, deoarece soluțiile corecte ar trebui să fie w=10,5, x=9, y=2,5, z=6.
Poate cineva să mă îndrume în direcția corectă/ să-mi arate unde greșesc? (Sunt destul de nou în MATLAB, așa că sunt foarte nesigur în legătură cu toate acestea).Mulțumesc.
A = [1 1 1 1; 0 1 4 -2; 2 0 -2 1; 1 -2 -1 1];
b = [28;7;22;-4];
A1 = A b;
ans = sum(A1,2);
Pentru o referință în ceea ce privește operator, vă rugăm să citiți acest lucru: https://it.mathworks.com/help/matlab/ref/mldivide.html
Codul corect pentru a folosi tehnica dvs. ar fi::
A1 = inv(A) * b;
dar, după cum puteți observa, analizatorul de cod Matlab va indica faptul că:
Pentru rezolvarea unui sistem de ecuații liniare, inversa amatrixului are în primul rând o valoare teoretică. Nu folosiți niciodată inversa amatrixului pentru a rezolva un sistem liniar Ax=b cu x=inv(A)*b, deoarece este lent și imprecis.
Înlocuiți inv(A)*b cu Ab.
Înlocuiți b*inv(A) cu b/A.
și că:
INV(A)*b poate fi mai lent decât Ab
- Rețineți că menționarea
.*
este un operație pe elemente poate fi utilă. – > .
.
dupăinv(A)
pe al treilea rând. Nu aveți nevoie de înmulțirea în funcție de element aici – > Por Sardar Usama.