pascal用二分法求多项式的根

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:17:08
任选一个多项式P,假设读入两个数a,b并且P(a)P(b)<0,如果P((a+b)/2)P(a)>0,根在(a+b)/2 和b之间;否则根在a 和(a+b)/2之间,
就这样不断缩小范围,最后确定一个近似值,希望给出完整的pascal程序,而且我们没有学指针类型,用一些常见的pascal类型,谢谢
读入格式应该是实数类型,数据范围没有给啊,就死接近零,0.001吧

是二次的话下面的就行 三次以上 就不适用了
var
a,b,i,j:longint;
l,r,mid:real;
function fac(x:real):real; 求函数值 根据需要 自己改
begin
fac:=-x*x+2*x+1;
end;

begin
readln(l,r);
repeat
mid:=(l+r)/2;
if fac(l)*fac(mid)<0
then r:=mid
else l:=mid;
until r-l<0.0000001; 根的范围误差小于0.0000001
write(l:0:8);
end.

要写程序需要知道读入格式和数据范围啊