- •Оглавление
- •Введение
- •Краткий обзор системы
- •Знакомство с интерфейсом Scilab
- •Функции, определяемые пользователем и процедуры
- •Циклы
- •Погрешность результата численного решения задачи
- •Приближенные вычисления определенных интегралов
- •Методы прямоугольников
- •Метод трапеций
- •Метод Симпсона
- •Квадратуры Гаусса
- •Методы Монте-Карло
- •Вычисление определенных интегралов в системе Scilab
- •Решение систем линейных алгебраических уравнений
- •Метод Гаусса
- •Формула Крамера
- •Метод простых итераций
- •Метод Зейделя
- •Метод отражений
- •Метод LU-разложений
- •Решение нелинейных алгебраических уравнений
- •Метод половинного деления
- •Метод секущих
- •Метод секущих (с изменяемым углом)
- •Метод Ньютона (касательных)
- •Метод Бернулли
- •Аппроксимация и интерполирование функций
- •Интерполяционный многочлен Лагранжа
- •Интерполяционная формула Ньютона
- •Интерполяционные формулы Гаусса
- •Линейная аппроксимация по методу наименьших квадратов
- •Кусочно-кубические сплайны
- •Анимация на плоскости
- •Анимация в пространстве
- •Метод Рунге-Кутта
- •Метод Эйлера
- •Метод Прогонки
- •Метод Пикара
- •Возможности Scilab для решения ОДУ
- •Список Литературы
27
Рис. 4. Результат работы Листинга_2.3
2) Метод трапеций
Кривую f (x) , заданную на отрезке [a;b] можно приближенно заменить на секущую, как показано на рис.5. Тогда, соответственно, значение интеграла
∫b |
f (x)dx |
можно приближенно заменить |
площадью трапеции: |
||
a |
|
|
|
|
|
∫b |
f (x)dx ≈ (b −a) |
f (a) + f (b) |
. |
|
|
2 |
|
||||
a |
|
|
|
|
|
Рис. 5
Для повышения точности следует разбить отрезок [a;b] , введя на нем
достаточно густую сетку. Затем интеграл разбивают на сумму интегралов по шагам сетки и к каждому слагаемому применяют приведенную выше формулу. При постоянном шаге сетки формула имеет вид:
28
b |
|
b −a |
|
f (x0 ) + |
f (xn ) |
n−1 |
|
|
|
|
∫ f (x)dx ≈ |
( |
+∑ f (xi )) , |
||||||||
|
2 |
|
||||||||
a |
|
n |
|
i=1 |
|
|
|
|||
где n - число отрезков разбиения, |
xi - узлы сетки. |
|
|
|
||||||
Задача 2. Вычислить |
определенный |
интеграл |
1 |
x |
dx методом |
|||||
−∫1 |
||||||||||
1+ x + x2 |
||||||||||
трапеций с точностью ε = 0.000001.
Решение. Приведем решение данной задачи в системе Scilab.
Листинг 2.4.
a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;
function[value] = f(x) value = x/(1+x+x*x);
endfunction
function[n, summa] = trapezium(a, b) n = 10.0;
prev_sum = 1.0; summa = 0.0;
while abs(summa-prev_sum) > e prev_sum = summa; h=(b-a)/n;
summa=0; for i = 1:n+1
summa = summa + 0.5*h*( f(a+i*h) + f(a+(i-1)*h) ); end
n=n*2; end
endfunction
[n, integral] = trapezium(a, b); integral, n
Рис. 6. Результат работы Листинга_2.4
29
3) Метод Симпсона
В данном методе определенный интеграл вычисляется по следующей формуле:
b |
h |
|
n |
−1 |
|
|
|
||||
∑2 (f (x2i ) + 4 f (x2i+1 ) + f (x2i+2 )), |
|||||
∫ f (x)dx = |
|||||
|
|||||
a |
3 i=0 |
||||
где n – количество интервалов разбиения области интегрирования, h – шаг разбиения.
Задача 3. |
Вычислить определенный интеграл |
1 |
x |
dx методом |
|
−∫1 |
|||||
1+ x + x2 |
|||||
Симпсона с точностью ε = 0.000001. |
|
|
|
||
Решение. |
Приведем решение данной задачи в системе Scilab. |
||||
Листинг 2.5.
a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;
function[value] = f(x) value = x/(1+x+x*x);
endfunction
function[n, summa] = simpson(a, b) n = 10.0;
prev_sum = 1, summa = 0; while abs(summa-prev_sum) > e
prev_sum=summa; h = (b-a)/n;
summa=0;
for i=a:2.0*h:b-h
summa = summa + f(i)+4.0*f(i+h)+f(i+2.0*h); end
summa=summa*h/3.0; n = n*2;
end endfunction
[n, integral] = simpson(a, b); integral, n
30
Рис. 7. Результат работы Листинга_2.5
4) Квадратуры Гаусса
Допустим, мы хотим вычислить интеграл ∫1 f (t)dt следующим образом:
|
|
−1 |
1 |
n |
|
∫ f (t)dt = ∑Ai f (ti ) |
(1) |
|
−1 |
i=1 |
|
Теорема. Для обеспечения равенства (1) необходимо и достаточно, чтобы оно выполнялось для f (t) =1, t, t 2 ,K, t 2n−1 .
Доказательство. Необходимость очевидна, так как в равенство (1) вместо f (t) можно подставить любую функцию, в том числе и функции
f (t) =1, t, t 2 ,K, t 2n−1
Докажем |
|
|
достаточность. |
Мы |
имеем |
следующие |
соотношения: |
||||||||||||
1 |
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
2n−1 |
|
|
|
∫t k dt = |
∑Aitik , (k = 0, 1, K, 2n −1) и |
f (t) = ∑Ck t k . По теореме Вейерштрасса |
|||||||||||||||||
−1 |
|
|
i=1 |
|
|
|
|
|
|
|
|
|
|
|
|
k =0 |
|
1, t, t 2 ,K, t 2n−1 . |
|
любую непрерывную функцию можно разложить по базису |
|||||||||||||||||||
Тогда имеем: |
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
1 |
|
|
|
|
|
2n−1 |
1 |
|
|
2n−1 |
n |
n |
2n−1 |
n |
|
||
|
|
∫ f (t)dt = ∑Ck ∫t k dt = ∑Ck ∑Aitik |
= ∑Ai ∑Ck tik = ∑Ai f (ti ) , |
(2) |
|||||||||||||||
|
|
−1 |
|
|
|
|
|
k =0 |
|
−1 |
|
|
k =0 |
i=1 |
i=1 |
k =0 |
i=1 |
|
|
Достаточность доказана. Теорема доказана. |
|
|
|||||||||||||||||
Таким образом, учитывая соотношения |
|
|
|
||||||||||||||||
1 |
|
|
1 |
− |
( |
− |
1) |
k +1 |
2 |
|
|
при k |
четном, |
|
|
|
|||
∫t |
k |
dt = |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
= k +1 |
|
|
|
|
|
|
||||||
|
|
|
k +1 |
|
|
|
|
|
|
|
|||||||||
−1 |
|
|
|
|
|
|
|
при k нечетном, |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|||||
заключаем, что для решения поставленной задачи достаточно определить ti и Ai из системы 2n уравнений:
31
n |
|
|
|
|
|
∑Ai = 2, |
|
|
|
|
|
i=1 |
|
|
|
|
|
n |
|
|
|
|
|
∑Aiti = 0, |
|
|
|
|
|
i=1 |
|
|
|
|
|
KKKKK |
|
|
|
|
(3) |
|
|
|
|
||
n |
|
2 |
|
|
|
∑Aiti2n−2 = |
|
, |
|
||
|
2n −1 |
|
|||
i=1 |
|
|
|
||
n |
|
|
|
|
|
∑Aiti2n−1 = |
0. |
|
|
|
|
i=1 |
|
|
|
|
|
|
|
|
|
|
|
Система (3) — нелинейная и исследование ее громоздко. Поэтому чтобы упростить решение в качестве узлов ti берут корни полинома Лежандра n -
ой степени:
Pn (x) = |
1 |
|
|
d n |
[(x2 −1)n ] |
(n = 0,1, 2, K) . |
|
2n n! dxn |
|||||||
|
|
|
|||||
Формула (1), где ti – нули |
полинома |
Лежандра Pn (t) и Ai (i =1, 2, K,n) |
|||||
определяются из системы (3) называется квадратурной формулой Гаусса (причем при найденном ti последние n уравнений можно отбросить).
Пример 2.1. Найти xi |
и Ai для |
n = 3. |
|
|
|
|
|
|
|
||||||||||||||
Полином Лежандра третьей степени: |
|
|
|
|
|
|
|
|
|||||||||||||||
P3 (t) = |
|
1 |
|
|
d 3 |
(x2 |
−1)3 |
= |
1 |
|
d 3 |
(x6 |
−3x4 +3x |
2 −1) = |
1 |
(120x3 |
−72x) = |
1 |
x (5x2 |
−3) . |
|||
23 3! |
|
48 |
|
|
2 |
||||||||||||||||||
|
|
|
dx3 |
|
|
|
|
dx3 |
|
|
48 |
|
|
|
|
||||||||
Отсюда находим корни полинома: |
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
t |
= |
|
3 , |
|
или |
t |
= −0.774596669, |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
1 |
|
|
5 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
t2 |
= 0, |
|
или |
t2 |
= 0, |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
t4 |
= − |
3 , |
или |
t3 = 0.774596669. |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
Для определения коэффициентов A1 , |
A2 , A3 имеем систему: |
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
+ A |
+ A |
= 2, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
1 |
|
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A1t1 + A2t2 + A3t3 = 0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
2 |
|
2 |
|
2 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
A1t1 + A2t2 + A3t3 = |
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Решая эту систему относительно |
A , получаем: |
|
|
|
|
||||||||||||||||||
32
A1 = 0.555555556,
A2 = 0.888888889,
A3 = 0.555555556.
Пример 2.2. Найти xi и |
Ai для n = 4 . |
|
|
|
||||||
Полином Лежандра четвертой степени: |
|
|
|
|||||||
P |
(t) = |
1 |
|
|
d 4 |
(x2 −1)4 = x4 |
+3(x2 −1)x2 + 3 (x2 −1)2 = 4x4 −3x2 + 3 x4 − 6 x2 + 3 = |
|||
|
|
|||||||||
4 |
24 4! |
|
dx4 |
|
8 |
8 |
8 |
8 |
||
|
|
|
||||||||
= 18 (35x4 −30x2 +3)
Приравнивая этот полином к нулю, находим корни:
t |
= − |
15 + |
120 |
, |
|
|
|
1 |
|
35 |
|
|
|
|
|
|
|
|
|
|
|
||
t2 |
= − |
15 − |
120 |
, |
t1 = −0.861136312, |
||
35 |
|
t2 |
= −0.339981044, |
||||
|
|
|
|
||||
t3 |
= |
15 − |
120 |
, |
|
t3 |
= 0.339981044, |
|
t4 |
= 0.861136312. |
|||||
|
|
35 |
|
|
|||
t4 |
= |
15 + |
120 |
, |
|
|
|
|
|
35 |
|
|
|
|
|
Для определения коэффициентов A1 , A2 , A3 , A4 имеем систему:
A1 + A2 + A3 + A4 = 2
t1 A1 +t2 A2 +t3 A3 +t4 A4 = 0
t12 A1 +t22 A2 +t32 A3 +t42 A4 = 23
t13 A1 +t23 A2 +t33 A3 +t43 A4 = 0
Решая эту систему, получаем:
A1 = 0.347854845
A2 = 0.652145155
A3 = 0.652145155
A4 = 0.347854845
Рассмотрим теперь использование квадратурной формулы Гаусса для
вычисления общего интеграла ∫b |
f (x)dx . |
|
|
|
|
|||||||||
|
|
|
a |
|
|
|
|
|
|
|
|
|
|
|
Делая замену переменной x = |
b + a |
+ |
b −a |
t |
получим: |
|||||||||
|
|
|
|
|
||||||||||
|
2 |
2 |
|
|
|
|
|
|
||||||
∫b |
f (x)dx = |
b −a |
∫1 |
f ( |
b + a |
+ |
b −a |
t)dt |
||||||
|
|
|
||||||||||||
a |
|
|
|
2 −1 |
2 |
|
|
t |
||||||
