Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 семестр.pdf
Скачиваний:
74
Добавлен:
29.05.2015
Размер:
1.12 Mб
Скачать

C0 (n+1) + C1Σxi + C2 Σ xi2 +...+ Cm Σxim = Σ yi ; C0 Σ xi + C1Σ xi2 + C2 Σ xi3 +...+ Cm Σxim+1 = Σ yi xi ;

............................................................................................ (9.4)

C0 Σ xim + C1 Σ xim+1 + C2 Σ xim+2 +...+ Cm Σ xi2m = Σ yi xi .

Для определения коэффициентов Сi и, следовательно, искомой зависимости (9.2) необходимо вычислить суммы и решить систему уравнений (9.4). Матрица системы (9.4) называется матрицей Грама и является симметричной и положительно определенной. Эти полезные свойства используются при ее решении:

(n+1)

Σ xi

Σ xi2 ...

Σ xim

Σ yi

 

Σ xi

Σ xi2

Σ xi3 ...

Σ xim+1

Σ yi xi

(9.5)

................................................................................................

 

Σ xim

Σ xim+1

Σ xim+2 ...

Σ xi2m

Σ yi xim

 

Нетрудно видеть, что для формирования расширенной матрицы Грама (9.5) достаточно вычислить только элементы первой строки и двух последних столбцов, остальные элементы не являются «оригинальными» и заполняются с помощью циклического присвоения.

9.1. Процедура заполнения расширенной матрицы Грама

Реализация процедуры заполнения расширенной матрицы Грама на языке Паскаль может выглядеть так:

function ct(x:real;n:integer):real; {Функция возведения Х в целую степень n}

var i:integer;s:real; begin

s:=1;

for i:=1 to n do s:=s*x; ct:=s;

end;

procedure gram(n,m:integer;var a:tr); var i,j:integer; p,q,r,s:real;

begin

for j:=0 to m do begin

s:=0; r:=s; q:=s; for i:=0 to n do

begin

74

p:=ct(x[i],j); s:=s+p; r:=r+p*y[i]; q:=q+p*ct(x[i],m); end;

a[0,j]:=s; a[j,m+1]:=r; a[j,m]:=q; end;

for i:=1 to m do

for j:=0 to m-1 do a[i,j]:=a[i-1,j+1]; a[0,0]:=n+1;

end;

где a[i,j] – расширенная матрица Грама, x[i],y[i] – исходные точки, n – число исходных точек, m – степень полинома.

Далее можно переходить к решению этой системы уравнений. Для решения систем уравнений с матрицей Грама разработаны методы сингулярного разложения. Если же m < 5, то такие системы можно решать и более простым методом исключения Гаусса (см. выше).

После решения системы мы нашли искомые коэффициенты С0, С1,

..., Сm аппроксимирующей функции

f(x)=C0 + C1 x + C2 x2+...+Cm xm.

Для проверки нужно подставить данные x[i] в найденную функцию и сравнить значения с заданными y[i], а также вычислить относительную погрешность для этих точек.

Можно составить функцию F1 для вычисления значений полинома: function F1(x:real; m:integer):real;

var i:integer; s:real; begin

s:=0;

for i:=0 to m do s:=s+c[i]*ct(x,i); F1:=s;

end;

9.2. Алгоритм решения задачи

Весьалгоритмрешениязадачибудетвыглядетьследующимобразом.

1.Ввод исходных данных:

n – число заданных точек;

m – степень полинома;

x[i],y[i] – заданные точки. Смотрите примеры 7.1 и 7.2.

2.Формирование расширенной матрицы Грама a[m,m+1].

3.Решение системы нормальных уравнений.

75

4.Вывод коэффициентов c[m].

5.Циклический перебор точек x[i], вычисление значения аппроксимирующей функции, относительной погрешности в каждой точке

ивывод результатов на экран.

6.Далее рекомендуется воспользоваться графическими возможностями Турбо Паскаля и построить график найденной функции, а также нанести исходные точки. Подробнее смотрите в следующей главе.

МНК можно применить не только к многочленам, но и к другим функциональным зависимостям. Например, вместо (9.2) ищется зависимость в виде показательной функции

f(x)= y = a xb.

Непосредственное использование МНК приведет к нелинейным нормальным уравнениям, но эта проблема решается, если использовать вместо экспериментальных значений их логарифмы:

ln(y) = ln(a) + b ln(x).

Теперь минимизируется сумма квадратов разностей между логарифмами экспериментальных значений yi и логарифмами ординат функции

y = a xb.

При этом получаем

S = Σ [ln(yi) ln(a) b ln(xi)]2.

Дифференцируяпоa иb, получимсистемунормальныхуравнений

(n +1) ln(a) + Σ ln(xi) b = Σln(yi) ;

Σ ln(xi) ln(a) + Σ ln(xi)2 b = Σ [ln(xi) ln(yi)] .

Неизвестными в этой системе являются ln (a) и b. После их определения a находится по величине логарифма.

76

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]