使用 matlab 求解多元非线性方程组

前言: 有朋友问我如何使用 matlab 求解方程组,他查不到,且不太会写代码,我查了一下,总结了个模板。

假设要解一个三元方程组如下:

{ x 2 + sin ⁡ y − z = 100 x − y + z = 5 x z + cos ⁡ y = 6 z \left\{\begin{aligned} x^2 + \sin{y} - z & = & 100 \\ x - y + z & = & 5 \\ xz + \cos{y} & = & 6z \\ \end{aligned}\right. x2+sinyzxy+zxz+cosy===10056z

我们的求解过程如下。

% 首先声明符号变量
syms x y z;

% 列出等式,字符串形式,因此要加单引号
eq1 = 'x^2 + sin(y) - z = 100';
eq2 = 'x - y + z = 5';
eq3 = 'x * z + cos(y) = 6 * z';

% 使用 solve() 函数求解
[x, y, z] = solve(eq1, eq2, eq3, 'x', 'y', 'z')

matlab 针对复杂的方程使用数值计算的方式求解,此时x, y, z应该已经在你的工作区里。你也可以在控制图输入x等变量名称查看数值解。

警告: Cannot solve symbolically. Returning a numeric approximation instead. 
> In solve at 306
  In equations at 14 
 
x =
 
10.044861348830706718130912031098
 
 
y =
 
4.9795861545146561508942123172393
 
 
z =
 
-0.06527519431605056723669971385847

你可能感兴趣的:(matlab)