反復法によって指定された精度で根を見つけるためのアルゴリズムを実現する必要があります。この方法の主なアイデアは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私の英語でごめんなさい