![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Вычисление определённого интеграла методом СимпсонаDelphi , Синтаксис , Математика
Автор: Dimka Maslov { **** 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; Приведенный код - это реализация метода Симпсона для численного интегрирования в языке Delphi. Метод используется для приблизительного вычисления значения определенного интеграла. Вот разбивка кода:
Пример использования демонстрирует, как использовать эту функцию для вычисления интеграла кубической функции Некоторые предложения по улучшению:
В целом, этот код предоставляет хороший старт для реализации метода Симпсона в Delphi. С некоторыми дополнительными улучшениями он мог бы быть еще более полезен и надежным. Метод Симпсона для вычисления определенного интеграла с заданной относительной точностью на примере программирования в языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |