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. Spring中的循环依赖解决详解

    前言 说起Spring中循环依赖的解决办法,相信很多园友们都或多或少的知道一些,但当真的要详细说明的时候,可能又没法一下将它讲清楚.本文就试着尽自己所能,对此做出一个较详细的解读.另,需注意一点,下文 ...

  2. hibernate.validator 与 jackson

    1.使用hibernate.validator校验非空,在FormData类中 name字段上面加@NotEmpty @NotEmpty(message = "姓名必填") pri ...

  3. vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署

    最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速 ...

  4. python 实现多个线程间消息队列传递,一个简单的列子

    #-*-coding:utf8-*-"""Producer and consumer models: 1. There are many producers and co ...

  5. jvm系列(五):Java GC 分析

    Java GC就是JVM记录仪,书画了JVM各个分区的表演. 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之 ...

  6. 六.html基础

    web前端前几个月学过一段时间,现在在学习一遍,当作复习,最重要的看看web渗透常用的标签! <html></html>  不带任何属性 <body></bo ...

  7. Python——常用模块(time/datetime, random, os, shutil, json/pickcle, collections, hashlib/hmac, contextlib)

    1.time/datetime 这两个模块是与时间相关的模块,Python中通常用三种方式表示时间: #时间戳(timestamp):表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. ...

  8. Java内部类使用注意事项

    Java内部类使用注意事项: 1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class La ...

  9. 第7章 使用springMVC构建Web应用程序 7.1 springMVC配置

    最近在看spring in action第3版,这里搭建一个简单的spring mvc,也算书没白看,当然老鸟可以不屑了,这里只是给自己做个笔记,配置也尽量删烦就简, Spring MVC的核心是Di ...

  10. Codeforces Round #465 &935C. Fifa and Fafa计算几何

    传送门 题意:在平面中,有一个圆,有一个点,问能在这个圆中围出最大的圆的圆心坐标和半径.要求这个最大圆不包含这个点. 思路:比较基础的计算几何,要分三种情况,第一种就是这个点在圆外的情况.第二种是点在 ...