0

我需要在 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.

请回答我的问题:

  • 这段代码正确吗?
  • 如何以具有所有符号的正常(非指数)形式打印结果根?
  • 输入值可能非常大(最多 200 个符号)。这段代码可以和他们一起使用吗?

并建议我,我该如何改进我的代码?

4

1 回答 1

1

curRoot:=sqrt(数字); << 看起来您正在直接在这里计算数字的平方根,而不是使用方法。

您应该使用其他方法选择“第一次猜测”...如果这只是为了好玩,请尝试一半的数字

您可能会发现此页面很有用:https ://en.wikipedia.org/wiki/Newton%27s_method#Square_root_of_a_number

扩展数据类型只能保留大约 20 个小数位。200 位小数是一个艰难的决定,可能很难做到

于 2012-12-01T09:58:03.237 回答