Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример 3.4 выполнения задания

Вычисление определённых интегралов

Для вычисления значений определённых интегралов существует множество методов. Рассмотрим три из них – метод прямоугольников, метод трапеций и метод парабол (метод Симпсона) на примерах при следующей постановке задачи. Составить фрагмент программы для вычисления приближенного значения определённого интеграла

при заданных подынтегральной функции f(x), пределах интегрирования a и b и числе N разбиений интервала на подынтервалы. При этом шаг изменения аргумента Δx следует найти по формуле Δx=(b-a)/N.

Суть этих методов – в накоплении, с учетом знаков, сумм площадей прямоугольников, трапеций или параболических трапеций, заменяющих на каждом подынтервале в общем случае криволинейную трапецию. Для метода прямоугольников высоты таких прямоугольников следует вычислять как значение функции в серединах (или на границах) подынтервалов, для метода трапеций высоты сторон трапеций – как значения функции на границах подынтервала, а для метода Симпсона используются значения функций и на границах и в серединах подынтервалов. Соответствующие формулы в общем виде и фрагменты программ вычисления интегралов для подынтегральной функции sin x приведены в рассмотренных ниже примерах.

Пример 1. Использование метода прямоугольников с вычислением высот прямоугольников в серединах подынтервалов.

В этом методе формула приближенного значения определённого интеграла представляется в виде

Для уменьшения объёма вычислений множитель Δx следует вынести за знак суммы:

, а для вычисления текущих значений центров xi подынтервалов будем использовать приём накопления суммы.

 

z:=0;

dx:=(b-a)/N;

x:=a+dx/2;//Середина первого подынтервала

for i:=1 to N do

begin

z:=z+Sin(x);

x:=x+dx

end;

z:=z*dx;

 

Пример 2. Использование метода трапеций.

В этом методе формула приближенного значения определённого интеграла представляется в виде

Преобразование её к виду

 

позволяет исключить повторные вычисления высот трапеций на внутренних подынтервалах и таким образом сократить объём вычислений.

 

z:=(Sin(a)+Sin(b))/2;

dx:=(b-a)/N;

x:=a+dx;

for i:=1 to N-1 do

begin

z:=z+Sin(x);

x:=x+dx

end;

z:=z*dx;

 

Пример 3. Использование метода параболических трапеций (Симпсона).

В этом методе формула приближенного значения определённого интеграла представляется в виде

или, взяв N в 2 раза большим, то есть разбив весь интервал на четное количество участков, в 2 раза меньшей длины

.

Используем вторую формулу в следующем фрагменте программы.

 

ReadLn(a,b,N);

Integ:=Sin(a);

dx:=(b-a)/N;

for i:=1 to N div 2 do

begin

x:=a+2*i*dx;

Integ:=Integ+2*Sin(x)+4*Sin(x-dx);

end;

Integ:=(Integ-Sin(b))*dx/3;

WriteLn(Integ:10:5);

Itoch:=-(Cos(b)-Cos(a));

WriteLn(Itoch:10:5);

ReadLn;

 

Пример 3.4 выполнения задания

Составить программу вычисления приближенных значений определённого интеграла методом прямоугольников и методом Симпсона, а также точное его значение по первообразной . Вычислить также абсолютную и относительную ошибки для каждого приближенного метода. Пределы интегрирования a и b, а также число N подынтервалов задавать при вводе. Для метода Симпсона используем первую формулу из предыдущего примера.

 

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

A,B,Q,dX,dX2,X,Z,Z0:Extended;

i,N:Integer;

begin

Write('Введите A, B, Q и N: ');ReadLn(A,B,Q,N);

//МЕТОД ПРЯМОУГОЛЬНИКОВ

WriteLn('Метод прямоугольников при N = ',N);

Z:=0;

dX:=(B-A)/N;

X:=A+dX/2;

for i:=1 to N do

begin

Z:=Z+Exp(Q*X)*(Sqr(Q)*Cos(X)-2*Sin(X)*Q-Cos(X));

X:=X+dX

end;

Z:=Z*dX;

WriteLn(Z,' - приближенное значение интеграла');

Z0:=Exp(Q*B)*(Q*Cos(B)-Sin(B))-Exp(Q*A)*(Q*Cos(A)-Sin(A));

WriteLn(Z0,' - точное значение интеграла');

WriteLn(Abs(Z0-Z),' - абсолютная ошибка');

WriteLn(Abs((Z0-Z)/Z0),' - отностиельная ошибка');

WriteLn;

//МЕТОД ПАРАБОЛ

WriteLn('Метод Симпсона при N = ',N);

dX:=(B-A)/N;

dX2:=dX/2;

Z:=(Exp(Q*A)*(Sqr(Q)*Cos(A)-2*Sin(A)*Q-Cos(A))

+Exp(Q*B)*(Sqr(Q)*Cos(B)-2*Sin(B)*Q-Cos(B)))/2

+2*Exp(Q*(B-dX2))

*(Sqr(Q)*Cos(B-dX2)-2*Sin(B-dX2)*Q-Cos(B-dX2));

X:=A+dX;

for i:=1 to N-1 do

begin

Z:=Z+Exp(Q*X)*(Sqr(Q)*Cos(X)-2*Sin(X)*Q-Cos(X))

+2*Exp(Q*(X-dX2))

*(Sqr(Q)*Cos(X-dX2)-2*Sin(X-dX2)*Q-Cos(X-dX2));

X:=X+dX

end;

Z:=Z*dX/3;

WriteLn(Z,' - приближенное значение интеграла');

Z0:=Exp(Q*B)*(Q*Cos(B)-Sin(B))-Exp(Q*A)*(Q*Cos(A)-Sin(A));

WriteLn(Z0,' - точное значение интеграла');

WriteLn(Abs(Z0-Z),' - абсолютная ошибка');

WriteLn(Abs((Z0-Z)/Z0),' - отностиельная ошибка');

ReadLn;

end.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...