MATLAB 中的線性方程組
Ammar Ali
2023年1月30日
本教程將討論使用 Matlab 中的 solve()
和 linsolve()
函式求解線性方程組。
使用 MATLAB 中的 solve()
函式求解線性方程組
我們可以使用 Matlab 內建函式 solve()
來求解 Matlab 中的線性方程組。首先,我們可以使用 syms
變數來定義變數。之後,我們可以在 Matlab 中編寫方程。之後,我們需要使用函式 solve()
來求解方程。例如,讓我們在 Matlab 中定義一些方程並使用 solve()
函式找到它們的解。請參閱下面的程式碼。
syms x y z
eq1 = 2*x + y + 2*z == 1;
eq2 = 2*x + 5*y - z == 2;
eq3 = -3*x + 2*y + 6*z == 10;
matx = solve([eq1, eq2, eq3], [x, y, z]);
xValue = matx.x
yVlaue = matx.y
zValue = matx.z
輸出:
xValue =
-82/93
yVlaue =
29/31
zValue =
85/93
如你所見,方程中有三個變數,並且有三個答案。你還可以使用 vapsolve()
函式代替 solve()
函式來獲得數字答案。要使用 vpasolve()
函式,你需要將上面程式碼中的函式名稱 solve
更改為 vpasolve
。如果方程是矩陣形式,你可以使用 linsolve()
函式。
在 MATLAB 中使用 linsolve()
函式求解線性方程組
如果你有矩陣而不是方程,則使用函式 linsolve()
代替 solve()
函式。我們還可以使用 equationsToMatrix()
函式將方程轉換為矩陣形式。例如,讓我們在 Matlab 中定義一些方程並使用 linsolve()
函式找到它們的解。請參閱下面的程式碼。
syms x y z
eq1 = 2*x + y + 2*z == 1;
eq2 = 2*x + 5*y - z == 2;
eq3 = -3*x + 2*y + 6*z == 10;
[matA,matB] = equationsToMatrix([eq1, eq2, eq3], [x, y, z])
matX = linsolve(matA,matB)
輸出:
matA =
[ 2, 1, 2]
[ 2, 5, -1]
[ -3, 2, 6]
matB =
1
2
10
matX =
-82/93
29/31
85/93
solve()
和 linsolve()
函式隨符號數學工具箱一起提供,因此請確保你已安裝工具箱以使用這些函式。
作者: Ammar Ali