基于matlab的二分法(Bisection method)查找(附代码)
二分法(Bisection method) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点.
基于matlab的二分法
一、二分法定义
二分法(Bisection method) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点。
二、二分法算法
给定精确度
ξ
ξ
ξ,用二分法求函数
f
(
x
)
f(x)
f(x)零点近似值的步骤如下:
1.确定区间[a,b],验证
f
(
a
)
⋅
f
(
b
)
<
0
f(a)·f(b)<0
f(a)⋅f(b)<0,给定精确度
ξ
ξ
ξ.
2.求区间(a,b)的中点c.
3.计算
f
(
c
)
f(c)
f(c).
(1) 若
f
(
c
)
=
0
f(c)=0
f(c)=0,则c就是函数的零点;
(2) 若
f
(
a
)
⋅
f
(
c
)
<
0
f(a)·f(c)<0
f(a)⋅f(c)<0,则令b=c;
(3) 若
f
(
c
)
⋅
f
(
b
)
<
0
f(c)·f(b)<0
f(c)⋅f(b)<0,则令a=c.
(4) 判断是否达到精确度ξ:即若
∣
a
−
b
∣
<
ξ
|a-b|<ξ
∣a−b∣<ξ,则得到零点近似值a(或b)为近似c,否则重复step2-4。
三、matlab实现
%此程序是求x^3-x-1=0在[1,2]的误差不超过0.001的解。
x_up = 2;
x_down = 1;
error = 0.001;
res_down = x_down^3 - x_down - 1;
res_up = x_up^3 - x_up - 1;
while(res_down * res_up < 0)
x = 0.5*(x_up + x_down);%求区间(a,b)的中点c.
res = x^3 - x - 1;%计算f(c)
if( res*res_down < 0 )
x_up = x;% 若f(a)·f(c)<0,则令b=c;
else
x_down = x;%若f(c)·f(b)<0,则令a=c.
end
if( abs(x_up-x_down) < error ) %确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
break;
end
end
result_x = 0.5*(x_up + x_down)
%若有改动请改1,2,3,4,5,8行
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)