Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2011, 00:21   #1
Rikus
 
Регистрация: 11.11.2011
Сообщений: 6
По умолчанию Вычисление интеграла методом трапеций

Здравствуйте! Есть программа, которая вычисляет интеграл методом трапеций. Вроде все работает, но когда дана функция arcsin начинает выдавать ошибку. Что не так и как исправить?

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math, jpeg, ExtCtrls, TeeProcs, TeEngine, Chart;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Chart1: TChart;
    Image1: TImage;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
a,b,e,i:real;

function Fx(x:real):real;
begin
  Fx:=arcsin(sqrt(x/1+x)); //функция для вычисления интеграла
end;

procedure Metod_Trapeciy;
var
x1,x2,x3:real;
c:longint;
begin
  i:=0;
  for c:=1 to round(abs(b-a)/e) do
    begin
      x1:=Fx(a+c*e);
      x2:=Fx(a+c*e+e);
      if x2>x1 then x3:=x1 else x3:=x2;
      i:=i+abs(x2-x1)*e+abs(x3)*e;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  a:=StrToFloat(Edit1.Text);
  b:=StrToFloat(Edit2.Text);
  e:=StrToFloat(Edit3.Text);

  Metod_Trapeciy;

  Edit4.Text:=FloatToStr(i);
end;

end.

Последний раз редактировалось Rikus; 11.11.2011 в 00:23.
Rikus вне форума Ответить с цитированием
Старый 11.11.2011, 00:28   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А точно: Fx:=arcsin(sqrt(x/1+x)); ?
Может: Fx:=arcsin(sqrt(x/(1+x))); и x, я надеюсь, не отрицательный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2011, 00:43   #3
Rikus
 
Регистрация: 11.11.2011
Сообщений: 6
По умолчанию

Да. Спасибо вам, Аватар!
Rikus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление интеграла методом трапеций Sepherot Помощь студентам 1 21.12.2010 22:18
Решение интеграла методом трапеций GOODMAN Паскаль, Turbo Pascal, PascalABC.NET 2 12.04.2010 22:09
Вычисление определенного интеграла методом трапеций Alexander886 Помощь студентам 0 06.12.2009 20:43
Методом трапеций высислить значение интеграла zloygeniyrus Помощь студентам 0 09.04.2009 08:44