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

简介: 之前看到网上的一些资料良莠不齐,各种转载之类的,根本无法解决实际问题,所以我打算把自己的学到的总结一下,以实例出发讲解fsolve。

示例如下:

\[\begin{cases}
2x_1 - x_2 = e^{ax_1} \\
-x_1 + 2x_2 = e^{ax_2} \\
\end{cases}
\]

具体的求解过程在后面 点击跳转

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处
2 X的变化小于限制
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

fslove - Matlab求解多元多次方程组的更多相关文章

  1. MATLAB利用solve函数解多元一次方程组

    matlab求解多元方程组示例: syms k1 k2 k3; [k1 k2 k3] = solve(-3-k3==6, 2-k1-k2+2*k3==11, 2*k1+k2-k3+1==6)或者用[k ...

  2. 用Matlab求解微分方程

    用Matlab求解微分方程 解微分方程有两种解,一种是解析解,一种是数值解,这两种分别对应不同的解法 解析解 利用dsolve函数进行求解 syms x; s = dsolve('eq1,eq2,.. ...

  3. [Matlab]求解线性方程组

    转自:http://silencethinking.blog.163.com/blog/static/911490562008928105813169/ AX=B或XA=B在MATLAB中,求解线性方 ...

  4. matlab 求解线性规划问题

    线性规划 LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为: minf(x):待最小化的目标函数(如果问题本 ...

  5. MATLAB求解非线性方程组

    matlab中有专门的solve函数来解决方程组的(a-x)^2+(b-y)^2=e^2(C-x)^2+(D-y)^2=v^2已知a,b,c,d,e,v 值求解 X,Y 请问用 matlab 如何写, ...

  6. MATLAB求解方程与方程组

    1.      solve函数 ①求解单个一元方程的数值解 syms x; x0 = double(solve(x +2 - exp(x),x)); 求x+2 = exp(x)的解,结果用double ...

  7. MATLAB求解非齐次线性方程组

    例如方程组: 法1:左除法 >> A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4]; >> x=A\b x = 1.4818 -0.4606 0 ...

  8. Matlab——数值计算——单个代数方程 代数方程组

    方程求解 求解单个代数方程 MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等 号),则在求解之前函数solve将表达式置成等于0. >> syms a syms b ...

  9. MATLAB求解代数方程、微分方程的一些常用指令

    MATLAB版本:R2015b 1.求解符号矩阵的行列式.逆.特征值.特征向量 A = sym('[a11, a12; a21, a22]');deltaA = det(A)invA = inv(A) ...

随机推荐

  1. Java之Exception

    Exception这个东西,程序中必须会有的,尽管我们很不乐意看到它,可是从另一个角度考虑,有异常则说明程序有问题,有助于我们及时改正.有的时候程序出错的原因有很多,比如不合法的输入.类型.空指针甚至 ...

  2. UGUI的图集处理方式-SpriteAtlas的前世今生

    最糟糕的是人们在生活中经常受到错误志向的阻碍而不自知,真到摆脱了那些阻碍时才能明白过来. —— 歌德 说到UGUI的图集初学者可能觉得没什么难度,包括我刚开始接触的时候也是,甚至你在开发的时候只需要把 ...

  3. Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III)

    Leetcode之回溯法专题-216. 组合总和 III(Combination Sum III) 同类题目: Leetcode之回溯法专题-39. 组合总数(Combination Sum) Lee ...

  4. SpringBoot第二十四篇:应用监控之Admin

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章(S ...

  5. 基于Python的Appium环境搭建合集

    自动化一直是测试圈中的热聊,也是大家追求的技术方向.在测试中,往往回归测试也是测试人员的“痛点”.对于迭代慢.变更少的功能,就能用上自动化来替代人工回归,减轻工作量. 问题 在分享环境搭建之前,先抛出 ...

  6. LuoGu-P1239计数器-强大的贡献

    P1239 计数器 题意:就是求从1到n间,1-9一共出现的次数 这道题直接暴力是不科学的,因为N有 1e9: 然后我就看到了一个很好的从贡献思考的方法: ——>转自洛谷学神的方法: 楼下dal ...

  7. Rikka with Prefix Sum(组合数学)

    Rikka with Prefix Sum 题目描述 Prefix Sum is a useful trick in data structure problems. For example, giv ...

  8. CF 987C Three displays DP或暴力 第十一题

    Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  9. Net Core DocXCore 实现word模板导出

    实际工作中,往往有这样的需求,需要导出word,还有各种各样的样式,于是有了word模板导出. 实现以下几个需求: 1.表单导出 2.表格导出 3.表单表格混合导出 4.实际用例测试 解决方案: 实现 ...

  10. 一文读懂 Android TouchEvent 事件分发、拦截、处理过程

    什么是事件?事件是用户触摸手机屏幕,引起的一系列TouchEvent,包括ACTION_DOWN.ACTION_MOVE.ACTION_UP.ACTION_CANCEL等,这些action组合后变成点 ...