1、基于问题求解非线性方程组
例:
x=optimvar('x',2); %将x定义为一个二元素优化变量
eq1=exp(-exp(-(x(1)+x(2))))==x(2)*(1+x(1)^2); %创建第一个方程作为优化等式表达式
eq2=x(1)*cos(x(2))+x(2)*sin(x(1))==1/2; %创建第二个方程作为优化等式表达式
prob=eqnproblem; %创建一个方程问题
prob.Equations.eq1=eq1;
prob.Equations.eq2=eq2; %将方程放入问题中
show(prob) %检查问题
x0.x=[0 0]; %从[0,0]点开始求解问题
[sol,fval,exitflag]=solve(prob,x0)
disp(sol.x) %查看解点
2、基于问题求解多项式非线性方程组
例:
已知x是2x2的矩阵,求解
x=optimvar('x',2,2); %将变量x定义为一个2×2矩阵变量
eqn=x^3 == [1,2;3,4]; %用x定义要求解的方程
prob=eqnproblem('Equations',eqn); %用方程创建一个问题
x0.x=ones(2); %从[1,1;1,1]点开始求解问题
sol=solve(prob,x0)
disp(sol.x) %检查解
sol.x^3 %显示解的立方
3、fsolve解非线性方程组
语法:
x = fsolve(fun,x0) %从x0 开始,尝试求解方程fun(x)=0(全零数组)
x = fsolve(fun,x0,options)
x = fsolve(problem)
[x,fval] = fsolve(___)
[x,fval,exitflag,output] = fsolve(___)
[x,fval,exitflag,output,jacobian] = fsolve(___)
例:求解下面两个非线性方程组
(1)先将其转化成的形式
(2)创建root2d.m
function F = root2d(x)
F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);
F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;
(3)
type root2d.m
fun=@root2d;
x0=[0,0];
x=fsolve(fun,x0)
4、迭代输出,展示方程组的求解过程
例:
(1)先将其转化成的形式
(2)
F=@(x)[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))]; %编写一个函数用来算F
x0=[-5;-5]; %创建初始点x0[-5;-5]
options=optimoptions('fsolve','Display','iter'); %返回迭代输出
[x,fval]=fsolve(F,x0,options) %求解
上接非线性https://blog.csdn.net/weixin_73011353/article/details/135141433https://blog.csdn.net/weixin_73011353/article/details/135141433