自学内容网 自学内容网

MATLAB方程求解:2.非线性方程组

非线性方程组

多项式方程根的求解——roots

r=roots ( p )

  • 以列向量的形式返回p表示的多项式的根;
  • 输入p是一个包含n+l多项式系数的向量,以xn系数开头。
    0系数表示方程中不存在的中间幂。
    例如:p[32-2]表示多项式3x2+2x-2.
  • roots函数对
    p1x^n+…+pnx +Pn+1=0
    格式的多项式方程求解,包含带有非负指数的单一变量的多项式方程。

例子:

p=[4 0 -1 1 -3];
r=roots(p);
r

求解一元非线性方程的根——fzero

[x,fval,exitflag,output]=fzero(fun,x0,options)

  • 求解一元非线性方程fun(x)=0的根;
  • 此解是fun(x)变号的位置;fzero无法求函数例如x2的根;
  • 给定起始点x0;
  • 使用options修改求解过程;
  • x:求解得到的根;
  • fval:x处对应的fun的值;
  • exitflag:终止条件标识;
  • output:包含求解过程信息的结构体

例子:

clear;clc;
fun=@(x)sin(cosh(x));
x0=1;
options=optimset('PlotFcns',...
{@optimplotx,@optimplotfval});
x=fzero(fun,x0,options)

非线性方程组求解——fsolve

[x,fval,exitflag,output,jacobian]=fsolve(fun,x0,options)

  • 求解(非线性)方程组fun(x)=0的,x是自变量构成的向量;
  • x0是起始点(向量);
  • options:优化计算相关选项设置;
  • x:方程组的解;fval:方程组在x的值;
  • exitflag:结束条件标识;
  • output::包含优化过程的结构体;
  • jacobian:返回fun在x处的jacobian矩阵。

解x处的jacobian矩阵,jacobian(i,j)是fun(i)关于x(j)在x处的偏导数。

例题:求解下列非线性方程组:

将方程转化为F(x)=0的形式:

建立描述方程组的函数文件:

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;
return;
end

调用fsolve求解:

fun=@root2d;
x0=[0,0];
x=fsolve(fun,x0)

原文地址:https://blog.csdn.net/m0_75029367/article/details/142367702

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!