Доброго времени суток всем.
Есть такая задача
Вычислить с заданной точностью константу π, используя бесконечный
Ряд Шарпа (1699 г.): 2 * sqrt(3) * (1 - 1/(3^1)*3 + 1/(3^2)*5 + 1/(3^3)*7 + 1/(3^4)*9 + ... )
Ряд Лейбница (1673 г.): п/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - ...
Ряд Эйлера (1736 г.): (п^2)/6 = 1 + 1/2^2 + 1/3^2 + 1/4^2 + 1/5^2...
Сравнить полученные значения, в качестве критерия сравнения использовать количество членов ряда, необходимых для вычисления числа
π.
************
Начал писать программу, запнулся на ряде Лейбница, да и Эйлера тоже, что-то я неправильно пишу походу - значения неверные выдаёт
Помогите пожалуйста, я первый раз сам пишу программу.
Код:
unit VichisleniePi;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Sharp: TEdit;
Leybnitc: TEdit;
Eyler: TEdit;
Calc: TBitBtn;
lbl1: TLabel;
lbl2: TLabel;
lbl3: TLabel;
lbl4: TLabel;
Tochnost: TEdit;
lbl5: TLabel;
procedure CalcClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CalcClick(Sender: TObject);
var i, n, sign1: integer;
s, curr:Extended;
BEGIN
begin
n := StrToInt(Tochnost.Text);
s := 0; curr := 1;
for i := 1 to n do
begin
s := s + 1 / (curr * (2 * i - 1));
curr := - curr * 3;
end;
s := s * sqrt(12);
Sharp.Text:=FloatToStr(s);
end;
begin
s :=0;
sign1 := 1;
for i := 0 to n do ;
begin
s := s + sign1 * 4 / ( 2*i + 1);
sign1:= -sign1;
end;
Leybnitc.Text:=FloatToStr(s)
end;
begin
s:= 0;
for i := 1 to n do
begin
s:= 1/sqr(n) ;
end;
s:= Sqrt (6*s) ;
Eyler.Text:=FloatToStr(s)
end;
END;
end.