Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.11.2011, 04:35
toper toper вне форума
Прохожий
 
Регистрация: 27.11.2011
Сообщения: 4
Репутация: 10
По умолчанию Вычисление числа Пи тремя способами

Доброго времени суток всем.

Есть такая задача

  • Вычислить с заданной точностью константу π, используя бесконечный
    Ряд Шарпа (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.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025