Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Вычислительной матема....doc
Скачиваний:
37
Добавлен:
25.04.2019
Размер:
2.08 Mб
Скачать

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.

Искомая сглаживающая функция