用MATLAB求 x^3-2*x-5=0在[0,3]的解
a=0;fa=-5;b=3;fb=16;whileb-a>eps*bx=(a+b)/2;fx=x^3-2*x-5;iffx>0b=x;elsea=x;endendx程序是...
a = 0; fa = -5;
b = 3; fb = 16;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx>0
b = x;
else
a = x;
end
end
x
程序是上面的那样,我的疑问是while语句中为何有b-a > eps*b?,记得用二分法求解方程的时候是选取两个函数的乘积的正负来判断啊,这里怎么是用b-a > eps*b来判断啊? 展开
b = 3; fb = 16;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx>0
b = x;
else
a = x;
end
end
x
程序是上面的那样,我的疑问是while语句中为何有b-a > eps*b?,记得用二分法求解方程的时候是选取两个函数的乘积的正负来判断啊,这里怎么是用b-a > eps*b来判断啊? 展开
1个回答
展开全部
不管是用两数值乘积的正负来判断,还是用b-a来判断,效果是一样的。
因为在你的这段程序中,始终保持了b>a。分析如下:
最开始时,在区间[0,3]内,a=0取最小值,b=3取最大值,且fa对应的是负数,fb对应的是正数;
找到中点,x=(a+b)/2,并求出fx,当fx为正时,说明方程的根在[a,x]中间,所以,要令b=x;
若fx为负,说明方程的根在[x,b]中间,那就要令a=x;由第2步可知,始终都是b>a,当b与a越来越接近的时候,既可以认为(a+b)/2就是方程的根。
所以用b-a的差值做收敛判据是可以的。
追问
谢谢你的回答,可是我想多问一句,可以编一个程序用的两个函数的乘积的正负的二分法来解这个方程吗?
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询