Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Тарасевич Ю.Ю. - Численные методы на Mathcad

.pdf
Скачиваний:
108
Добавлен:
16.03.2015
Размер:
796.56 Кб
Скачать

ные результаты. Для большей наглядности представим результаты на гра-

фиках

 

 

 

 

 

 

z

1 , 0.9 .. 6

 

 

 

 

 

 

1

 

 

 

 

 

 

0.5

 

 

 

 

 

g( z)

0

 

 

 

 

 

 

 

 

 

 

 

sin( z )

0.5

 

 

 

 

 

 

 

 

 

 

 

yi

 

 

 

 

 

 

 

1

 

 

 

 

 

 

1.5

 

 

 

 

 

 

2 2

0

2

4

6

 

 

 

 

z,z,xi

 

 

 

 

1

 

 

 

 

 

 

0.5

 

 

 

 

 

 

0

 

 

 

 

gl( z)

 

sin( z)

0.5

 

yi

1

1.5

2 2 0 2 4 6 z,z,xi

21

1

 

 

 

 

0

 

 

 

 

gp( z)

 

 

 

 

sin( z)

 

 

 

 

yi

 

 

 

 

1

 

 

 

 

2 2

0

2

4

6

 

 

z,z,xi

 

 

1

 

 

 

 

0

 

 

 

 

gc( z)

 

 

 

 

sin( z)

 

 

 

 

yi

 

 

 

 

1

 

 

 

 

2 2

0

2

4

6

 

 

z,z,xi

 

 

Убедимся в том, что первые и вторые производные сплайна непрерыв-

ны

22

 

3

 

 

 

 

 

 

2

 

 

 

 

 

d

gl( z)

 

 

 

 

 

dz

 

 

 

 

 

 

1

 

 

 

 

 

d

gp( z)

 

 

 

 

 

dz

 

 

 

 

 

d

0

 

 

 

 

 

gc( z)

 

 

 

 

 

dz

 

 

 

 

 

 

1

 

 

 

 

 

 

2

2

0

2

4

6

 

 

 

 

z,z,z

 

 

d

2

2

 

 

 

 

 

 

 

 

 

 

gl ( z)

 

 

 

 

 

d z2

 

 

 

 

 

d

2

gp( z)

1

 

 

 

d z2

 

d

2

gc( z)

0

 

 

d z2

1

2

4

6

0

z, z, z

Но производные более высоких порядков уже не являются непрерыв- ными.

23

3.2. ГЛОБАЛЬНАЯ ИНТЕРПОЛЯЦИЯ

 

 

При глобальной интерполяции ищется единый полином для всего ин-

тервала. Если среди узлов {xi,yi} нет совпадающих, то такой полином будет

единственным, и его степень не будет превышать n.

 

 

Запишем систему уравнений для определения коэффициентов полино-

ма

 

 

c + c x + c x2

+K+ c xn−1

= y

 

 

 

 

 

0

 

 

 

 

0

1

0

2

0

 

n−1 0

 

 

 

 

 

c + c x + c x2

+K+ c xn−1

= y

 

 

 

 

 

0

1

1

2

1

M

n−1 1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c + c x + c x

2

+K+ c xn−1

= y

n−1

 

 

 

 

0

1 1

2

n−1

 

n −1 n−1

 

 

Определим матрицу коэффициентов системы уравнений

 

i

0 .. n

1

 

j

0 .. n

1

a

x

i

 

 

 

 

 

 

 

 

 

 

( j , i )

 

j

 

Решим систему уравнений матричным методом

c

a 1.y

Определим интерполяционный полином

L( z )

c .zi

 

 

 

 

 

 

 

 

 

 

 

 

i

Представим результаты на графике

 

 

i

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

L( z)

 

 

 

 

 

 

 

 

 

 

 

 

sin( z)

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

2 2

 

 

0

 

2

 

4

6

 

 

 

 

 

 

 

 

 

z,z,xi

 

 

 

Вычислим значения интерполяционного полинома в заданных точках и

сравним их с точными значениями

 

 

 

 

 

24

Xk

 

L Xk

 

sin Xk

0.5

 

0.594

 

0.479

 

 

 

 

 

 

 

1.111

 

0.901

 

0.896

 

 

 

 

 

 

 

2.333

 

0.72

 

