- •Вычислительная математика лабораторный практикум
- •Содержание
- •Метод исключения Гаусса
- •Введение
- •Построение алгоритма исключения Гаусса
- •3. Реализация алгоритма Гаусса в Excel
- •4. Реализация алгоритма Гаусса в пакете Mathcad
- •5. Реализация алгоритма Гаусса на языке Turbo Pascal
- •6. Вычисление определителя и обратной матрицы
- •7. Выбор ведущего элемента
- •8. Числа обусловленности
- •9. Задания для самостоятельной работы
- •Контрольные вопросы
- •1.Введение
- •Метод Якоби для решения слау
- •Метод Зейделя для решения слау
- •Задания для самостоятельной работы
- •5. Контрольные вопросы
- •Численные методы решения нелинейных уравнений
- •1. Введение
- •2. Отделение корней уравнения
- •3. Метод дихотомии для решения нелинейных уравнений
- •4. Метод Ньютона для решения нелинейных уравнений
- •5. Задания для самостоятельной работы
- •6. Контрольные вопросы
- •Полиномиальная интерполяция
- •1. Интерполяция данных каноническим полиномом
- •2. Интерполяционный полином Ньютона
- •3. Интерполяционный полином Лагранжа
- •4. Задания для самостоятельной работы
- •Контрольные вопросы
- •Метод наименьших квадратов
- •1. Введение
- •2. Линейная аппроксимация
- •3. Аппроксимация нелинейными функциями
- •4. Аппроксимация полиномом
- •Задания для самостоятельной работы
- •6. Контрольные вопросы
- •1. Введение
- •2. Постановка задачи
- •3. Численное дифференцирование с заданной точностью
- •Модификация алгоритма численного дифференцирования Использование центральной разности (6.3) для приближения производной позволяет проводить вычисления с точность порядка :
- •Результаты вычислений сведем в таблицу:
- •5. Действия над приближенными числами
- •6. Задания для самостоятельной работы
- •Контрольные вопросы
- •1. Введение
- •2. Метод прямоугольников
- •3. Метод трапеций
- •4. Метод парабол
- •5. Вычисление интегралов с заданной точностью
- •Метод Гаусса
- •7. Задания для самостоятельной работы
- •2. Провести расчеты знакомого уже нам интеграла ошибок
- •8. Контрольные вопросы
- •Список литературы
- •Учебное издание
3. Аппроксимация нелинейными функциями
Минимизация функционала (1) в случае нелинейных аппроксимирующих функций сводится к решению систем нелинейных уравнений. Пусть, к примеру
(5.18)
где А, С – параметры. Вычислив частные производные от функционала:
(5.19)
и приравняв их нулю, получим систему нелинейных уравнений относительно этих параметров:
(5.20)
(5.21)
Решение такой системы можно выполнить одним из методов, рассмотренных нами ранее. Наиболее эффективный из них, метод Ньютона, требует для сходимости итерационного процесса подбора приемлемых начальных значений искомых параметров А и С. Они могут быть известны из каких-либо физических или общих соображений.
Разработайте программу нелинейной аппроксимации методом наименьших квадратов.
Часто нелинейную аппроксимацию можно свести к линейной путем соответствующих алгебраических преобразований. Так, логарифмируя функцию (5.18), получим:
ln φ = Ax + ln C
Введение новых переменных у = ln φ; a0 = ln C позволяет далее решать известную линейную задачу методом наименьших квадратов.
Приведем некоторые полезные преобразования функций:
(5.22)
(5.23)
(5.24)
(5.25)
Разработайте соответствующие подпрограммы и проведите их тестирование.
4. Аппроксимация полиномом
Пусть данные аппроксимируются полиномом (5.2) степени m. Нахождение коэффициентов степенного полинома методом наименьших квадратов позволяет записать систему алгебраических уравнений в следующем виде:
(5.26)
где - неизвестные коэффициенты полинома . Матрица коэффициентов называется матрицей Грама. Она состоит из сумм и является симметричной. Для ее вычисления нужно построить алгоритм, который вычисляет первую строку и последний столбец, а затем эти данные расположить симметрично. Вычисление степенных зависимостей можно оформить в виде рекурсивной функции. Независимо необходимо также вычислить столбец коэффициентов, расположенных справа. В результате можно записать следующую процедуру:
procedure Data (var a:dim2; var n:integer);
const n=10;
type vec=array[0..n] of real;
procedure Tab (var x, y:vec);
{см. предыдущую процедуру Data}
function St (v:real; k:integer):real;
begin
if k=0
then St:=1.0
else St:=v*St(v, k-1);
end;
var i, j, k:integer; x, y:vec;
begin m=3; Tab(x, y);
for i:=1 to m do
for j:=1 to m+1 do a[i,j]:=0.0;
for i:=1 to m do
for j:=1 to m+1 do
for k:=0 to n do
if j = m+1
then a[i, j]:=a[i, j]+y[k]*St(x[k], i-1)
else begin a[i, j]:=a[i, j]+St(x[k], i+j-2);
if i<>j then a[j, i]:=a[i, j];
end;
end;
Провести отладку процедур для формирования и решения системы уравнений (5.20).
Изучить поведение плохо обусловленных матриц на примере матрицы Грама.
Представим в пакете Excel аппроксимацию функции методом наименьших квадратов.
Используя метод наименьших квадратов, выведем эмпирическую формулу для функции , заданной в табличном виде:
-
х
-3
-1
0
1
3
у
-4
-0.8
1.6
2.3
1.5
Если изобразить данные табличные значения на графике (рис.5.1), то легко убедится, что в качестве эмпирической формулы для аппроксимации функции можно принять квадратный трехчлен, графиком которого является парабола:
Рис.5.1. График значений сеточной функции
В данном случае имеем , тогда решение ищется в виде
Составим систему:
Расчеты коэффициентов системы приведены в табл. 5.1.
Таблица 5.1. Расчеты коэффициентов системы.
xi |
fi |
1 |
xi2 |
xi3 |
xi4 |
xifi |
xi2fi |
-3 |
-4 |
1 |
9 |
-27 |
81 |
12 |
-36 |
-1 |
-0,8 |
1 |
1 |
-1 |
1 |
0,8 |
-0,8 |
0 |
1,6 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
2,3 |
1 |
1 |
1 |
1 |
2,3 |
2,3 |
3 |
1,5 |
1 |
9 |
27 |
81 |
4,5 |
13,5 |
0 |
0,6 |
5 |
20 |
0 |
164 |
19,6 |
-21 |
s1 |
t0 |
s0 |
s2 |
s3 |
s4 |
t1 |
t2 |
В результате получаем систему:
Решая полученную систему методом Гаусса, получим
a0=1,234; a1= 0, 98; a 2= -0,279.
Искомая сглаживающая функция
Представим в пакете MathCAD аппроксимацию функции методом наименьших квадратов.
Используя метод наименьших квадратов, выведем эмпирическую формулу для функции , заданной в табличном виде:
-
х
-3
-1
0
1
3
у
-4
-0.8
1.6
2.3
1.5
Ниже приведена функция для вычисления коэффициентов многочлена в данном пакете.
Таким образом:
a0=1,234; a1= 0, 98; a 2= -0,279.
Искомая сглаживающая функция