- •Численное дифференцирование
- •Вычисление производной по определению
- •Вычисление производной на основе интерполяционного многочлена Лагранжа
- •Численное интегрирование
- •Формула трапеций
- •Формула Симпсона
- •Численное решение дифференциальных уравнений Основные определения и постановка задачи
- •Метод Эйлера
- •Классический метод Рунге-Кутта
- •Методы Рунге-Кутта
Численное интегрирование
Для вычисления
определенного интеграла используется
формула Ньютона-Лейбница:
,
где F(x) – одна из первообразных функции f(x) (такая что F’(x)=f(x)).
Однако функция f(x) может быть задана таблицей или графиком, а также аналитически, но нахождение первообразной в аналитическом виде затруднительно. В этих случаях применяют методы приближенного (численного) интегрирования.
Формулы, используемые для приближенного вычисления однократных интегралов, называют квадратурными формулами.
Считая f(x) Ln(x),
на [a,b],
получим
не зависит от x, обозначим через Ai
Перейдем
всюду к переменной t:
,
откуда
,
.
При x = x0 t = 0;
…
x
= xn
.
Тогда
.
Таким образом,
Ai=(b-a)
Hi,
где
,
i=0,1,…,n.
Формула трапеций
Найдем коэффициенты формулы ,
где , i=0,1,…,n при n=1.
При i
= 0
При i
= 1
Формула на отрезке [x0, x1] примет вид:
Для отрезка [a,
b]:
(*)
Рассмотрим погрешность:
На отрезке [x0,
x1]
погрешность
.
При
(*) дает значение интеграла с избытком;
при
(*) дает значение интеграла с недостатком.
На отрезке [a,
b]
.
Поскольку hn=|b-a|,
то
,
где
.
Блок-схема численного интегрирования методом трапеций: |
n:=round(abs(b-a)/h) s:=0
x
:= a+h*i s
:= s+f(x)
s
:= h*(s-(f(a)+f(b))/2)
|
Программа численного интегрирования методом трапеций:
program lab_4_1;
var i,n :integer;
s,h,a,b,x :real;
function f(x: real):real;
begin {функция в виде f:=[математическое выражение]}
f:=sin(x);
end;
begin
write('Введите левую и правую границы отрезка - ');
readln(a,b);
write('Введите шаг - '); readln(h);
n:=round(abs((b-a)/h));
s:=0;
for i:=0 to n do
begin
x:=a+h*i;
s:=s+f(x);
end;
s:=h*(s-(f(a)+f(b))/2);
writeln('Искомый определенный интеграл равен ',s:10:6);
readln;
end.
Формула Симпсона
Найдем коэффициенты формулы ,
где , i=0,1,…,n при n=2.
При i = 0
При i = 1
При i = 2
Формула на отрезке [x0, x2] примет вид:
При n=2m применив формулу к каждой паре частичных отрезков [x2i-2, x2i] (i=1,2,…,m) получим формулу Симпсона:
Рассмотрим погрешность:
На отрезке [a,
b]
или
,
где
При вычислении по
методу повторного счета можно использовать
формулу:
.
Если при вычислении интеграла требуемая
точность не достигнута (т.е.
),
предусматривается повторный счет с
шагом, уменьшенным вдвое.
Блок-схема вычисления по формуле Симпсона методом повторного счета |
|
Программа вычисления по формуле Симпсона методом повторного счета:
program lab4_2;
var n: integer;
S,a,b,e,h,x,I_n,I_n2,M: real;
function f(x: real):real;
begin {записать, функцию в виде f:=[матем. выражение]}
f:=sin(x);
end;
begin write('Введите концы отрезка интегрирования: ');
readln(a,b);
write('Введите погрешность e: '); readln(e);
I_n:=0;
n:=4;
Repeat
h:=abs(b-a)/n;
s:=(f(a)-f(b))/2;
x:=a+h;
repeat s:=s+2*f(x)+f(x+h);
x:=x+2*h;
until x>=b;
I_n2:=2*h*s/3;
n:=n*2;
M:=abs(I_n - I_n2);
I_n:=I_n2;
Until M<=15*e;
writeln('Интеграл I=',I_n2:12:7);
readln;
end.
