fslove - Matlab求解多元多次方程组

fslove - Matlab求解多元多次方程组

简介: 之前看到网上的一些资料良莠不齐,各种转载之类的,根本无法解决实际问题,所以我打算把自己的学到的总结一下,以实例出发讲解fsolve。
示例如下:
{ 2 x 1 − x 2 = e a x 1 − x 1 + 2 x 2 = e a x 2 \begin{cases} 2x_1 - x_2 = e^{ax_1} \\ -x_1 + 2x_2 = e^{ax_2} \\ \end{cases} {2x1x2=eax1x1+2x2=eax2
具体的求解过程在后面 点击跳转

1. fsolve的基本使用

调用格式一:

X = fslove(FUN,X0)

功能:给定初值X0,求解方程组的解,X就是返回的解

调用格式二:

X = fsolve(FUN,X0,OPTIONS)

功能:同上,并解决默认参数优化为options指定值

调用格式三:

[X,FVAL] = fslove(FUN,X0,…)

功能:返回X处目标函数值

调用格式四:

[X,FVAL,EXITFLAG] = fslove(FUN,X0,…)

功能:返回EXITFLAG的值,用来描述计算退出的条件,其中EXITFLAG取值和相应的含义如下表。(主要作为判断条件来使用)

EXITFLAG含义
1函数fslove收敛于解X处
2X的变化小于限制
3残差变化小于限制
4重要搜索方向小于限制
0达到最大迭代次数或者评价标准
-1算法由输出函数终止
-2算法无法收敛到解的点
-3信赖域半径太小
-4线搜索在当前不能充分减少残差

调用格式五:

[X,FVAL,EXITFLAG,OUTPUT] = fslove(FUN,X0,…)

功能:包含OUTPUT的输出

调用格式六:

[X,FVAL,EXITFLAG,OUTPUT,JACOB] = fslove(FUN,X0,…)

功能:返回雅各比矩阵

2.方程求解

(1) 编制函数文件fun.m

编写函数主要用来书写函数的表达式。

function f = fun(x,a,b,c)  % b c可以是随意的参数
f1 = 2*x(1)-x(2)-exp(a*x(1));
f2 = -x(1)+2*x(2)-exp(a*x(2));
f = [f1;f2];

% 也可以写成下面的方式
% f = [2*x(1)-x(2)-exp(a*x(1));-x(1)+2*x(2)-exp(a*x(2))];

(2) 给定函数的参数值和初值(解在周围寻找)

调用求解函数 fslove

>> a = -1;
>> x0 = [-5,-4];
>> [x,FVAL,EXITFLAG,OUTPUT,JACOB] = fsolve(@(x)fun(x,a,1,1),x0);

@(x)fun(x,a,1,1)调用fun函数,函数的参数是a,1,1,求解x的值
执行后调用x返回,也就是X的解。

x =

  0.5671   0.5671

调用FVAL显示在目标解的函数值,可以看出,FVAL越小越接近真实解。

FVAL =

  1.0e-09 *

  -0.4242
  -0.3753

调用EXITFLAG 结合上面的表格可以知道,函数FSOLVE收敛于解X处。

EXITFLAG =

  1

  • 25
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值