0.723

 

 

 

 

 

 

 

4.574

 

1.036

 

 

 

0.99

 

 

 

 

 

 

 

 

 

 

Коэффициенты интерполяционного полинома следующие:

0

1.134

c = 0.177

0.127

0.022

Внимание! Из-за накопления вычислительной погрешности (ошибок округления) при большом числе узлов (n>10) возможно резкое ухудшение результатов интерполяции. Кроме того, для целого ряда функций глобаль- ная интерполяция полиномом вообще не дает удовлетворительного резуль- тата. Рассмотрим в качестве примера две таких функции. Для этих функций точность интерполяции с ростом числа узлов не увеличивается, а уменьша-

1

ется. Первым примером является функция f( x )

1 25.x2 .

Построим для нее интерполяционный полином на интервале [–1;1], ис- пользуя 9 точек.

n

 

 

 

9

 

 

 

 

 

j

 

i

 

0 .. n

 

1

 

j

 

0 .. n

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

1

 

 

 

 

 

 

.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

x

 

i

 

y

 

 

 

f x

 

 

 

c

 

 

 

a 1.y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

j

 

 

j

 

 

 

 

 

 

 

 

 

 

( j , i )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L( z ) ci.zi

i

Представим результаты на графике. z 1 , 0.99 .. 1

25

 

 

 

 

1

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

f( z)

 

 

 

 

 

 

 

 

L( z)

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yj

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

1

1

0.5

0

0.5

1

Второй пример функция g( x )

z, z, xj

 

 

x .

 

 

Найдем интерполяционный полином, используя заданные выше точки.

y

j

g x

j

 

c

a 1.y

 

L( z )

c .zi

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

g( z)

 

 

 

 

 

L( z)

yj 0.5

0

1

 

0.5

0

0.5

1

 

z, z,xj

26

Убедитесь самостоятельно, что при увеличении числа узлов интерполя- ции, результаты интерполирования вблизи концов интервала ухудшаются.

3.3. МЕТОД НАИМЕНЬШИХ КВАДРАТОВ

ВВЕДЕНИЕ

Наиболее распространенным методом аппроксимации эксперименталь- ных данных является метод наименьших квадратов. Метод позволяет ис-

пользовать аппроксимирующие функции произвольного вида и относится к группе глобальных методов. Простейшим вариантом метода наименьших квадратов является аппроксимация прямой линией (полиномом первой сте- пени). Этот вариант метода наименьших квадратов носит также название линейной регрессии.

Критерием близости в методе наименьших квадратов является требова-

ние минимальности суммы квадратов отклонений от аппроксимирующей функции до экспериментальных точек:

n

Φ = å( yi f (xi ))2 → min .

i=1

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

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

z = ln(y) , a = ln(A) . Тогда в новых обозначениях задача сводится к оты- сканию коэффициентов линейной функции z = a + kx .

3.3.1. Аппроксимация линейной функцией

Применим метод наименьших квадратов для аппроксимации экспери- ментальных данных.

Читаем данные из файлов datax и datay

x

 

READPRN( datax )

y

 

READPRN( datay )

 

 

 

 

27

При использовании MathCAD 2000 имя файла следует заключать в ка-

вычки и записывать его по правилам MS DOS, например,

READPRN("c:\mylib\datax.prn").

 

 

 

 

 

Определяем количество прочитанных данных (число эксперименталь-

ных точек).

 

 

 

 

 

 

 

 

n last ( x )

 

i

0 .. n

 

 

 

Используем встроенные функции slope и intercept для определения ко-

эффициентов линейной регрессии (аппроксимация данных прямой линией).

Функция slope определяет угловой коэффициент прямой, а функция

intercept точку пересечения графика с вертикальной осью.

 

A intercept ( x , y )

B slope ( x , y )

 

 

B.z

Определяем аппроксимирующую функцию:

f1( z )

A

Коэффициенты линейной регрессии

 

 

 

A = −3.539

 

 

B = 1.81

 

 

 

 

 

Mathcad 2000 предлагает для этих же целей использовать функцию line

line(x, y) =

æ

−3.539

ö

 

 

 

 

 

è

1.81

ø

 

 

 

 

 

 

 

 

 

 

 

 

Вычислим стандартное отклонение.

 

 

 

S1

