Вы находитесь на странице: 1из 10

ORIGIN := 1

АППРОКСИМАЦИЯ ПОВЕРХНОСТЬЮ ВТОРОГО ПОРЯДКА


Ax^2 + By^2 + Cz^2 + 2Fyz + 2Gzx + 2Hxy + 2Px + 2Qy + 2Rz + D = 0

Формирование исходных данных X,Y,Z

m := 300 количество точек


i := 1 .. m
Ki := rnd ( 2 ⋅π) Li := rnd ( 2 ⋅π)

Формирование случайных значений

Xai := 129.615 ⋅cos ( Ki) Yai := 346.41 ⋅ sin ( Li)

400

200

Ya 0

− 200

− 400
− 400 − 200 0 200 400
Xa
Исходное уравнение с добавленим смещений по каждой оси
имеет вид:

125 125
⋅( Xai − 50) + ⋅ ( Yai − 100) + 150
2 2
Zai :=
16000 100000

Добавляем поворот:

Углы поворота в градусах:

ψ := 10deg θ := 20deg φ := 30deg

Матрица поворота

⎛ cos ( ψ) ⋅cos ( φ) − sin ( ψ) ⋅cos ( θ) ⋅sin ( φ) −cos ( ψ) ⋅sin ( φ) − sin ( ψ) ⋅cos ( θ) ⋅cos ( φ) sin ( ψ) ⋅sin ( θ) ⎞
S := ⎜ sin ( ψ) ⋅cos ( φ) + cos ( ψ) ⋅ cos ( θ) ⋅sin ( φ) −sin ( ψ) ⋅sin ( φ) + cos ( ψ) ⋅cos ( θ) ⋅cos ( φ) −cos ( ψ) ⋅sin ( θ) ⎟
⎜ ⎟
⎝ sin ( θ) ⋅ sin ( φ ) sin ( θ) ⋅ cos ( φ ) cos ( θ) ⎠

⎛ 0.771 −0.634 0.059 ⎞


S = ⎜ 0.613 0.715 −0.337 ⎟
⎜ ⎟
⎝ 0.171 0.296 0.94 ⎠

S =1 свойство матрицы поворота (равенство единице)

Для поворота объединим три вектора Xa,Ya,Za в одну матрицу P:


P := augment ( Xa , Ya , Za)

Поворот PP := P ⋅S

Xi := PPi , 1 Yi := PPi , 2 Zi := PPi , 3

Таким образом, были получены исходные данные для аппроксимации


(Xi,Yi,Zi), i=1,m. Эти точки лежат на заданной поверхности. Поверхность, в
свою очередь, повернута и смещена относительно первоначальной системы
координат.

Аппроксимацию выполним методом наименьших квадратов


Матрица коэффициентов

⎡ m m m m m m m m m
2 ⎥⎤
⎡ X 2⋅ Y 2⎤ ⎡ X 2⋅ Z 2⎤ ⎡ X 2⋅ Y ⋅ Z ⎤ ⎡ X 3⋅ Z ⎤ ⎡ X 3⋅ Y ⎤ ⎡ X 2⋅ Y ⎤

∑ ( i) ∑ ( i) ( i) ⎦ ∑ ⎣( i) ( i) ⎦ ∑ ⎣( i) i i⎦ ∑ ⎣( i) i⎦ ∑ ⎣( i) i⎦ ∑ ( i) ∑ ⎣( i) i⎦ ∑ ( i)
4 3
X 2⋅ 2⋅ 2⋅ 2⋅ X 2⋅ X
⎢ ⎣ ⎥
⎢ i =1 i =1 i =1 i=1 i =1 i =1 i =1 i =1 i=1 ⎥
⎢ m m m m m m m m m ⎥
⎡ X 2⋅ Y 2⎤ ⎡ Y 2⋅ Z 2⎤ ⎡ Y 3⋅ Z ⎤ ⎡X ⋅ Y 2⋅ Z ⎤ ⎡X ⋅ Y 3⎤ ⎡X ⋅ Y 2⎤

∑ ∑ ∑ ∑ ∑ ∑ ∑ ∑ (Yi) ∑
2 ⎥
( i) ( i) ⎦ ( i) ⎣( i) ( i) ⎦ ⎣( i) i⎦ ⎣ i ( i) i⎦ ⎣ i ( i) ⎦ ⎣ i ( i) ⎦ ( i) ⎥
4 3
Y 2⋅ 2⋅ 2⋅ 2⋅ 2⋅ Y
⎢ ⎣
⎢ i =1 i =1 i =1 i=1 i =1 i =1 i=1 i =1 i=1 ⎥
⎢ m m m m m m m m m ⎥
⎡ X 2⋅ Z 2⎤ ⎡ Y 2⋅ Z 2⎤ ⎡Y ⋅ Z 3⎤ ⎡X ⋅ Z 3⎤ ⎡X ⋅ Y ⋅ Z 2⎤ 2⋅ ⎡X ⋅ Z 2⎤ 2⋅ ⎡Y ⋅ Z 2⎤

