Недавно добавленные исходники

•  Animation Loaders  693

•  DeLiKaTeS Tetris (Тетрис)  5 695

•  TDictionary Custom Sort  7 652

•  Fast Watermark Sources  7 341

•  3D Designer  10 551

•  Sik Screen Capture  7 870

•  Patch Maker  8 092

•  Айболит (remote control)  8 152

•  ListBox Drag & Drop  6 946

•  Доска для игры Реверси  100 154

•  Графические эффекты  8 211

•  Рисование по маске  7 607

•  Перетаскивание изображений  6 210

•  Canvas Drawing  6 577

•  Рисование Луны  6 501

•  Поворот изображения  5 679

•  Рисование стержней  4 602

•  Paint on Shape  3 298

•  Генератор кроссвордов  4 285

•  Головоломка Paletto  3 428

•  Теорема Монжа об окружностях  4 248

•  Пазл Numbrix  2 754

•  Заборы и коммивояжеры  3 659

•  Игра HIP  2 465

•  Игра Go (Го)  2 447

•  Симулятор лифта  2 860

•  Программа укладки плитки  2 294

•  Генератор лабиринта  3 019

•  Проверка числового ввода  2 517

•  HEX View  2 925

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Вычисление интеграла



Автор: world.fpm.kubsu.ru

Училка сынку программера:
- Ты чего в словосочетании "Дубовая роща" слово "роща" через "я" написал? А ну-ка на доске 20 раз правильно напиши, чтобы на всю жизнь запомнил!
Через минуту поворачивается и видит: @Repeat("роща"; 20)

Вычисление интеграла с заданной точностью алгоритмом Симпсона.


// (c) Copydown 2002, all left reserved. http://world.fpm.kubsu.ru.

{$APPTYPE CONSOLE}

{$F+} {разрешение передачи функций, как параметров}

type FunctionType = function(x: real): real;

{интегрируемая функция}
function f(x: real): real; begin f := x end;

{интегрирование от a до b функции f с точностью e}
function IntegralSimpson(a, b: real; f: FunctionType; e: real): real;
  var
    h, x, s, s1, s2, s3, sign: real;
 begin

  if (a = b) then
    begin
      IntegralSimpson := 0; exit
    end;

  if (a > b) then
    begin
      x := a; a := b; b := x; sign := -1
    end
   else sign:=1;

  h := b - a; s := f(a) + f(b); s2 := s;

  repeat
    s3 := s2; h := h/2; s1 := 0; x := a + h;

    repeat
      s1 := s1 + 2*f(x); x := x + 2*h;
    until (not(x < b));

    s := s + s1; s2 := (s + s1)*h/3; x := abs(s3 - s2)/15
  until (not(x > e));

  IntegralSimpson := s2*sign;
 end;

begin
  {вывод результата интегрирования от 0 до 1 функции f с точностью 0.001}
  writeln(IntegralSimpson(0, 1, f, 0.001));
  writeln; writeln('Press Enter'); readln;
end.






Похожие по теме исходники

Вычисление даты Пасхи




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте