Încercarea de a rezolva un sistem de ecuații liniare în matlab (Programare, Matlab, Matrix, Ecuație Liniară)

F. Wotton a intrebat.

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.

Comentarii

  • Typo. Aveți un extra . după inv(A) pe al treilea rând. Nu aveți nevoie de înmulțirea în funcție de element aici –  > Por Sardar Usama.
1 răspunsuri
Tommaso Belluzzo
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

Comentarii