Сейчас на сайте:
Пользователей: 0
Отсутствуют.
Роботов: 2
Yandex, Googlebot
Гостей: 84
Всех: 86
ВНИМАНИЕ! Конкурс по программированию!
Проект Programmers.kz и школа hotPen3D2D предлагает Вам курсы по веб-дизайну, веб-программированию и компьютерной графике. Подробности здесь.
Информация к новости
- Просмотров: 1412
- Автор: AlexanderMS
Вычисление определённого интеграла методом Симпсона
Категория: Программирование » Delphi » Статьи и исходники » Синтаксис » Математика
Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Вычисление определённого интеграла методом Симпсона
A, B - границы интегрирования
Eps - заданная относительная точность вычисления
F - подинтегральная функция
Зависимости: нет
Автор: Dimka Maslov, mainbox@endimus.ru
Copyright: Dimka Maslov
Дата: 26 ноября 2003 г.
***************************************************** }
type
TDoubleFunc = function(X: Double): Double;
function Integral(A, B, Eps: Double; F: TDoubleFunc): Double;
function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double;
var
x, dx: Double;
i: Integer;
begin
dx := (B - A) / N;
Result := 0;
x := A;
for i := 1 to N do
begin
Result := Result + dx * (F(x) + 4 * F(x + dx / 2) + F(x + dx)) / 6;
x := x + dx;
end;
end;
var
N: Integer;
Prev: Double;
begin
Result := InternalCalc(A, B, F, 4);
N := 4;
repeat
Prev := Result;
N := N shl 1;
Result := InternalCalc(A, B, F, N);
until (Result = 0) or (Abs((Result - Prev) / Result) < Eps);
end;
Пример использования:
function F(X: Double): Double; begin Result := X * X * X; end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := FloatToStr(Integral(-10, 10, 0.00001, F)); end;Источник: delphiworld.narod.ru
Вернуться
Комментариев: 0
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




