- •Оглавление
- •Введение
- •Краткий обзор системы
- •Знакомство с интерфейсом Scilab
- •Функции, определяемые пользователем и процедуры
- •Циклы
- •Погрешность результата численного решения задачи
- •Приближенные вычисления определенных интегралов
- •Методы прямоугольников
- •Метод трапеций
- •Метод Симпсона
- •Квадратуры Гаусса
- •Методы Монте-Карло
- •Вычисление определенных интегралов в системе Scilab
- •Решение систем линейных алгебраических уравнений
- •Метод Гаусса
- •Формула Крамера
- •Метод простых итераций
- •Метод Зейделя
- •Метод отражений
- •Метод LU-разложений
- •Решение нелинейных алгебраических уравнений
- •Метод половинного деления
- •Метод секущих
- •Метод секущих (с изменяемым углом)
- •Метод Ньютона (касательных)
- •Метод Бернулли
- •Аппроксимация и интерполирование функций
- •Интерполяционный многочлен Лагранжа
- •Интерполяционная формула Ньютона
- •Интерполяционные формулы Гаусса
- •Линейная аппроксимация по методу наименьших квадратов
- •Кусочно-кубические сплайны
- •Анимация на плоскости
- •Анимация в пространстве
- •Метод Рунге-Кутта
- •Метод Эйлера
- •Метод Прогонки
- •Метод Пикара
- •Возможности Scilab для решения ОДУ
- •Список Литературы
23
Глава_2.
Приближенные вычисления определенных интегралов
1) Методы прямоугольников
Простейшим методом численного интегрирования является метод прямоугольников. Он непосредственно использует замену определенного интеграла интегральной суммой:
n
Sn = s1 + s2 +K+ sn = ∑ f (ξi ) xi .
i=1
Рис. 1
В качестве точек ξi могут выбираться левые (ξi = xi−1 ) или правые (ξi = xi ) границы элементарных отрезков. Обозначим f (xi ) = yi , xi = hi . Тогда получим следующие формулы для этих случаев:
∫b |
f (x)dx = h1 y0 + h2 y1 +K+ hn yn−1 , |
//(метод левых прямоугольников) |
a |
|
|
∫b |
f (x)dx = h1 y1 +h2 y2 +K+hn yn . |
//(метод правых прямоугольников) |
a |
|
|
Также на практике широко применяется алгоритм вычисления определенных интегралов, называемый методом центральных прямоугольников. Этот метод более точен. Здесь используется значения функции в средних точках элементарных отрезков:
24
|
|
|
|
|
|
b |
n |
|
|
|
|
|
|
|
∫ f (x)dx = ∑hi f (xi−1/ 2 ) , |
||
|
|
xi−1 + xi |
|
|
hi |
a |
i=1 |
|
где xi−1/ 2 |
= |
= xi−1 |
+ |
, |
i =1, 2, Kп. |
|||
|
|
|||||||
|
2 |
|
2 |
|
|
|||
Важным частным случаем формул прямоугольников является их применение при численном интегрировании с постоянным шагом. В
этом случае hi = h = const . |
Формулы для вычисления определенных |
|||||
интегралов принимают вид: |
|
|
|
|||
b |
n−1 |
|
|
|
|
|
∫ f (x)dx = h∑ f (xi ) , |
//(метод левых прямоугольников) |
|||||
a |
i=0 |
|
|
|
|
|
b |
n |
|
|
|
|
|
∫ f (x)dx = h∑ f (xi ) , |
//(метод правых прямоугольников) |
|||||
a |
i=1 |
|
|
|
|
|
b |
n |
|
|
|
|
|
∫ f (x)dx = h∑ f (xi−1/ 2 ) . |
//(метод центральных прямоугольников) |
|||||
a |
i=1 |
|
|
|
|
|
Задача 1. |
Вычислить определенный интеграл |
1 |
x |
dx методом левых, |
||
−∫1 |
||||||
1+ x + x2 |
||||||
правых и центральных прямоугольников с точностью ε = 0.000001.
Решение. Приведем решение данной задачи в системе Scilab. Вычисляем данный интеграл методом левых прямоугольников.
Листинг 2.1.
a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;
function[value] = f(x) value = x/(1+x+x*x);
endfunction
function[n, summa] = left(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 = 0:n
summa = summa + f(a + i*h)*h end
n=n*2; end
endfunction
[n, integral] = left(a, b); integral, n
25
Рис. 2. Результат работы Листинга_2.1
Теперь вычислим данный интеграл методом правых прямоугольников.
Листинг 2.2.
a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;
function[value] = f(x) value = x/(1+x+x*x);
endfunction
function[n, summa] = right(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 + f(a + i*h)*h end
n=n*2; end
endfunction
[n, integral] = right(a, b); integral, n
26
Рис. 3. Результат работы Листинга_2.2
Наконец, вычисляем данный интеграл |
методом центральных |
прямоугольников. |
|
Листинг 2.3.
a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;
function[value] = f(x) value = x/(1+x+x*x);
endfunction
function[n, summa] = center_(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 + f(a + 0.5*h*(2*i-1))*h; end
n=n*2; end
endfunction
[n, integral] = center_(a, b); integral, n
