小工具知识网

当前位置: 首页 > 行业知识 > Matlab:解非线性方程组

行业知识

Matlab:解非线性方程组

2026-11-04 06:32:43 来源:互联网转载

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.mfun=@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))]; %编写一个函数用来算Fx0=[-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

上一篇:JavaScript颜色插件编写实战教程,实用指南与技巧分享

下一篇:怎么找到web服务器?