IPB
ЛогинПароль:

> Внимание! Действует предмодерация

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

> Численное интегрирование
сообщение
Сообщение #1


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Численное интегрирование методом прямоугольников:
Код
program integral;
 {        Вычисляет приближенное значение       }
 { интеграла функции F методом прямоугольников  }
 { /b                                           }
 { |  f(x) dx;интервал разбивается на n частей  }
 { /a                                           }

var
 n,i : integer;
 a,b,shag,sum,itog : real;

{======================================}
{Введите сюда нужную функцию}
function F(x:real):real;
 begin
   F:=x*x*x*x+2*x*x+4      
 end;
{======================================}

BEGIN
 write('Начало интегрирования a = '); readln(a);
 write('Конец  интегрирования b = '); readln(b);
 write('Количество разбиений интервала n = '); readln(n);

 shag:=(b-a)/n;
 sum:=0;
 for i:=1 to n-1 do
   sum := sum + F(shag*i+a);
 sum := sum + (F(a)+F(b))/2;

 itog:=(b-a)/n * sum;
 writeLn('Интеграл = ', itog:0:5)
END.


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Численное интегрирование методом Симпсона (четное количество разбиений интервала интегрирования):
Код
program Simpson;

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

var  a,b,h,x :real;
    n,i   :integer;
    integ :real;

begin
 write('Введите начало интегрирования a='); readln(a);
 write('Введите конец  интегрирования b='); readln(b);
 write('Введите количество разбиений интервала (четное число) n='); readln(n);
 if (n mod 2)>0 then
 begin
   n:=n+1;
   writeln('Число n было введено нечетное, оно было заменено на n=',n);
 end;

 h:=(b-a)/n;
 integ:=F(a)+F(b)+4*F(a+h);
 for i:=1 to (n div 2)-1 do
 begin
    x:=a+2*h*i;
    integ:=integ+2*F(x)+4*F(x+h);
 end;
 integ:=h*integ/3;

 writeln('Интеграл = ',integ);
end.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 15:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name