fsolve()函数通常用于数值求方程或方程组的解,更常用于求解非线性方程组。其基本结构如下:(可以在matlab命令页面输入help fsolve查询)

fsolve()解决的方程形式为F(X)=0;
用法为:
X = fsolve(FUN,X0,OPTIONS)
或者写为
[x,fval,exitflag]=fsolve(fun,x0,options)
其中fun是方程,x0是初值,需要提前设定,options是一些设定要求,可以用optimset函数来实现;exitflag用以描述出口条件(exit condition)其值如下:
1  fsolve converged to a root.
2  Change in X too small.
3  Change in residual norm too small.
4  Computed search direction too small.
0  Too many function evaluations or iterations.
-1  Stopped by output/plot function.
-2  Converged to a point that is not a root.
-3  Trust region radius too small (Trust-region-dogleg).
从上面看,当exitflag是1的时候是最理想的结果,2,3也可接受,负数则偏差太大或直接错误
举例如下:
1.求解sin(x)-0.5=0
1)直接求解,代码如下:
x=fsolve(@(x)sin(x)-0.5,[1 3])%此处采用匿名函数法@(x)

其中1和3分别是设定的两个初值,一般设定在解附近,若不知道

解,也可随意设置,如果解不知最优,会有一定影响.options不填则默认。其中@(x)sin(x)-0.5也可以写为'sin(x)-0.5'

结果如下:

x =
0.5236 2.6180%可见结果尽量给出初值上最近的值,前后俩个分别对应初值1和3

2)建立m函数(对于函数比较长或者比较复杂的情况)

a)建立m文件
function f=myfun(x)
f=sin(x)-0.5
end         %end可以不写
保存为以myfun.m为名的m函数
b)调用函数
x=fsolve(@myfun,[1 3])
结果为:
x =0.5236    2.6180

如果用以下代码:
[x,fval,exitflag]=fsolve(@myfun,[1 3 8 9])%设定了四个初值,其中@myfun也可以用'myfun'

则会给出偏差值fval,以及exitflag的值,结果如下:

x =0.5236    2.6180    8.9012    8.9012
fval =1.0e-09 *-0.1387   -0.0000   -0.0000   -0.0000
exitflag =1
>> x=fsolve(@(x)sin(x)-0.5,[1 3])

其中fval为真实值与拟合值之间的差,从结果来看是非常理想的。

2.匿名函数可有多个参量,如求解方程:
1)建立m文件
function F = myfun(x,c)
F = [ 2*x(1) - x(2) - exp(c*x(1))-x(1) + 2*x(2) - exp(c*x(2))];
2)设置参数并执行       
c = -1; % define parameter first
x = fsolve(@(x) myfun(x,c),[-5;-5])   %x1和x2的初值都定为-5

结果如下

x =
0.5671
0.5671
fval =
-1.0640e-08
exitflag =
1

分析如下:x1=0.5671,x2=0.5671,差值在-8个数量级,结果理想。

求解方程:

function F = myfun(x,c)
F = [ 16*x(1)+c*x(2)];

c = -1; % define parameter first
[x,fval,exitflag] = fsolve(@(x) myfun(x,c),[-5;-5])

结果如下:

x =-0.3307-5.2918
fval =-4.4409e-15
exitflag =1

matlab fsolve()函数的使用相关推荐

  1. matlab fsolve()函数的使用。

    前言:哎,没想到我最高访问量居然是这篇博文,想了一下重新布局了,因为以前版本的CSDN版本更新,现在的版本阅读性更强了.(更新2019.5) fsolve()函数通常用于数值求方程或方程组的解,更常用 ...

  2. matlab fsolve函数 误差,matlab关于fsolve函数的运用出现的问题

    在网上查找了很多相同问题的答案,但是都没有合适的方法解决我的问题,求大神们指点 K1=442.3926125;K2=45483.17187;K3=0.000253321;K4=22987873.07; ...

  3. matlab fsolve函数 误差,求助 关于matlab中fsolve函数的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 function F=myfun(t) F(1)=9.912.*t(1)-19.84.*t(2)+9.912.*t(3)+0.016.*t(14)-(-0 ...

  4. matlab求解含两个累加公式的方程,使用fsolve 函数求解含两个参数的多个方程问题,希望有会的人帮...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 使用fsolve 函数求解四个方程,a,b是参数,t(1)_t(4)为变量,求解t(1)随a,b变化 function M= SHI_2( t ) a = ...

  5. matlab fsolve 参数,关于 fsolve 函数的使用

    楼主现在正在做一个仿真,遇到一些困难,请各位路过的高手帮帮忙! 问题如下:主函数产生六个参数lamdad, miud, etad,lamdae,miue,etae,function 需要这六个参数中的 ...

  6. matlab计算含参行列式,如何用fsolve函数求一个含参矩阵行列式等于0的方程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 矩阵如下: 令det(A)=0,求w的值. >> syms w; >> A=[exp(i*w*(-1.18)/404),-exp( ...

  7. matlab解行列式方程,如何用fsolve函数求一个含参矩阵行列式等于0的方程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 矩阵如下: 令det(A)=0,求w的值. >> syms w; >> A=[exp(i*w*(-1.18)/404),-exp( ...

  8. fsolve函数求解非线性方程

    对于非线性方程组F(X)=0,用fsolve函数求其数值解.fsolve函数的调用格式为: X=fsolve('fun',X0,option) 其中X为返回的解,fun是用于定义需求解的非线性方程组的 ...

  9. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

最新文章

  1. 30. SQL -- 完整性及约束(1)
  2. 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
  3. mysql error 1231_解决ERROR 1231 (42000): Variable 'time_zone' can't
  4. ubuntu下面的java一键运行脚本
  5. Spring MVC学习总结(14)——SpringMVC测试框架之mockMVC详解
  6. Java开发环境搭建及开发软件和服务器安装与配置
  7. 请求发送者与接收者解耦——命令模式(四)
  8. 文件指针与文件位置指针,文件位置指针相关的库函数
  9. 诛仙斩龙墨雪服务器怎么找不到了,《诛仙3》5月13日服务器数据互通公告
  10. 人生「价值」的三个关键词|《价值》
  11. Android sqlite执行insert,英文单引号报错问题的解决
  12. littlevgl之cont 控件(容器控件)
  13. IDEA解决开两个窗口问题
  14. 9.11 作业自动化安装linux
  15. 避震方法最新自救建议:不要躲在桌子下
  16. 【C语言】——C语言实现科赫雪花及科赫曲线
  17. linux dae文件下载,linux dae命令详解.doc
  18. 2020计算机二级考试题库(含答案)
  19. 我的公众号 - 豆芽儿 软件研发人才生长社区
  20. CMD命令清理电脑历史缓存和Cookies

热门文章

  1. 飞机为什么能飞起来?直到今天,科学家仍然没有答案
  2. QN8027性能调试
  3. python3调用函数len结果不返回字符串长度_Python通过len函数返回对象长度
  4. rbac 一个用户对应多个账号_电商后台系统:管理后台之账号管理(一)
  5. 自定义关机计算机,在win7系统中自定义设置关机壁纸教程介绍
  6. mysql创建新表失败_MySQL创建表失败的问题
  7. android 收不到短信广播,android – 短信广播接收器没有得到textmessage
  8. linux复杂逻辑判断,20.5 shell脚本中的逻辑判断
  9. serverlet 区别_Servlet中/和/*的区别
  10. 数据集按类划分_用特别设计的损失处理非均衡数据