( n

1 .

f1 xi

yi

2

 

S1

= 2.09

 

2)

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

z

0 , 0.1 .. 10

 

 

 

 

 

 

 

f1( z)

 

 

 

 

 

 

 

 

 

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z,xi

 

 

 

28

 

 

 

 

 

 

 

 

 

3.3.2. Аппроксимация полиномами

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

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

Вводим степени полиномов:

k2

 

2

k3

 

3

 

 

 

 

Функция regress является вспомогательной, она подготавливает дан- ные, необходимые для работы функции interp. Вектор vs содержит, в том числе, и коэффициенты полинома

vs2

 

regress ( x , y , k2 )

vs3

 

regress ( x , y , k3 )

 

 

 

 

Функция interp возвращает значение полинома в точке z. Определив новые функции f2, f3, мы получили возможность находить значение поли- нома в любой заданной точке.

f2( z )

 

 

 

 

interp ( vs2 , x , y , z )

 

 

 

f3( z )

 

interp ( vs3 , x , y , z )

 

 

 

 

 

 

 

 

 

 

coeffs2

 

 

submatrix ( vs2, 3 , length ( vs2 )

 

1 , 0 , 0 )

 

 

 

 

 

 

 

coeffs3

 

 

submatrix ( vs3, 3 , length ( vs3 )

 

1 , 0 , 0 )

 

 

 

 

 

 

 

Коэффициенты:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( coeffs2) T = ( 0.701

 

0.76

0.257 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( coeffs3) T = (

 

0.122

0.253

2.377 10

 

3

 

0.017 )

 

 

 

 

 

 

 

 

 

 

 

S2

 

 

 

 

 

 

 

 

1

.

 

 

f2 xi

 

yi

2

 

 

 

 

 

 

S2

=

0.671

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( n

 

2)

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3

 

 

 

 

 

 

 

 

1

.

 

 

f3 xi

 

yi

2

 

 

 

 

 

 

S3

=

0.581

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( n

 

2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стандартные отклонения почти не отличают друг от друга, коэффици- ент при четвертой степени z невелик, поэтому дальнейшее увеличение сте-

пени полинома нецелесообразно и достаточно ограничиться только второй степенью.

К сожалению, функция regress имеется далеко не во всех версиях Matcad'а. Однако, провести полиномиальную регрессию можно и без ис- пользования этой функции. Для этого нужно определить коэффициенты нормальной системы и решить полученную систему уравнений, например, матричным методом.

Теперь попытаемся аппроксимировать экспериментальные данные по- линомами степени m и m1, не прибегая к помощи встроенной функции

29

regress .

m

 

2

t

 

0

m

j

 

0

m

 

 

 

 

 

 

m1

 

 

3

t1

 

 

0

m1

j1

 

 

0

m1

 

 

 

 

 

 

 

Вычисляем элементы матрицы коэффициентов нормальной системы

p

 

x

i

t j

p1

 

x

t1

j1

t ,j

 

 

 

t1 , j1

 

 

i

 

 

i

 

 

 

 

i

 

 

 

и столбец свободных членов

 

 

 

 

 

b

y .

 

x

j

b1

y .

x

j1

 

j

i

 

 

i

j1

i

 

i

 

 

i

 

 

 

 

i

 

 

 

Находим коэффициенты полинома, решая систему матричным методом,

a

 

 

p 1.b

 

 

 

 

a1

 

p1 1.b1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определяем аппроксимирующие функции

 

 

 

f2( z )

 

 

 

 

 

a .zt

 

 

 

 

f3( z )

 

 

 

 

 

 

a1

.zt1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

t1

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t1

 

 

 

Коэффициенты полиномов следующие:

 

 

 

 

 

0.701

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.122

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.253

 

 

 

 

a =

 

 

 

0.76

 

 

 

 

 

 

 

 

a1 =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.257

 

 

 

 

 

 

 

 

 

 

 

2.377 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.017

 

 

 

 

Вычислим стандартное отклонение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S2

 

 

 

 

 

 

 

 

1

.

 

f2 xi

 

 

yi

2

 

 

 

 

 

 

 

 

S2 = 0.671

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( n

 

 

2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3

 

 

 

 

 

 

 

 

1

.

 

f3 xi

 

 

yi

2

 

 

 

 

 

 

S3 = 0.581

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30