Приближенное интегрирование функций
Если функция f(x) непрерывна на отрезке [а, b] и известна ее первообразная F(х), то определенный интеграл от этой функции в пределах от а до b может быть вычислен по формуле Ньютона-Лейбница
, (1)
где F'(х) = f(x).
Однако во многих случаях первообразная функция F(х) не может быть найдена с помощью элементарных средств или является слишком сложной; вследствие этого вычисление определенного интеграла по формуле (1) может быть затруднительным или даже практически невыполнимым. Кроме того, на практике подынтегральная функция f(x) часто задается таблично и тогда само понятие первообразной теряет смысл. Во всех этих случаях используют приближенные и в первую очередь численные методы вычисления определенных интегралов.
Задача численного интегрирования функции заключается в вычислении значения определенного интеграла на основании ряда значений подынтегральной функции. В работе рассматриваются три правила численного вычисления однократных интегралов: правило трапеций, правило Симпсона и правило трех восьмых.
Обычный прием механической квадратуры (так называется численное вычисление однократного интеграла) состоит в том, что данную функцию f(x) на рассматриваемом отрезке [а, b] заменяют интерполирующей или аппроксимирующей функцией (x) простого вида (например, полиномом), а затем приближенно полагают:
(2)
Функция (x) должна быть такова, чтобы интеграл вычислялся непосредственно.
Если заменить функцию f(x) соответствующим интерполяционным полиномом Лагранжа Ln(x) и вывести явно выражения для коэффициентов этого полинома, то получится следующая квадратурная формула
где h = (b–a)/n, yi = f(a+ih) (i=0, 1, …, n) и Hi – постоянные, называемые коэффициентами Котеса.
При n = 1 получаем формулу трапеций
= h/2*(y0+y1).
При n = 2 получаем формулу Симпсона
= h/3*(y0+4y1+y2).
При n = 3 получаем квадратурную формулу Ньютона
= 3h/8*(y0+3y1+3y2+y3).
(правило трех восьмых).
Для вычисления интеграла необходимо разделить промежуток интегрирования [a, b] на n равных частей [x0, x1], [x1, x2], …, [xn-1, xn] и к каждому их них применить полученную формулу.
Пример 5.Пусть n=2m есть четное число и yi = f(xi) (i=0, 1, 2, …, n) – значения функции y=f(x) для равноотстоящих точек a=x0, x1, x2, …, xn=b с шагом h=(b–a)/n=(b–a)/(2m). Применяя формулу Симпсона к каждому удвоенному промежутку [x0, x2], [x2, x4], …, [x2m-2, x2m] длины 2h, будем иметь:
= h/3*(y0+4y1+y2) + h/3*(y2+4y3+y4) + … + h/3*(y2m-2+4y2m-1+y2m).
Отсюда получаем общую формулу Симпсона
= h/3*[(y0+y2m) + 4(y1+y3+ … +y2m-1) + 2(y2+y4+ … +y2m-2)].
Введя обозначения
y1+y3+ … +y2m-1,
y2+y4+ … +y2m-2,
Получим общую формулу Симпсона в более простом виде:
= h/3*[(y0+yn) + 4 + 2].
С помощью формулы Симпсона вычислить интеграл
,
приняв n=10.
Решение. Имеем 2m=10. Отсюда
h=(1-0)/10=0,1.
Результаты вычислений приведены в таблице.
i |
xi |
y2j-1 |
yj |
0 |
0 |
|
y0 = 1,00000 |
1 |
0,1 |
0,90909 |
|
2 |
0,2 |
|
0,83333 |
3 |
0,3 |
0,76923 |
|
4 |
0,4 |
|
0,71429 |
5 |
0,5 |
0,66667 |
|
6 |
0,6 |
|
0,62500 |
7 |
0,7 |
0,58824 |
|
8 |
0,8 |
|
0,55556 |
9 |
0,9 |
0,52632 |
|
10 |
1,0 |
|
0,50000 = yn |
|
|
3,45955 () |
2,72818 () |
По общей формуле Симпсона получаем:
I h/3*(у0+уn+4+2) = 0,69315.
Задания
Написать программу, реализующую итерационные вычислительные процессы, с использованием процедурных типов данных:
Нечетные варианты решают задачу приближенного решения алгебраических и трансцендентных уравнений.
Четные варианты решают задачу приближенного интегрирования функций с заданной точностью.
В соответствии с порядковым номером в журнале выбирается набор из трех функций.
Набор 1
x2 = sin(x).
x3 = sin(x).
x = arcsin((x+1)/4).
Набор 2
x3 - 5*x + 1 = 0.
x3 - 9* x2 + 20*x - 1 = 0.
x3 - 3* x2 - 3*x + 10 = 0.
Набор 3
x5 + 5*x + 1 = 0.
sin( x ) + x = 1.
x2 - 10*lg( x ) - 3 = 0
Набор 4
x2 = ln( x+1 ).
ln( x ) = 4 - x2.
lg( x ) = 0.1*x.
Набор 5
f(x) = 1/( x(1/3) + 1 ).
f(x) = ( 4 + x2 )(1/2).
f(x) = 1/sqrt( 1-0.25*sin( x ) ).
Набор 6
f(x) = exp( -x )*cos( pi*x/4 ).
f(x) = tg( x )(1/2).
f(x) = (1 + cos( x2 )(1/2) ).
Набор 7
f(x) = (x2-5) *(10-x).
f(x) = exp(2*x) * sin(2*x2 + 1).
f(x) = arccos(exp(-(3*x)(1/3) ).