- •Методы математического моделирования и вычислительной математики Никитина т.П. Оглавление
- •Введение
- •Основы моделирования
- •Классификация математических моделей
- •Основные этапы математического моделирования
- •Математические модели аналитического типа
- •Эмпирические математические модели
- •Методы вычислительной математики
- •Постановка задачи
- •Этапы решения задачи
- •Локализация корня
- •Метод половинного деления
- •Метод хорд
- •Метод касательных (Метод Ньютона)
- •Комбинированный метод хорд и касательных
- •Решение систем линейных уравнений (слау)
- •Приближенные методы решения систем линейных уравнений Метод простой итерации ( Метод Якоби)
- •Метод Гаусса - Зейделя
- •1. Использованием обратной матрицы
- •2. Решение системы уравнений методом Гаусса
- •Интерполяция
- •Постановка задачи
- •Полиномиальная (алгебраическая) интерполяция
- •Интерполяция по Лагранжу
- •Вычисление определенных интегралов вида Постановка задачи
- •Метод прямоугольников
- •Метод трапеций
- •Метод Симпсона (метод парабол)
- •Решение обыкновенных дифференциальных уравнений Постановка задачи
- •Численные методы решения задачи Коши оду первого порядка
- •Метод Эйлера
- •Усовершенствованный метод Эйлера. Метод Гюна.
- •Методы прогноза и коррекции
- •Метод Рунге-Кутта
- •Решение задачи оптимизации
- •Постановка задачи
- •Численные методы решения задачи одномерной оптимизации
- •Этапы решения задачи
- •Метод двойного половинного деления
- •Метод золотого сечения
- •Численные методы решения задачи линейного программирования
- •Постановка задачи
- •Реализация симплекс метода
- •Литература
Полиномиальная (алгебраическая) интерполяция
Если в качестве интерполяционной функции выбран многочлен от од ой переменной: P(x)=a0 + a1·x + a2·x2 + a3·x3 +…+an·xn, такая интерполяция называется алгебраической интерполяцией. В этом случае СЛАУ для определения коэффициентов интерполяционного полинома имеет вид:
а ее определитель:
отличен от нуля, так как узлы интерполяции попарно различны. Это известный из курса линейной алгебры определитель Вандермонда. Следовательно, решение задачи алгебраической интерполяции всегда существует и единственно.
Прямое решение этой системы никогда не используется в практических вычислениях. При больших nсистема для определения коэффициентов интерполяции оказывается плохо обусловленной. Однако решение этой задачи можно построить другим способом:
Такой вид записи алгебраического интерполяционного полинома называется интерполяционным полиномом в форме Лагранжа. Он удобен для теоретического рассмотрения, но на практике часто оказывается более удобной другая форма представления — полином в форме Ньютона.
Интерполяционный полином в форме Ньютона
Пусть задана табличная функция. Построим таблицу разделенных разностей
|
|
| ||
|
fn |
f(xn-1,xn) |
f(xn-2,xn-1,xn) |
f(x0,x1,…,xn) |
Введем обозначениеi≠j, разделенная разность (или разностноеотношение) первого порядка. Очевидно, что.
Вычислим все разностные отношения первого порядка по двум первым точкам (разделенные разности). Определим рекуррентно разделенные разности более высокого порядка.
Теперь можно построить всю таблицу разделенных разностей.
Предположим, что сетка равномерная, т.е. xk=x0+kh.
Если мы вычислим вторую производную в точке x1:
Разделенная разность второго порядка, то она будет аппроксимировать производную второго порядка с точностью до числового множителя 0,5. Если аналогично рассуждать дальше, то разделенная разность порядка kбудет аппроксимировать соответствующую производную с точностью до числового множителя 1/k!.
По данным на сетке наибольший порядок разности, которую возможно вычислить f(x0, x1, … ,xn) - разделенная разностьn-ого порядка.
Определим Pn(x)=f0+f(x0,x1)·(x-x0)+ f(x0,x1,x2)·(x-x0)·(x-x1)+…+ f(x0,x1,...,xn)·(x-x0) ·(x-x1) ·…·(x-xn-1).
Это и есть интерполяционный полином в форме Ньютона. Проверим, что этот полином является интерполяционным. Применим метод математической индукции. Надо проверить совпадения интерполяционного полинома и функции в узлах интерполяции.
x=x0, P(x0)=f0,
x=x1, P1 = и так далее.
Интерполяция по Лагранжу
Пусть некоторая функция y=f(x) задана таблично:
xi |
yi |
x0 |
y0 |
x1 |
y1 |
. |
. |
. |
. |
. |
. |
xn |
yn |
где x0, x1,..., xn- узлы интерполяции.
Найти интерполяционный многочлен Лагранжа Ln(x)и вычислить значение функцииf(x)в точкес, несовпадающей ни с одним из узлов интерполяции.
Многочлен Лагранжа, как это было рассмотрено выше, строят следующим образом:
Эту формулу можно записать несколько иначе:
Обозначим , а zi=
Тогда . Запишемв видеи будем вычислять коэффициенты,, … ,
Для n=1
i=0 s0=, a00=-x1, a01=1; i=1 s1=, a10=-x0, a11=1.
Для n=2
i=0 s0=, a00=x1·x2, a01=-(x1+x2), a02=1;
i=1 s1=, a10=x0·x2, a11=-(x0+x2), a12=1;
i=2 s2=, a20=x0·x1, a21=-(x0+x1), a22=1.
Для n=3
i=0 s0=, a00=-x1·x2·x3, a01=(x1·x2+ x1·x3+ x2·x3),
a02=-(x1+x2+x3), a03=1;
i=1 s1=, a10=-x0·x2·x3, a11=(x0·x2+ x0·x3+ x2·x3),
a12=-(x0+x2+x3), a13=1;
i=2 s2=, a20=-x0·x1·x3, a21=(x0·x1+ x0·x3+ x1·x3),
a22=-(x0+x1+x3), a23=1;
i=3 s3=, a30=-x0·x1·x2, a31=(x0·x1+ x0·x2+ x1·x2),
a32=-(x0+x1+x2), a33=1.
Аналогичным образом можно найти коэффициенты для любого значения n.
Алгоритм метода
Ввод исходных данных: таблицы значений xi,yi, i=0,1,2,..,n и с.
Расчет значений si.
Расчет коэффициентов aij.
Расчет Li.
Расчет Ln=.
Расчет Ln(с).
Вывод результатов.
Реализация метода в MS Excel
Исходные данные для расчета:
x |
y |
0 |
2,218282 |
1 |
1,216526 |
2 |
0,159583 |
3 |
-0,12842 |
4 |
0,020147 |
5 |
0,827984 |
Заполнение клеток листа MS Excel:
Адрес клетки |
Содержание |
Тип |
A2 |
x |
Текст |
B2 |
y |
Текст |
A3:B8 |
Исходные данные |
Число |
A10 |
c равное 1,5 |
Число |
D2 |
yi/П(xi-xj) |
Текст |
K2:F2 |
а5i а4i а3i а2i а1i а0i соответственно |
Текст |
N2:R2 |
x5 x4 x3 x2 x соответственно |
Текст |
D3 |
=B3/((A3-A4)*(A3-A5)*(A3-A6)*(A3-A7)* (A3-A8)) |
Формула |
D4 |
=B4/((A4-A5)*(A4-A6)*(A4-A7)*(A4-A8)* (A4-A3)) |
Формула |
D5 |
=B5/((A5-A6)*(A5-A7)*(A5-A8)*(A5-A4)* (A5-A3)) |
Формула |
D6 |
=B6/((A6-A7)*(A6-A8)*(A6-A3)*(A6-A4)* (A6-A5)) |
Формула |
D7 |
=B7/((A7-A8)*(A7-A3)*(A7-A4)*(A7-A5)* (A7-A6)) |
Формула |
D8 |
=B8/((A8-A3)*(A8-A4)*(A8-A5)*(A8-A6)* (A8-A7)) |
Формула |
F3:F8 |
1 |
Число |
G3 |
=-(A$4+A$5+A$6+A$7+A$8) |
Формула |
G4 |
=-(A$3+A$5+A$6+A$7+A$8) |
Формула |
G5 |
=-(A$3+A$4+A$6+A$7+A$8) |
Формула |
G6 |
=-(A$3+A$4+A$5+A$7+A$8) |
Формула |
G7 |
=-(A$3+A$4+A$5+A$6+A$8) |
Формула |
G8 |
=-(A$3+A$4+A$5+A$6+A$7) |
Формула |
H3 |
=(A4*A5+A4*A6+A4*A7+A4*A8+A5*A6+ A5*A7+A5*A8+A6*A7+A6*A8+A7*A8) |
Формула |
H4 |
=(A5*A3+A5*A6+A5*A7+A5*A8+A6*A7+ A6*A8+A6*A3+A7*A8+A7*A3+A8*A3) |
Формула |
H5 |
=(A6*A7+A6*A8+A6*A3+A6*A4+A7*A8+ A7*A3+A7*A4+A8*A3+A8*A4+A3*A4) |
Формула |
H6 |
=(A7*A8+A7*A3+A7*A4+A7*A5+A8*A3+ A8*A4+A8*A5+A3*A4+A3*A5+A4*A5) |
Формула |
H7 |
=(A8*A3+A8*A4+A8*A5+A8*A6+A3*A4+ A3*A5+A3*A6+A4*A5+A4*A6+A5*A6) |
Формула |
H8 |
=(A3*A4+A3*A5+A3*A6+A3*A7+A4*A5+ A4*A7+A4*A6+A5*A6+A5*A7+A6*A7) |
Формула |
I3 |
=-(A4*A5*A6+A4*A5*A7+A4*A5*A8+ A4*A6*A7+A4*A6*A8+A4*A7*A8+A5*A6*A7+A5*A6*A8+A5*A7*A8+A6*A7*A8) |
Формула |
I4 |
=-(A5*A6*A7+A5*A6*A8+A5*A6*A3+ A5*A7*A8+A5*A7*A3+A5*A8*A3+A6*A7*A8+A6*A7*A3+A6*A8*A3+A7*A8*A3) |
Формула |
I5 |
=-(A6*A7*A8+A6*A7*A3+A6*A7*A4+ A6*A8*A3+A6*A8*A4+A6*A3*A4+A7*A8*A3+A7*A8*A4+A7*A3*A4+A8*A3*A4) |
Формула |
I6 |
=-(A7*A8*A3+A7*A8*A4+A7*A8*A5+ A7*A3*A4+A7*A3*A5+A7*A4*A5+A8*A3*A4+A8*A3*A5+A8*A4*A5+A3*A4*A5) |
Формула |
I7 |
=-(A8*A3*A4+A8*A3*A5+A8*A3*A6+ A8*A4*A5+A8*A4*A6+A8*A5*A6+A3*A4*A5+A3*A4*A6+A3*A5*A6+A4*A5*A6) |
Формула |
I8 |
=-(A3*A4*A5+A3*A4*A6+A3*A4*A7+ A3*A5*A6+A3*A5*A7+A3*A6*A7+A4*A5*A6+A4*A5*A7+A4*A6*A7+A5*A6*A7) |
Формула |
J3 |
=A4*A5*A6*A7+A4*A5*A6*A8+A4*A5*A7*A8+A4*A6*A7*A8+A5*A6*A7*A8 |
Формула |
J4 |
=A5*A6*A7*A8+A5*A6*A7*A3+A5*A6*A8*A3+A5*A7*A8*A3+A6*A7*A8*A3 |
Формула |
J5 |
=A6*A7*A8*A3+A6*A7*A8*A4+A6*A7*A3*A4+A6*A8*A3*A4+A7*A8*A3*A4 |
Формула |
J6 |
=A7*A8*A3*A4+A7*A8*A3*A5+A7*A8*A4*A5+A7*A3*A4*A5+A8*A3*A4*A5 |
Формула |
J7 |
=A8*A3*A4*A5+A8*A3*A4*A6+A8*A3*A5*A6+A8*A4*A5*A6+A3*A4*A5*A6 |
Формула |
J8 |
=A3*A4*A5*A6+A3*A4*A5*A7+A3*A4*A6*A7+A3*A5*A6*A7+A4*A5*A6*A7 |
Формула |
K3 |
=-A4*A5*A6*A7*A8 |
Формула |
K4 |
=-A5*A6*A7*A8*A3 |
Формула |
K5 |
=-A6*A7*A8*A3*A4 |
Формула |
K6 |
=-A7*A8*A3*A4*A5 |
Формула |
K7 |
=-A8*A3*A4*A5*A6 |
Формула |
K8 |
=-A3*A4*A5*A6*A7 |
Формула |
N3 |
=F3*$D3 |
Формула |
N4 |
=F4*$D4 |
Формула |
N5 |
=F5*$D5 |
Формула |
N6 |
=F6*$D6 |
Формула |
N7 |
=F7*$D7 |
Формула |
N8 |
=F8*$D8 |
Формула |
O3 |
=G3*$D3 |
Формула |
O4 |
=G4*$D4 |
Формула |
O5 |
=G5*$D5 |
Формула |
O6 |
=G6*$D6 |
Формула |
O7 |
=G7*$D7 |
Формула |
O8 |
=G8*$D8 |
Формула |
P3 |
=H3*$D3 |
Формула |
P4 |
=H4*$D4 |
Формула |
P5 |
=H5*$D5 |
Формула |
P6 |
=H6*$D6 |
Формула |
P7 |
=H7*$D7 |
Формула |
P8 |
=H8*$D8 |
Формула |
Q3 |
=I3*$D3 |
Формула |
Q4 |
=I4*$D4 |
Формула |
Q5 |
=I5*$D5 |
Формула |
Q6 |
=I6*$D6 |
Формула |
Q7 |
=I7*$D7 |
Формула |
Q8 |
=I8*$D8 |
Формула |
R3 |
=J3*$D3 |
Формула |
R4 |
=J4*$D4 |
Формула |
R5 |
=J5*$D5 |
Формула |
R6 |
=J6*$D6 |
Формула |
R7 |
=J7*$D7 |
Формула |
R8 |
=J8*$D8 |
Формула |
S3 |
=K3*$D3 |
Формула |
S4 |
=K4*$D4 |
Формула |
S5 |
=K5*$D5 |
Формула |
S6 |
=K6*$D6 |
Формула |
S7 |
=K7*$D7 |
Формула |
S8 |
=K8*$D8 |
Формула |
M10 |
аj |
Текст |
N10 |
=СУММ(N3:N8) |
Формула |
O10: S10 |
Автозаполнение формулой из N10 |
Формула |
B10 |
=N9*A10^5+O9*A10^4+P9*A10^3+Q9*A10^2+ R9*A10+S9 |
Формула |
Вид листа MS Excel.
Ответ: Интерполяционная функция 0,01426·х5-0,1908·х4+0,92568·х3-1,6829·х2-0,068·х+2,2183 и значение функции в точке с=1,5 равно 0,59628.
Реализация в MatLab
Дано: таблица значений функции
x |
y |
0 |
2,218282 |
1 |
1,216526 |
2 |
0,159583 |
3 |
-0,12842 |
4 |
0,020147 |
5 |
0,827984 |
точка с=1,5.
Найти значение функции в точке с (задача уплотнения таблицы) по методу Лагранжа.
Решение. Воспользуемся интерполяционной формулой Лагранжа
Составим функцию, реализующую расчет по этой формуле.
function L = lagrang(x,y,c)
% вычисление интерполяционного полинома в форме Лагранжа
% x - массив координат узлов
% y - массив значений интерполируемой функции
% c - значение аргумента, для которого надо вычислить значение функции
% L - значение функции в точке с
% число узлов интерполяции
N=length(x);
% обнуляем L
L=0;
for k=1:N
t=1;
for j=[1:k-1,k+1:N]
t=t*(с-x(j))/(x(k)-x(j));
end
L=L+y(k)*t;
end
end
Сохраним эту функции в файле lagrang.m.
Реализация функции в MatLab:
В командном окне введем следующие команды:
% Задаем значения х
>> x=0:1:5;
% Задаем значения у
>> y=[2.218282 1.216526 0.159583 -0.12842 0.020147 0.827984];
% Задаем значение с
>> с=1.5;
>> L=lagrang(x,y,с);
Реализация в MatLab:
Пример. Постановка задачи. Прямой расчет по функции Лапласа достаточно сложен, поэтому практически во всех книгах по теории вероятности и математической статистике приводятся таблицы значений этой функции. Возьмем часть одной из таких таблиц в качестве исходных данных:
x |
y |
0,1 |
0,0398 |
0,15 |
0,0596 |
0,2 |
0,0793 |
0,25 |
0,0987 |
0,3 |
0,1179 |
0,35 |
0,1368 |
Найти интерполяционную функцию по методу Лагранжа и рассчитать значение функции в точке 0,22.
Решение задачи средствами MS Excel
Скопируем диапазон клеток A2:S10 с листа MS Excel с предыдущим расчетом и вставим на новый лист в клетки A6:S14. В клетки A7: B12 введем исходные данные и получим коэффициенты интерполяционной функции. В клетку А14 запишем значение 0,22 и клетке В14 увидим значение у (0,22). Найдем расчетное значение функции Лапласа по формуле и запишем в клетку В15.
Вид листа MS Excel.
Ответ: Интерполяционная функция -13,33·х5+15,333·х4-6,833·х3+1,4217·х2+0,2582·х+0,005 и значение функции в точке с=0,22 равно 0,08709, которое хорошо согласуется с значением по формуле Лапласа.
Решение задачи в MatLab
Решение рассматриваемого примера показано на рисунке:
Ответ: значение функции в точке 0,22 равно 0,0871.