- •Тема 1. Численные методы решения уравнений
- •Отделение корня
- •Графический метод отделения корня
- •Уточнение корня методом деления отрезка пополам
- •1.3 Метод касательных
- •Тема 2. Аппроксимация
- •2.1 Меры погрешности аппроксимации
- •Метод наименьших квадратов
- •2.3 Неполиномиальная регрессия
- •2.2 Нахождение коэффициентов cj при точечной аппроксимации методом наименьших квадратов
- •Тема 3. Интерполяция
- •3.1 Интерполяция по Лагранжу
- •3.2 Интерполяция при постоянном шаге
- •3.3 Обратная интерполяция
- •3.4 Численное дифференцирование
- •Тема 3. Численное интегрирование
- •Квадратурные формулы прямоугольников, трапеций, Симпсона для вычисления определенных интегралов
- •Тема 4. Численные методы решения обыкновенных дифференциальных уравнений
- •Задача Коши для обыкновенного дифференциального уравнения 1-го порядка
- •Метод Эйлера
- •4.1 Решение систем дифференциальных уравнений первого порядка
- •Решение дифференциальных уравнений первого порядка и систем дифференциальных уравнений первого порядка в Scilab
3.3 Обратная интерполяция
Постановка задачи:
Функция y задана в виде таблицы
-
x
x0
x1
…
xn
y
y0
y1
…
yn
Требуется найти значение аргумента x*, при котором функция принимает некоторое значение y*.
Задачу можно решить по крайней мере двумя различными способами.
а) Строим интерполяционный полином (как правило, ИПЛ)
в)
Решаем уравнение
любым подходящим численным методом
(например, методом деления отрезка
пополам).
Из рисунка видно, что задача может иметь не единственное решение.
а) Строим интерполяционный полином
в) Подставляем в этот полином значение y* и получаем x*:
(
3.8 )
Как правило, решения задачи, полученные первым и вторым способом, будут различными.
3.4 Численное дифференцирование
Численное дифференцирование – это вычисление производных от функций, заданных в виде таблицы. Задача решается в два этапа. На первом этапе строится интерполяционный полином. На втором этапе находятся производные (первая, вторая и т.д.) от этого полинома.
Если шаг постоянный, то на первом этапе строят ИПН.
Найдем первую производную от этого полинома.
(
3.9 )
Аналогично,
( 3.10 )
Если
производную нужно вычислить в каком-либо
узле таблицы (например, в точке х=х0),
то формулы (3.9) и (3.10) упрощаются, так как
( 3.11 )
(
3.12 )
Задача численного дифференцирования относится к числу некорректных задач. Это означает, что сколь угодно малые погрешности в исходных данных могут привести к большим погрешностям результата решения, поэтому к численному дифференцированию не следует прибегать без особой необходимости. По тем же причинам обычно не вычисляют производные старших порядков.
Нахождение значения производной в заданной точке на Scilab:
Найти
clc
function y=f(x)
y=(x+2).^3+5*x;
endfunction
numdiff(f,1)
ans =
32.
Тема 3. Численное интегрирование
Численное
интегрирование – это вычисление
определенных интегралов от функций,
заданных либо в явном виде (например,
),
либо в виде таблицы. В любом случае
функцию приводят к табличному виду,
задавая шаг h
и вычисляя значения подынтегральной
функции в определенных точках. Интегралы
вычисляют с помощью так называемых
квадратурных формул, то есть
(3.13)
К численному интегрированию прибегают тогда, когда интеграл либо невозможно вычислить точными методами, либо это сделать сложно.
Для
нахождения коэффициентов
в формуле (3.13) функцию
заменяют интерполяционным полиномом.
Интеграл от полинома легко вычисляется.
Для нахождения двойных определенных интегралов существуют соответствующие кубатурные формулы (с двойными суммами).
Квадратурные формулы прямоугольников, трапеций, Симпсона для вычисления определенных интегралов
Существует множество квадратурных формул. Рассмотрим три из них.
Формулы прямоугольников
а) формула левых прямоугольников
На
отрезке [a,
b]
функцию
заменяют прямой
и считают, что интеграл (то есть площадь
криволинейной трапеции, ограниченной
осью Х, прямыми х=а
, х=в
и графиком функции
)
приближенно равен площади прямоугольника:
(3.14)
в) формула правых прямоугольников
На
отрезке [a,
b]
функцию
заменяют прямой
и считают, что интеграл приближенно
равен площади прямоугольника:
(3.15)
с) формула центральных прямоугольников
На
отрезке [a,
b]
функцию
заменяют прямой
и считают, что интеграл приближенно
равен площади прямоугольника:
(3.16)
Формула трапеций
На отрезке [a, b] функцию заменяют полиномом первой степени, проходящим через точки (a, f(a)) и (b, f(b)) и считают, что интеграл приближенно равен площади прямоугольной трапеции:
(3.17)
Формула Симпсона
На
отрезке [a,
b]
функцию
заменяют полиномом второй степени,
проходящим через точки (a,
f(a)) ,
)
и (b,
f(b))
и считают, что интеграл приближенно
равен площади заштрихованной криволинейной
трапеции:
(3.18)
Из
рисунков видно, что чем больше длина
отрезка [a,
b],
тем, как правило, больше погрешность,
то есть разность между точным значением
интеграла и приближенным, полученным
по соответствующей квадратурной формуле.
Для уменьшения этой погрешности поступают
следующим образом. Отрезок [a,
b]
разбивается на n
частей. Для простоты будем считать, что
эти части равные, то есть
.
На каждом из отрезков [xi,
xi+1]
используется соответствующая формула.
Получают так называемые обобщенные
формулы.
1а. Обобщенная формула левых прямоугольников
(3.19)
1b. Обобщенная формула правых прямоугольников
(3.20)
1с. Обобщенная формула центральных прямоугольников
(3.21)
2а. Обобщенная формула трапеций
(3.22)
3а. Обобщенная формула Симпсона
(3.23)
Число точек в формуле Симпсона должно быть нечетным.
Чем больше n, тем, как правило, меньше погрешность. Формулы дают следующую погрешность. Погрешность обобщенных формул левых и правых прямоугольников – o(h), погрешность обобщенной формулы центральных прямоугольников и обобщенной формулы трапеций –o(h2). Погрешность обобщенной формулы Симпсона – o(h4) .
Каждую из формул нетрудно запрограммировать.
Пример.
Вычислить
Взять шаг равным одной четвертой длины интервала интегрирования.
Составим таблицу
-
x
0
1
2
3
4
0
0,5
0,667
0,75
0,8
;
Для формулы центральных прямоугольников нам понадобится другая таблица.
x |
0,5 |
1,5 |
2,5 |
3,5 |
|
0,333 |
0,6 |
0,714 |
0,778 |
Приведем один из способов вычисления этого интеграла на Scilab.
-->integrate('x/(x+1)','x',0,4) // ( ans = 2.3905621 )
