找回密码
 注册
关于网站域名变更的通知
查看: 460|回复: 1
打印 上一主题 下一主题

MATLAB求解方程之fzero函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-16 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
fzero很多情况下, solve 并不能求得方程的解析解,这时可以采用数值法求解。
( Z8 Y" g# @2 w  X: I  e- m' Y2 A数值求解法包括 fzero 和 fsolve,其区别在于 fzero 只适用于求解一元函数零点,而 fsolve 适用于求解多元函数零点(包括一元函数)。
+ B8 c8 X6 ?. v1 ?当求解一元函数零点时,推荐优先使用 fzero,原因是 fzero 求解一元方程往往更容易,它不仅支持提供初值的搜索,还支持在一个区间上进行搜索。 8 E, U; F* I; F2 {* J. ~: {

& v6 J! j# Q; j3 k+ ?$ Vfzero 的常用形式:
  • x = fzero(fun,x0)
  • [x,fval] = fzero(fun,x0)
    2 U% Z5 P& d8 t4 M3 K" D9 e  v% d0 r
其中 fun 为函数句柄, x0 为搜索初值, fval 为求解误差。 ; x$ p7 k, \7 h$ z: h; e  F
  • %例:一元方程 sin(x)+cos(x)^2 = 0
  • y = @(x)sin(x)+cos(x).^2;   
  • [x,fval] = fzero(y,1)  %1为搜索初值! E# x, D& l/ N4 v4 k) E( p
若方程有多个零点,fzero 只能根据你提供的初值求得最靠近初值的一个零点,如果希望求得多个零点,只能够通过改变初值来得到不同的零点。
4 W- Z4 j9 J- E$ i/ F+ Z0 R% F对于初值的选取,目前来说没有什么比较好的办法,只能够通过分析方程的性质,或者通过作图的方法去寻找一个比较靠近零点的初值。另外,fzero 能够提供区间搜索,注意区间两端的端点函数值符号需要反向:
  • y = @(x)sin(x)+cos(x).^2;  
  • [x,fval] = fzero(y,[-1 1])     %fzero在[-1,1]这个区间进行搜索
    , X, O" b0 r1 ^+ L7 t8 @
建议尽量用区间搜索的方式来求解,因为这种方法比单纯的提供一个初始值的运算速度要快一些。而且新版本的 MATLAB 中关于此函数还有多个参数的形式,读者可以参考相关的 help。
2 b0 k$ B5 H) ?) l$ `

该用户从未签到

2#
发表于 2020-12-16 18:44 | 只看该作者
MATLAB求解方程之fzero函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 19:50 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表