Полный текст:
Содержание
Задание. 3
График
заданной функции. 4
Описание
метода парабол (Симпсона) 5
Блок-схемы алгоритмов. 6
Листинг
программы.. 8
Полученные
результаты.. 10
Проверка
полученных результатов. 10
Выводы.. 11
Список
литературы.. 12
Задание
Вычислить приближенное
значение определенного интеграла с подынтегральной функцией f(x) заданным
методом и проверить точность вычислений по формуле Ньютона – Лейбница:
,
где F(x) – первообразная
функции f(x). Параметры a и b (пределы интегрирования) выбираются самостоятельно
из расчета: (b-a)/h ? 20, а параметр h – в зависимости от
точности e=10-5 метода.
f(x)
= Sin3(x)?Cos(x)
F(x)
= 1/4?Sin4(x)
+ C
Метод парабол
График заданной функции
Исходные данные:
По правилу Рунге определим
шаг:
Выберем шаг
– удовлетворяет условию задачи ().
В качестве берется ближайшее
четное целое число не меньше :
Описание метода парабол
(Симпсона)
Метод парабол (Симпсона) численного интегрирования
позволяет вычислить приближенное значение определенного интеграла с более
высокой точностью, чем методы прямоугольников и трапеций. Идея метода исходит
из того, что на частичном промежутке дуга некоторой параболы в общем случае
теснее прилегает к кривой , чем хорда, соединяющая концы дуги этой кривой (метод
трапеций). Поэтому значения площадей соответствующих элементарных трапеций,
ограниченных сверху дугами парабол, являются более близкими к значениям
площадей соответствующих частичных криволинейных трапеций, ограниченных сверху
дугой кривой, чем значения площадей соответствующих прямолинейных трапеций.
Алгоритм следующий:
Разобьем интервал интегрирования на четное число равных отрезков с
шагом .Примем:
Значения функций в этих точках обозначим
соответственно:
Найдем
приближенное значение интеграла по формуле Симпсона:
Блок-схемы алгоритмов
Схема
главной
программы
Схема подпрограммы функции f(x)
Схема
подпрограммы метода парабол
Листинг программы
program MetodParabol;
uses
crt;
Var a,b,Int:real; {Раздел
описания переменных}
n:integer;
Rez:text;
{Результирующий файл}
Function f(x:real): real; {Подпрограмма вычисления функции}
begin
f := sin(x)*sin(x)*sin(x)*cos(x);
end;
Procedure MS(a,b:real;n:integer;Var
Int:real); {Подпрограмма вычисления}
{приближенного
значения интеграла методом парабол}
var i:integer; {Раздел описания переменных}
h,s1,s2:real;
begin
h:=(b-a)/n;
s1:=0;
s2:=0;
for
i:=1 to n-1 do
begin
if (i mod 2=1) then s1:=s1+f(a+i*h)
else s2:=s2+f(a+i*h);
end;
Int:=(h/3)*(f(a)+4*s1+2*s2+f(b));
end;
BEGIN
{Основная программа}
Assign(Rez,'Rez.txt');
clrscr;
Rewrite(Rez);
writeln('Метод парабол');
write('Введите a,b,n '); readln(a,b,n); {Ввод исходных данных через пробел}
MS(a,b,n,Int); {Вызов подпрограммы}
Writeln('Интеграл=',Int:12:9);
Writeln(Rez,' Интеграл=',Int:12:9);
readln;
close(rez);
END.
Полученные результаты
Метод
парабол
Введите
a,b,n 0.4 1.4 20
Интеграл=
0.230015389
Проверка полученных
результатов
Вычислим значение
интеграла по формуле Ньютона – Лейбница:
, где
Достигнутая
точность выше заданной .
Выводы
Полученное значение интеграла найдено
с достаточной точностью: При реализации программы вычисление функции
и численного метода интегрирования оформлено в виде подпрограмм, что дает
следующие преимущества:подпрограммы
независимы друг от друга, что позволяет поручать их создание различным
разработчикам; подпрограмма
имеет небольшое количество операторов, что удобно для отладки и поиска ошибок;подпрограммы
легко добавлять к главной программе и удалять из нее;при отладке
всей программы подпрограммы можно подключать поочередно: отладив одну, можно
подключать другую.Согласно
заданию программа выводит результаты работы в файл Rez.txt