-
二分法的基本原理
- 介值定理:闭区间[a,b]内。f(a)*f(b)<0,则f(x)在区间内有根
- 二分法的几何意义:不停减少一半的区间长度来逼近根,区间中点为近似解
- 二分法的终止条件:区间长度 < 精度要求
-
matlab基础语法
1.构造
2. feval, function evaluate, 函数计算
[y1, y2, ...] = feval(函数, x1, ...,xn);
e.g. fa = feval( 'myfun' , a );
3. for 循环结构
for i = 初始值:步长:截止值
(执行语句);
end
- for 循环注意“次数”要有字母(i)记录,步长为1时可省略,即 for 1:10
- 执行语句有“;”
- 所有结构都有end终止
4. inline,把串转换成函数
f = inline( ' x^3-x-1 ' );
-
二分法的代码实现
编译器内容:
function [c,err,yc] = bisect(f,a,b,delta)
ya = feval(f,a); %feval计算f(a)的值
yb = feval(f,b);
err = abs(b-a); %abs()计算绝对值,这里用啊a、b距离用于误差控制
for i = 1:1000 %1000是自定义循环截止次数,避免求不到值一直循环
c = (a+b)/2;
yc = feval(f,c);
if yc==0
a = c ;
b = c ;
break
elseif yb*yc>0
b = c;
yb = yc;
else
a = c;
ya = yc;
end
if err < delta
break;
end
end
i
end
命令行窗口:
f = inline('x^3-x-1');
bisect(f,1,2,1e-4) %1e-4等于10^(-4)
打完最后敲回车即可运行