对分法求解非线性方程的实根
一,例题:x^6- 5x^5+ 3x^4+ x^3- 7x^2 + 7x-20
二,对分法说明
三,键入代码
%%%% 对分法求函数的实根%%%%%
clc;
clear all
format short
s=input('请输入函数表达式:f = ‘,‘s’);
f=inline(s);
a = input(‘请输入区间左端点:a=’);
b = input(‘请输入区间右端点:b=’);
eps=input(‘请输入停止精度要求:eps=’); %%“|b-x|<=eps”
k=1;
x=(a+b)/2;
fprintf(’ k a f(a) b f(b) xk f(xk)\n ');
T=[k,a,f(a),b,f(b),x,f(x)];
while abs(T(k,4)-T(k,6))>eps/2
k=k+1;
if f(x)*f(a)==0
a=a;
b=x;
x=(a+b)/2;
T=[T;k,a,f(a),b,f(b),x,f(x)];
break
elseif f(x)*f(a)>0
a=x;
b=b;
x=(a+b)/2;
T=[T;k,a,f(a),b,f(b),x,f(x)];
elseif f(x)*f(a)<0
a=a;
b=x;
x=(a+b)/2;
T=[T;k,a,f(a),b,f(b),x,f(x)];
end
end
disp(T);
fprintf(‘经过%d次迭代,函数方程根的近似解为:x=%.8f\n’,k-1,T(k-1,6))
四,运行结果
结果正确,