MATLAB 中的线性方程组

本教程将讨论使用 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() 函数随符号数学工具箱一起提供,因此请确保你已安装工具箱以使用这些函数。