Stelsels lineaire vergelijkingen: Stelsels lineaire vergelijkingen oplossen in MATLAB

Theorie Stelsels oplossen via linsove en solve

MATLAB heeft voldoende ingebouwde faciliteiten om stelsels lineaire vergelijkingen numeriek op te lossen. We illustreren ze aan de hand van het stelsel \[ \left\{\begin{array}{rrrrrl} x & + & 2y & + & 3z & =\;2\\ & & y & + & 2z & =\;1\\ 3x & + & y & + & z & =\;3 \end{array}\right. \] met één oplossing, namelijk \[ \cv{x\\y\\z}=
\left(\!\!\begin{array}{r} 1\\-1\\1\end{array}\right)\]

We beginnen met het stelsel van vergelijkingen in te toetsen in een MATLAB sessie en dan de bijpassende matrixvorm te bepalen met het commando equationsToMatrix.

>> syms x y z
>> sys = [x + 2*y + 3*z == 2, y + 2*z == 1, 3*x + y + z == 3];
>> [A,b] = equationsToMatrix(sys)
A =
[ 1, 2, 3]
[ 0, 1, 2]
[ 3, 1, 1]
b =
2
1
3

We kunnen nu linsolve gebruiken om de vector \(\vec{v}\) te vinden zodanig dat \(A\vec{v}=\vec{b}\)

>> v = linsolve(A,b)
v =
  1
 -1
  1

De oplossing van het oorspronkelijke stelsel staat hier voor \(\vec{v}=\cv{x \\ y \\ z}\) en deze oplossing hadden we ook via solve kunnen vinden zonder op de matrixvorm over te gaan.

>> opl = solve(sys, [x, y z]);
>> v = [opl.x, opl.y, opl.z]; v
v =
[ 1, -1, 1]

Voordeel van de matrixvorm is dat je de theorie voor het oplossen van vergelijkingen beter in de hand hebt. Zo kun je bijvoorbeeld Gauss-eliminatie toepassen om het stelsel op te lossen. De naam van de functie rref is een acroniem voor reduced row echelon form, iets wat wij de (rij)gereduceerde trapvorm noemen.

>> Ab = [A,b];  Ab  % de gerande matrix
Ab =
[ 1, 2, 3, 2]
[ 0, 1, 2, 1]
[ 3, 1, 1, 3]
>> rref(Ab)   % berekening van de gereduceerde trapvorm
ans =
[ 1, 0, 0,  1]
[ 0, 1, 0, -1]
[ 0, 0, 1,  1]
>> ans(:,4)  % selectie van de vierde kolom
ans =
  1
 -1
  1

In MATLAB kun je dit ook uitrekenen door 'omgekeerde deling':

>> A\b
ans =
  1
 -1
  1

About us ⋅ Help ⋅ Privacy ⋅ Terms and conditions
Copyright © 2023 SOWISO