我需要实现牛顿方法,在Delphi 7中浮点之后用给定的计数计数符号查找平方根。我写了这段代码:
program NewtonMethod
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
const
signCount = 50; //Signs after floating point count
var
number, curRoot, prevRoot: Extended;
precision: Extended;
function input(): Extended;
begin
Write('x=');
try
Readln(number)
except
Writeln('Invalid input data, please try again');
Input();
end;
end;
begin
input();
curRoot := sqrt(number); //Íà÷àëüíàÿ
precision := 1 / power(10, signCount);
prevRoot := 0;
repeat
prevRoot := curRoot;
curRoot := prevRoot - (Power(prevRoot, 2) - number) / (2 * prevRoot);
until
Abs(curRoot - prevRoot) < precision;
Writeln(curRoot);
ReadLn;
end.
请回答我的问题:
并建议我,如何改进我的代码?
答案 0 :(得分:1)
curRoot:= SQRT(号); &LT;&LT;看起来你在这里直接计算出数字的平方根,而不是使用方法。
您应该使用其他方法选择“第一次猜测”...如果这只是为了好玩,请尝试一半的数字
您可能会发现此页面非常有用:https://en.wikipedia.org/wiki/Newton%27s_method#Square_root_of_a_number
Extended数据类型只能执行大约20个小数位。 200个小数位是一个艰难的调用,可能很难做到