我需要实现通过迭代方法找到具有指定精度的根的算法。该方法的主要思想是Cn=f(Cn-1);C0=(A+B)/2;其中 a,b 区间的边界包括根。我写了这段代码(在Delphi7中)
program iter;
{$APPTYPE CONSOLE}
uses
SysUtils,Math;
function GetCn(Cn1:Double):Double;
begin
Result:=Cn1+sin(1/Cn1);
end;
var
a,b:Double;
Cn,Cn1:Double;
eps,eps1:Double;
begin
a:=1.2;b:=2;
Cn:=(a+b)/2;
Write('Input precision ');Readln(eps);
eps1:=Abs(Cn-Cn1);
While eps1>eps do
begin
Cn1:=Cn;
Cn:=GetCn(Cn);
eps1:=Abs(Cn-Cn1);
end;
Writeln(Cn);
Readln;
end.
测试数据中f(x)=x-2+sin(1/x);a:=1.2 b:=2.0 eps:=0.001 我的程序给出答案 1.00000143538244E+0003,但在一组问题中是答案 1,3077
为什么会这样?我在哪里出错?如何纠正?
PS对不起我的英语