matlab求解非线性方程(组)、矩阵方程

matlab中求解非线性方程有很多函数,但大多数函数的求解结果准确性并不高,但利用matlab自带的迭代算法,则可以大大提高准确性,其中fslove函数是首推的求解函数,函数自带matlab提供的迭代算法,并且fsolve函数编写相对容易。

求解非线性方程:

首先设置句柄,此为单独一个代码程序liyihao,方便调用所求函数。

function y=liyihao(x);
y=0.8*exp(-6*x)*sin(30*x)-0.1; 
end

再设置求解函数代码。

clear;clc;close all;
format long   ;  % 查看小数点后更多的位数
x0=0.3;
options=optimoptions('fsolve','Display','iter','FunctionTolerance',1e-8,'StepTolerance',1e-8);%这里建议大家通过help查阅option的功能,我这里选则并自定义了展示、结果、步长的参数。
[xs,fval,exitflag]=fsolve(@liyihao,x0,options);

求解非线性方程组:

与上述求解方程同理,还是先定义句柄代码,这里需要注意,我们用X(1)、X(2)替换了x、y。

function Y=liyihao(X)
Y1=3*X(1)-X(2)^3-4; 
Y2=2*X(1)^2+5*X(2)^2+3*X(2)-8; 
Y=[Y1;Y2];
end

再设置求解代码。

clear;clc;close all;
format long;
X0=[-2;1];
options=optimoptions('fsolve','Display','iter','FunctionTolerance',1e-8,'StepTolerance',1e-8);
[XS,fval,exitflag]=fsolve(@liyihao,X0,options);

矩阵方程求解:

function Y=liyihao(X);
Y=X*X*X-[1 2;3 4];
end
clear;clc;close all;
format long;
X0=[1 1;1 1];
options=optimoptions('fsolve','Display','iter','FunctionTolerance',1e-8,'StepTolerance',1e-8);
[XS,fval,exitflag]=fsolve(@liyihao,X0,options);

fsolve函数可以说是求解非线性方程最优解,美中不足就是如果设置的初值不理想,可能会得到错误结果,因此我们对于设置范围要有一定的提前计算,我们可以选择图解法先大致的确定处值设定范围,来保证我们的结果是能够求解正确的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值