24小时热门版块排行榜    

查看: 866  |  回复: 6

kingswordscu

铜虫 (正式写手)

[交流] 【求助】关于matlb中的fzero求教 已有6人参与

我是个新手,对这个函数理解不清楚,谁能深刻揭示一下这个函数的作用呢?为什么我求1.57左右的零点和1.58左右的零点不一样呢,如下:
y=fzero('sin',1.57)

y =

  1.5977e-021
y=fzero('sin',1.58)

y =

-1.3952e-021
搞不懂
回复此楼
go!!!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luoxitc

新虫 (初入文坛)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与应助! 2010-12-07 21:29:51
X = FZERO(FUN,X0) tries to find a zero of the function FUN near X0,
    if X0 is a scalar.  It first finds an interval containing X0 where the
    function values of the interval endpoints differ in sign, then searches
    that interval for a zero.  FUN is a function handle.  FUN accepts real
    scalar input X and returns a real scalar function value F, evaluated
    at X. The value X returned by FZERO is near a point where FUN changes
    sign (if FUN is continuous), or NaN if the search fails.
想有件T恤,上面印着空姐的头像
2楼2010-12-06 19:23:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kingswordscu

铜虫 (正式写手)

看过了,但是还是不理解

看过了,但是还是不理解,如何解释我举得实例呢
go!!!
3楼2010-12-07 16:32:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


小木虫(金币+0.5):给个红包,谢谢回帖交流
都是计算误差而已,其实真解是0
>> y=fzero('sin',0)

y =

     0

初值靠近谁就会得到附近的值

>> y=fzero('sin',3.2)

y =

    3.1416



在0处的两个近似解都已经小于系统默认的Tolx值(10^-6)了
4楼2010-12-08 09:40:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢应助! 2010-12-12 20:36:54
sin(1.57) = 0.999999683
sin(1.58) = 0.999957646

显然你在这两点找零点,因为离零点太远, 所以算法具有不稳定性。且x0附近的值不异号,所以得到你看的两个结果。而这两个结果其实代入以后,都接近于0了。
5楼2010-12-09 18:58:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snail594

金虫 (小有名气)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢应助! 2010-12-12 20:37:04
这是由于fzero其实是一个综合比较复杂的数值解法,得到的为数值解,是在默认的精度允许范围内的解,而0是解析的精确解
Inlearningwetrust
6楼2010-12-10 10:35:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangziwade

新虫 (初入文坛)


余泽成(金币+1):欢迎新虫,常来程序语言版! 2010-12-12 20:37:23
都是近似计算的
7楼2010-12-10 12:18:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kingswordscu 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见