ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.06.2025

Просмотров: 1091

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

51

3.3 Аппроксимация функций

Задача аппроксимации функций относится к задачам среднеквадратичного дискретного приближения, при котором мерой отклонения функции ϕ(x) от заданной функции f(x) на множестве точек (xi, yi) (i = 1, …, n) является величина S, равная сумме квадратов разностей между значениями заданной и аппроксимирующей функций в данных точках:

n

S = å(( yi −ϕ( xi ))2 .

(11)

i=1

На вопрос, какое семейство аппроксимирующих функций ϕ(x) выбрать, не существует однозначного ответа. При выборе семейства функций ϕ(x) = g(x, α) предпочтение отдается достаточно простым и хорошо изученным элементарным функциям, линейным относительно параметра α или допускающие линеаризацию. Аппроксимирующую функцию ϕ(x) называют также функцией регрессии.

После того, как выбрано семейство функций g(x, α), осуществляется переход к решению второй задачи – определению наилучшего параметра α = (α0, ..., αm). В соответствии с мерой отклонения (11) для выбора наилучших параметров применим метод наименьших квадратов, который требует минимизации значения S.

Пусть в качестве семейства функций g(x, α) выбраны полиномы m-ой степени

m

Pm(x)= α0 + α1x +...+ αm xm = åα j x j .

(12)

j =0

По методу наименьших квадратов коэффициенты полинома (12) определяются из условия, чтобы суммы квадратов разностей между заданными величинами yi – значениями функции в заданных узлах xi и значениями полинома Pm(xi) в соответствующих точках xi была наименьшей, т.е.

n

m

S = å( yi

− åa j xij )2 → min.

(13)

i=1

j=0

Таким образом, для отыскания аппроксимирующего полинома необходимо определить m+1 его коэффициентов α0, α1,..., αm так, чтобы выполнился сформулированный критерий минимальности суммы (13). Следовательно, в точке α с необходимостью должны выполняться соотношения:

∂ S

= 0;

∂ S

= 0,...,

∂ S

= 0 .

(14)

∂ a

∂ a

∂ a

m

0

1

Считая коэффициенты αi , i = 0, 1, 2,…, m, непрерывными величинами, выполним дифференцирование по αi функции (13) и, подставляя результаты в соотношения (14), получаем систему линейных уравнений m+1-го порядка относительно неизвестных α0, α1,..., αm:


52

¶ s

n

m

ü

= 2 å ( yi

- åα j xij )

= 0,

ï

¶ α0

i=1

j=0

ï

¶ s

n

m

ï

= 2 å( yi -

åα j xij )xi = 0,

ï

¶ α1

i=1

j=0

ý

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

ï

ï

¶ s

n

m

j

m

ï

= 2 å( yi -

åα j xi

)xi

= 0.ï

¶ αm

i=1

j=0

þ

После преобразований получим систему m+1 линейных уравнений:

n

m

n

ü

å å a j xij

= å yi ,

ï

i=1

j =0

i=1

ï

n

m

n

ï

å å a j xij +1

= å yi xi , ï

i=1

j =0

i=1

ý

ï

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

n

ï

m

j + m

n

m ï

å å a j xi

= å yi xi .

i=1

j =0

i=1

ï

þ

Система уравнений (15) в сокращенной записи имеет вид

n m

n

å å a j xij + k = å yi xik ; k = 0, 1, ..., m

i=1 j =0

i =1

(15)

(16)

и решается относительно неизвестных коэффициентов aj (j = 0,1,...,m), например, методом Гаусса.

3.3.1 Оценка точности аппроксимации

Рассмотрим следующее тождество:

yi – y = ( y€i – y )+( yi – y€i ),

где yi – значение функции в i-ом узле аппроксимации; y€i – значение функции регресии в i-ом узле аппроксимации;

y =

– среднее значение функции.

Возведя обе части этого выражения получим

n

å yi

i=1

n

в квадрат и просуммировав от i = 1 до n,

n

n

n

å(yi - y)2

= å(y€i - y)2

+ å(yi - y€i )2 .

(17)

i=1

i=1

i=1


53

Формула (17) играет фундаментальную роль в оценке точности аппроксимации функции. Согласно ей сумма квадратов относительно среднего равна сумме квадратов, обусловленной регрессией плюс сумма квадратов относительно регрессии. Отсюда следует, что разброс y-ов относительно их среднего можно приписать в некоторой степени тому факту, что не все значения функции лежат на линии регрессии. А если бы это было не так, то сумма квадратов относительно регрессии была бы равна нулю, т. е.

n

å(yi − y€i )2 = 0.

i=1

Поэтому пригодность линии регрессии для целей предсказания зависит от того, какая часть суммы квадратов относительно среднего приходится на сумму квадратов, обусловленную регрессией. Мы будем удовлетворены, если величина

n

å(y€i − y)2

R2 =

i=1

(18)

n

å(yi − y)2

i=1

будет не слишком сильно отличать от единицы. Величину R2 называют множест-

венным коэффициентом детерминации или квадратом множественного коэф- фициента корреляции.

3.3.2Алгоритм и программа аппроксимации функции

Вкачестве аппроксимирующей функции выбираем полином степени m:

m

Pm(x, a) = åa j x j .

j =0

Алгоритм аппроксимации функции может быть представлен следующими шагами.

1.Ввести значения: n – число узлов аппроксимации, xi, yi (i = 1, 2,…, n) – значения аргумента и функции в i-ом узле аппроксимации, m – степень аппроксимирующего полинома Pm(x, a).

2.Вычислить коэффициенты матрицы системы линейных уравнений:

n

bkj = åxij +k , k = 0, 1, …, m, j = 0, 1, …, m.

i=1

3.Вычислить свободные члены системы линейных уравнений:

n

bk,m+1 = å yi xik , k = 0, 1, …, m.

i=1

4.Решить систему линейных уравнений методом Гаусса относительно неиз-

вестных a = (a0, a1, …, am).

5.Вычислить величину R2 по формуле (18).


54

6.Вывод результатов: a = (a0, a1, …, am) – коэффициенты аппроксимирующего полинома; R2 – коэффициент множественной детерминации.

7.Конец вычислений.

Пример 3. Функцию f(x), определенную таблицей, аппроксимировать многочленом второй степени, оценить погрешности аппроксимации.

X

xi

1

2

3

4

5

Y

yi

2

2,69

3,1

3,39

3,61

3.3.2.1 Решение в системе Turbo Pascal

program Approksimazia; uses crt;

const

m=2; {наибольшая степень полинома в нашей программе} n=5;{максимальное число узлов аппроксимации}

type

TB=array[0..m+1,0..m+1] of real; {тип расширенной матрицы системы линейных уравнений}

TA=array[0..m] of real;{тип коэффициэнтов аппроксимирующего полинома} TXY=array[1..n] of real;{тип элементов улов аппроксимации}

{процедура решения системы линейных уравнений методом Гаусса} procedure pGauss(A:TB; n: byte; Var x:TA);

var

k,i,j:byte; d:real; begin

{прямой ход в методе Гаусса}

for k:=0 to n-1 do {цикл удаления k-й неизвестной} for i:=k+1 to n do{из i-го уравнения}

begin

d:=A[i,k]; for j:=k to n+1 do A[i,j]:=A[i,j]-A[k,j]/A[k,k]*d; end;

{обратный ход в методе Гаусса} for k:=n downto 0 do

begin

x[k]:=A[k,n+1]; for j:=k+1 to n do x[k]:=x[k]-A[k,j]*x[j]; x[k]:=x[k]/A[k,k]; end;

end;

{функция вычисления k-ой степени числа x<>0} function sq(x:real; k:integer):real;

var i:integer; p:real; begin

p:=1; for i:=1 to k do p:=x*p; sq:=p; end;

55

{основная программа} const

x:TXY = (1, 2, 3, 4, 5); {значения аргумента в узлах аппроксимации}

y:TXY = (2, 2.69, 3.1, 3.39, 3.61); {значения функции в узлах аппроксимации} var

b:TB; {расширенная матрица системы линейных уравнений} a:TA; {коэффициэты полинома}

i,j,k:integer; {для индексации} R:real; {для оценки аппроксимации}

Ycp,p,s1,s2:real; {рабочие переменные} begin

{занулить матрицу b}

for k:=0 to m+1 do for j:=0 to m+1 do b[k,j]:=0; {формирование расширенной матрицы}

for k := 0 to m do begin

for i:=1 to n do

b[k,m+1]:=b[k,m+1]+y[i]*sq(x[i],k); {формирование свободных членов уравнений системы}

for j := 0 to m do {формирование коэффициентов системы уравнений} for i:=1 to n do {цикл по числу узлов аппроксимации}

begin

p:=sq(x[i], k+j);

b[k,j] := b[k,j] + p;

end;

end;

pGauss(b,m,a);{решить систему уравнений метомом Гаусса} {вывод на экран коэффициэнтов аппроксимирующего полинома} for j:=0 to m do writeln('a[',j,']=',a[j]:10:5);

{вычислить среднее значение функции}

Ycp:=0; for i:=1 to n do Ycp:=Ycp+y[i]; Ycp:=Ycp/n; {формирование оценки аппроксимации}

s1:=0; s2:=0; for i:=1 to n do begin

{вычисление суммы квадратов относительно среднего} s1:=s1+sqr(y[i]-Ycp);

{вычисление значения аппроксимирующего полинома в узле x[i] по схеме Горнера}

p:=a[m]; for j:=m-1 downto 0 do p:=p*x[i]+a[j]; {вычисление суммы квадратов, обусловленной регрессией} s2:=s2+sqr(p-Ycp);

end;

R:=s2/s1;

writeln('Множественный коэффициент детерминации R^2 ',R:10:5); readkey;

end.


56

3.3.2.2 Алгоритм решения в электронной таблице Excel

1.Поместить координаты вектора X в диапазон ячеек C2:G2.

2.Поместить координаты вектора Y в диапазон ячеек C3:G3.

3.Выделить диапазон ячеек C2:G3.

4.Вызвать МАСТЕР ДИАГРАММ.

4.1.В диалоговом окне ТИП ДИАГРАММЫ выбрать тип – ТОЧЕЧНАЯ, вид – ТОЧЕЧНАЯ.

4.2.Нажимаем кнопку ДАЛЕЕ, …, а затем ГОТОВО.

4.3.Диаграмму размещаем на отдельном листе.

5.Выделить диаграмму. В меню ДИАГРАММА выбрать команду ДОБАВИТЬ ЛИНИЮ ТРЕНДА. В диалоговом окне ЛИНИЯ ТРЕНДА на вкладке ТИП выбрать тип линии ПОЛИНОМИАЛЬНАЯ степень 2. В диалоговом окне ЛИНИЯ ТРЕНДА на вкладке ПАРАМЕТРЫ установить флажки ПОКАЗЫВАТЬ УРАВНЕНИЕ и ПОМЕСТИТЬ ВЕЛИЧИНУ ДОСТОВЕРНОСТИ АППРОКСИМАЦИИ и нажать кнопку ОК. Для обеспечения наглядности выполнить форматирование диаграммы.

6.Конец вычислений.

Задания к данной теме приведены в приложении В.

57

4 ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ

При решении практических задач часто нужно найти производную указанных порядков от функции y = f(x), заданной таблично. Возможно также, что в силу сложности аналитического выражения функции f(x) непосредственное дифференцирование ее затруднительно. В этих случаях и других случаях прибегают к численному дифференцированию.

4.1 Вычисление производной по ее определению

Пусть функция y = f(x) определена в некоторой окрестности точки x0 и имеет производную в этой точке, т. е. существует предел отношения приращения функции y к приращению аргумента x при стремлении x к нулю

y ′(x0)=f ′(x0)= lim

y

, x = x - x0, y = f(x0 + x) - f(x).

(1)

x→0

x

Значение производной можно получить, переходя к пределу (1) по последовательности целых чисел n, полагая, например,

x = ( x)n= (10xn)0 ,

где ( x)0 – некоторое начальное приращение аргумента, n = 1, 2, ... . Тогда значение производной функции f(x) в точке x0 запишется так:

y ′(x0)=f ′(x0)= lim

(

y )n

, ( y)n = f(x0 + ( x)n) - f(x0).

x )n

n→∞ (

Отсюда получаем приближенное равенство

y ′(x0)≈

(

y )n

.

(2)

(

x )

n

Для достижения заданной точности ε приближения производной при определенном числе вычислений можно воспользоваться неравенством

(

y )n

(

y )n−1

< ε .

(

x )

(

x )

n

n−1

Тогда при вычислении производной по ее определению находят отношение