matlab非线性方程求解fsolve

懒得上传图片了…以后也不不一定用得到这个
fsolve - 对非线性方程组求解 - MATLAB - MathWorks 中国

匿名函数f=@(x)acos(x),f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x)相当于建立了一个函数文件,%f.m function y=f(x) y=acos(x)

此示例返回迭代输出,展示了一个包含两个方程和两个未知数的方程组的求解过程

1726469465649

F(x)=0 形式重写方程:

1726469479969

x0 = [-5 -5] 开始搜索解。

首先,编写一个函数用来计算 F(方程在 x 处的值)。

1
2
F = @(x) [2*x(1) - x(2) - exp(-x(1));
-x(1) + 2*x(2) - exp(-x(2))];

这个匿名函数接受一个向量x作为输入参数。向量x在这里被假定为包含两个元素,分别用x(1)x(2)表示。

匿名函数返回一个包含两个元素的向量。向量中的第一个元素是表达式2*x(1) - x(2) - exp(-x(1))的值,其中exp(-x(1))表示自然指数函数e-x(1)次方。

向量中的第二个元素是表达式-x(1) + 2*x(2) - exp(-x(2))的值,同样exp(-x(2))表示自然指数函数e-x(2)次方。

这个匿名函数通常可能用于求解方程组或者在其他数值计算方法中作为一个函数表达式来使用。例如,可以使用数值求解器(如fsolve等)来找到使得这个函数返回值为零的向量x的值,从而求解一个非线性方程组。

创建初始点 x0

1
x0 = [-5;-5];

设置选项以返回迭代输出。

1
options = optimoptions('fsolve','Display','iter');

求解方程。

1
[x,fval] = fsolve(F,x0,options)