∑ ∑ ∑ ∑ ∑ ∑ ∑ ∑ ∑
2 ⎥
( i) ( i) ⎦ ( i) ( i) ⎦ ( Z)
⎣ i ( i) ⎦ ⎣ i ( i) ⎦ ⎣ i i ( i) ⎦ ⎣ i ( i) ⎦ ⎣ i ( i) ⎦ ( i) ⎥
4
2⋅ 2⋅ 2⋅ Z
⎢ ⎣ ⎣ i
⎢ i =1 i =1 i=1 i=1 i =1 i=1 i=1 i =1 i =1 ⎥
⎢ m m m m m m m m m ⎥
⎡ X 2⋅ Y ⋅ Z ⎤ 2⋅ ⎡ Y 3⋅ Z ⎤ ⎡Y ⋅ Z 3⎤ ⎡ Y 2⋅ Z 2⎤ 4⋅ ⎡X ⋅ Y ⋅ Z 2⎤ 4⋅ ⎡X ⋅ Y 2⋅ Z ⎤ 4⋅
) ∑ ⎡⎣(Yi)
2 ⎤
⎢2⋅
⎢ ∑ ⎣( i) i i⎦ ∑ ⎣( i) i⎦ ∑2 ⋅
⎣ i ( i) ⎦
4⋅ ∑ ⎣( i) ( i) ⎦ ∑ ⎣ i i ( i) ⎦ ∑ ⎣ i ( i) i⎦ ∑( X ⋅Y ⋅Z
i i i
4⋅ ⋅Z
i⎦
2⋅∑ ( i i) ⎥⎥
Y ⋅ Z

⎢ i=1 i=1 i=1 i=1 i =1 i=1 i =1 i =1 i =1 ⎥


⎢ m m m m m m m m m ⎥
⎡ X 3⋅ Z ⎤ 2⋅ ⎡X ⋅ Y 2⋅ Z ⎤ 2⋅ ⎡X ⋅ Z 3⎤ ⎡X ⋅ Y ⋅ Z 2⎤ 4⋅ ⎡ X 2⋅ Z 2⎤ 4⋅ ⎡ X 2⋅ Y ⋅ Z ⎤ 4⋅ ⎡ X 2⋅ Z ⎤ 4⋅
A := ⎢

2⋅
∑ ⎣( i) i⎦ ∑ ⎣ i ( i) i⎦ ∑ ⎣ i ( i) ⎦
4⋅ ∑ ⎣ i i ( i) ⎦ ∑ ⎣( i) ( i) ⎦ ∑ ⎣( i) i i⎦ ∑ ⎣( i) i⎦ ∑ (Xi⋅Yi⋅Zi) ∑ 2⋅ ( i i) ⎥⎥
X ⋅ Z

⎢ i=1 i=1 i=1 i=1 i =1 i=1 i=1 i =1 i =1 ⎥


⎢ m m m m m m m m m ⎥
⎡ X 3⋅ Y ⎤ ⎡X ⋅ Y 3⎤ 2⋅ ⎡X ⋅ Y ⋅ Z 2⎤ ⎡X ⋅ Y 2⋅ Z ⎤ 4⋅ ⎡ X 2⋅ Y ⋅ Z ⎤ 4⋅ ⎡ X 2⋅ Y 2⎤ 4⋅ ⎡ X 2⋅ Y ⎤ 4⋅ ⎡X ⋅ Y 2⎤
⎢ 2⋅
⎢ ∑ ⎣( i) i⎦
2⋅
∑ ⎣ i ( i) ⎦ ∑ ⎣ i i ( i) ⎦
4⋅ ∑ ⎣ i ( i) i⎦ ∑ ⎣( i) i i⎦ ∑ ⎣( i) ( i) ⎦ ∑ ⎣( i) i⎦ ∑ ⎣ i ( i) ⎦
2⋅∑ ( i i)⎥⎥
X ⋅ Y

⎢ i=1 i=1 i=1 i=1 i =1 i =1 i=1 i =1 i =1 ⎥


⎢ m m m m m m m m m ⎥
⎡X ⋅ Y 2⎤ ⎡X ⋅ Z 2⎤ ⎡ X 2⋅ Z ⎤ ⎡ X 2⋅ Y ⎤
⎢ 2⋅
∑ ( i) ∑ i ( i) ⎦ ∑ ⎣ i ( i) ⎦ ∑( ) ∑ ⎣( i) i⎦ ∑ ⎣( i) i⎦ ∑ ( i) ∑ (Xi⋅Yi) ∑ X ⎥
3 2
X 2⋅ 2 ⋅ 4⋅ X ⋅Y ⋅Z 4⋅ 4⋅ 4⋅ X 4⋅ 2⋅
⎢ ⎣ i i i i

⎢ i=1 i=1 i=1 i =1 i =1 i =1 i =1 i =1 i=1 ⎥
⎢ m m m m m m m m m ⎥
⎡ X 2⋅ Y ⎤ ⎡Y ⋅ Z 2⎤ ⎡ Y 2⋅ Z ⎤ ⎡X ⋅ Y 2⎤
⎢ 2⋅
∑ ( i) ∑ ( i) ∑ ⎣ i ( i) ⎦ ∑ ⎣( i) i⎦ ∑( ) ∑ ⎣ i ( i) ⎦ ∑( ) ∑ (Yi) ∑ Y ⎥
3 2
2 ⋅ Y 2 ⋅ 4⋅ 4⋅ X ⋅Y ⋅Z 4⋅ 4⋅ X ⋅Y 4⋅ 2⋅
⎢ ⎣ i⎦ i i i i i i

⎢ i=1 i=1 i=1 i=1 i =1 i =1 i=1 i =1 i=1 ⎥
⎢ m m m m m m m m ⎥

∑ ( i) ∑ ( i) ∑ ( Z)
∑( ) ∑( ) ∑( ) ∑ ∑ ⎥
2 2 2
X Y 2⋅ Y ⋅Z 2⋅ X ⋅Z 2⋅ X ⋅Y 2⋅ X 2⋅ Y m
⎢ i i i i i i i i i

⎣ i =1 i =1 i=1 i =1 i =1 i=1 i =1 i =1 ⎦
⎡ m ⎤
⎢ ( −2) ⋅ ⎡( Xi) 2 ⋅Zi⎤ ⎥
⎢ ∑ ⎣ ⎦⎥
⎢ i=1 ⎥
⎢ m ⎥
⎢ ( −2) ⋅ ⎡( Yi) 2 ⋅Zi⎤ ⎥
⎢ ∑ ⎣ ⎦⎥
⎢ i=1 ⎥
⎢ m ⎥
Матрица свободных членов ⎢ ( −2) ⋅ 3 ⎥
⎢ ∑ ( Zi)

⎢ i = 1 ⎥
⎢ m ⎥
⎢ ( −4) ⋅ ⎡Yi⋅( Zi) ⎤ ⎥

2
⎢ ⎣ ⎦⎥
⎢ i=1 ⎥
⎢ m ⎥
C := ⎢ ( −4) ⋅ ⎡ ⎤
Xi⋅( Zi) ⎦ ⎥

2
⎢ ⎣ ⎥
⎢ i=1 ⎥
⎢ m ⎥
⎢ ( −4) ⋅ ( Xi⋅Yi⋅Zi) ⎥
⎢ ∑ ⎥
i=1
⎢ ⎥
⎢ m ⎥
⎢ ( −4) ⋅
⎢ ∑ (Xi⋅Zi) ⎥

i=1
⎢ ⎥
⎢ m ⎥
⎢ ( −4) ⋅
⎢ ∑ (Yi⋅Zi) ⎥

i=1
⎢ ⎥
⎢ ⎥
⎢ m ⎥


( −2) ⋅
∑ Zi ⎥

⎣ i=1 ⎦

Система линейных уравнений


в матричном виде
−1
K := A ⋅C

Получившаяся невязка

di := K1 ⋅( Xi) + K2 ⋅( Yi) + K3 ⋅( Zi) + 2 ⋅K4 ⋅Yi ⋅Zi + 2 ⋅K5 ⋅Zi⋅Xi + 2 ⋅K6 ⋅Xi ⋅Yi + 2 ⋅K7 ⋅ Xi + 2 ⋅ K8 ⋅Yi + 2 ⋅Zi + K9
2 2 2

f i := ( di)
2
Квадрат отклонений:

Сумма квадратов отклонений (невязка): SQ :=


∑ fi SQ = 0
i ⎛ −0.011 ⎞
⎜ −3

⎜ − 8.373 × 10 ⎟
⎜ 0 ⎟
⎜ ⎟

⎜ 1.319 × 10 ⎟ 3

Искомые коэффициенты K=⎜ ⎟


⎜ 0 ⎟
⎜ 7.253 × 10− 3 ⎟
⎜ ⎟
⎜ 1.028 ⎟
⎜ −0.022 ⎟
⎜ ⎟
⎝ − 403.668 ⎠
Таким образом, в результате аппроксимации было получено общее
уравнение поверхности второго порядка с коэффициентами К1…К9.
Согласно начально-принятому допущению коэффициент при Z приняли
равным единице

Для нахождения матрицы поворота и смещений приведем получившееся


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

Матрица квадратичной формы

⎛ K1 K6 K5 ⎞
⎜ ⎟
A := ⎜ K6 K2 K4 ⎟
⎜K K K ⎟
⎝ 5 4 3⎠
⎛ −0.011 7.253 × 10
−3 ⎞
⎜ 0 ⎟
A = ⎜ 7.253 × 10− 3 −8.373 × 10− 3 1.319 × 10− 3 ⎟
⎜ ⎟
⎜ −3 ⎟
⎝ 0 1.319 × 10 0 ⎠

Столбец коэффициентов линейной формы

⎛ K7 ⎞ ⎛ 1.028 ⎞
⎜ ⎟
a := ⎜ K8 ⎟ a = ⎜ −0.022 ⎟
⎜ ⎟
⎜ ⎟ ⎝ ⎠
⎝ 1 ⎠ 1
Собственные числа - являются коэффициентами при квадратичных
членах уравнения в новом базисе

λ := ( eigenvals ( A) )
⎛ −0.017 ⎞
⎜ ⎟

λ = ⎜ −2.772 × 10 ⎟3
⎜ ⎟
⎝ 0 ⎠
Собственные вектора образуют матрицу перехода от старого базиса к новому

S1 := eigenvecs ( A)

⎛ −0.771 0.613 0.171 ⎞



S1 = 0.634 0.715 0.296

⎜ ⎟
⎝ − 0.059 − 0.337 0.94 ⎠

Если сравнить ее с исходной матрицей поворота, видим, что они идентичны

⎛ −0.771 0.634 −0.059 ⎞


T ⎜ ⎟
S1 = 0.613 0.715 −0.337
⎜ ⎟
⎝ 0.171 0.296 0.94 ⎠
Убедимся, что получившиеся собственные векторы образуют
ортонормированный базис -
для этого их попарные произведения должны быть равны нулю, а длины
равны единице
⎛ S11 , 1 ⎞ ⎛ S11 , 2 ⎞
⎜ ⎟⎜ ⎟
⎜ 2,1 ⎟ ⎜ 2,2 ⎟ = 0
S1 ⋅ S1
⎜ S1 ⎟ ⎜ S1 ⎟
⎝ 3,1 ⎠ ⎝ 3,2 ⎠
⎛ S11 , 1 ⎞ ⎛ S11 , 3 ⎞
⎜ ⎟⎜ ⎟
⎜ 2,1 ⎟ ⎜ 2,3 ⎟ = 0
S1 ⋅ S1
⎜ S1 ⎟ ⎜ S1 ⎟
⎝ 3,1 ⎠ ⎝ 3,3 ⎠
⎛ S11 , 2 ⎞ ⎛ S11 , 3 ⎞
⎜ ⎟⎜ ⎟
⎜ 2,2 ⎟ ⎜ 2,3 ⎟ = 0
S1 ⋅ S1
⎜ S1 ⎟ ⎜ S1 ⎟
⎝ 3,2 ⎠ ⎝ 3,3 ⎠

( S11 , 1) 2 + ( S12 , 1)2 + ( S13 , 1) 2 = 1


( S11 , 2) 2 + ( S12 , 2)2 + ( S13 , 2) 2 = 1
( S11 , 3) 2 + ( S12 , 3)2 + ( S13 , 3) 2 = 1

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

⎛ −0.866 ⎞
a1 = ⎜ 0.277 ⎟
T
a1 := S1 ⋅a
⎜ ⎟
⎝ 1.109 ⎠
Таким образом, в новом базисе уравнение поверхности будет иметь вид:

λ1 x12 + λ2 y12 + 2a11 x + 2a12 y + 2a13 z + K 9 = 0

Посколькудля для x1 и y1 имеются линейные и квадратичные члены, то,


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

2 2
⎛ a11 ⎞ ⎛ a12 ⎞
a11 a12 ( −λ1) ⋅⎜ λ ⎟ + ( −λ2) ⋅⎜ λ ⎟ + K9
Δx := Δy := ⎝ 1⎠ ⎝ 2⎠
λ1 λ2 Δz := −
2 ⋅a13

Δx = 50
Δy = −100
Δz = 150

Таким образом, умножая S1T на исходные данные и добавляя матрицу


смещений Δx , Δy, Δz , можем привести их к новому базису, в котором
аппроксимирующее их уравнение имеет канонический вид.