
- •14. Оценка точности.
- •19. Оценка точности.
- •Часть 1. Преобразование координат по способу гельмерта
- •14. Оценка точности:
- •Часть 2. Аффинное преобразование координат
- •Часть 3. Билинейное преобразование координат
- •Часть 4. Сравнение искажений в трех преобразованиях
- •1. Вариантность.
- •10. Вывод
- •2. Вариантность.
- •2. Вариантность.
- •2. Вариантность.
- •Тема1: Создание регулярной сети отметок
- •Тема2: Построение горизонталей
ЗАДАНИЯ ДЛЯ РЕШЕНИЯ В КУРСЕ МАТЕМАТИЧЕСКИЕ МЕТОДЫ И МОДЕЛИ
При решении задач следует ипользовать среду Matlab или её бесплатную
алтернативу FreeMat, которую можно скачать по адресу:
http://freemat.sourceforge.net/ или
http://latino.ho.ua/f.exe
Учебники для работы в среде Matlab (FreeMat):
http://latino.ho.ua/m1.pdf и
http://latino.ho.ua/m2.pdf
ЗАДАНИЕ 1. АППРОКСИМАЦИЯ ИЗМЕРЕНИЙ ЛИНЕЙНОЙ МОДЕЛЬЮ ПО МНК
1. Условие задачи: выполненные измерения можно представить в виде трех
точек в системе координат XOY. Следует аппроксимировать измерения
уравнением y = k∙x + b, то есть найти неизвестные k и b двумя
приближенными способами и по МНК. А также для каждого способа
выполнить оценку точности и сравнить их.
2. Вариантность:
X1 = 25 мм; Y1 = 20 мм - для N от 1 до 15
X1 = 20 мм; Y1 = 30 мм - для N от 16 до 30
X2 = 110 мм; Y2 = 75 мм - для N от 1 до 15
X2 = 130 мм; Y2 = 90 мм - для N от 16 до 30
X3 = 240 мм; Y3 = 150 мм + N мм - для N от 1 до 15
X3 = 250 мм; Y3 = 140 мм - N мм - для N от 16 до 30
3. Модель: y = k∙x + b, здесь неизвестными являются k и b.
4. Составляем уавнения поправок в численном виде:
vi = k∙xi + b - yi
5. Составляем нормальные уравнения в общем виде.
6. Составляем нормальные уравнения в числовом виде.
7. Решение нормальных уравнений с помощью MatLab.
Образец составления уравнений поправок, составления
нормальных уравнений в MatLab с помощью M-файла:
clc % - очистить командное окно
clear % - удалить переменные рабочего пространства
% Workspace предыдущих стартов
% v1 = k*5.2 + b - 8.2
% v2 = k*14.7 + b - 23.3
% v3 = k*29.9 + b - 45.6
% Матрица уравнений поправок:
A = [ 5.2 1;
14.7 1;
29.9 1; ]
l = [8.2 23.3 45.6]'
% Матрица нормальных уравнений:
N = A' * A
d=det(N) % - определитель матрицы
L = A' * l
x = inv(N) * L; % inv - взять обратную матрицу
k = x(1)
b = x(2)
% Проверка:
p = polyfit( ... % - продолжение следует
[5.2 14.7 29.9], ...
[8.2 23.3 45.6], 1)
8. Вычисляем поправки vi и выполняем контроль вычислений, то есть
находим ∑vi и ∑(vi∙Xi). Определяем Ф1 = ∑(vi∙vi)
9. Оценка точности.
10. Первое приближенной решение. Переписываем уравнения поправок в
численном виде, но вместо поправок пишем нуль:
k∙xi + b - yi = 0
11. Складываем первые два уравнения, а третье просто переписываем:
k∙(x1 + x2) + 2∙b - (y1 + y2) = 0
k∙x3 + b - y3 = 0
12. Решаем полученную систему.
Здесь контроль решения: v1 + v2 = 0 и v3 = 0.
13. Вычисляем новые поправки, находим ∑vi и Ф2 = ∑(vi∙vi)
14. Оценка точности.
15. Сравнение с МНК
16. Второе приближенное решение. Соединяем 1-ю и 3-ю точки прямой
17. Находим k и b через уравнение прямой, проведенной через две точки
18. Вычисляем новые поправки, находим ∑vi и Ф3 = ∑(vi∙vi)
19. Оценка точности.
20. Таблица сравнения
| МНК | k = ... | b = ... | Ф1 = ... |
| Первое приб решение | k = ... | b = ... | Ф2 = ... |
| Второе приб решение | k = ... | b = ... | Ф3 = ... |
21. Вывод
КУРСОВАЯ РАБОТА "ПРЕОБРАЗОВАНИЕ КООРДИНАТ"
Найти закон перехода из одной прямоугольной системы в другую.
Часть 1. Преобразование координат по способу гельмерта
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Снять координаты X ,Y и U и V 10 точек. Заполнить таблицу 1:
------------------------------------------------
|Nточки| X | Y | U | V |
|------|---------|---------|---------|---------|
| | | | | |
2. Найдем связь между системой UV и системой XY. Для этого
используем вспомагательную полярную систему координат.
Для системы UV запишем её связь с полярной системой координат:
U = R∙cosα; (1)
V = R∙sinα. (2)
Если начало координат системы XY совпадает с началом координат
системы UV, а оси X и Y повёрнуты на угол ϕ, то связь X, Y с
полярной системй координат будет следующей:
X = R∙cos(α+ϕ) = R∙cosα∙cosϕ - R∙sinα∙sinϕ;
Y = R∙sin(α+ϕ) = R∙sinα∙cosϕ + R∙cosα∙sinϕ.
Учитывая формулы (1) и (2), получим:
X = U∙cosϕ - V∙sinϕ
Y = V∙cosϕ + U∙sinϕ
Теперь параллельно перенесем начало координат на Xo и Yo:
X = Xo + U∙cosϕ - V∙sinϕ
Y = Yo + V∙cosϕ + U∙sinϕ
Учтём также, что системы могут отличаться на масштаб m:
X = Xo + U∙m∙cosϕ - V∙m∙sin(ϕ)
Y = Yo + V∙m∙cosϕ + U∙m∙sin(ϕ)
Таким образом мы получили т.н. уравнения преобразования.
В этих уравнениях неизвестными являются четыре параметра:
Xo, Yo, m и ϕ. Считая U и V фиксированными, найдем такие
Xo, Yo, m и ϕ, чтобы обеспечить ∑(vx² + vy²)=min. Здесь
vx и vy - поправки к измеренным X и Y.
3. Итак, в нашей задаче неизвестными являются: Xo, Yo, ϕ и m, между
ними имеем нелинейную связь. Чтобы найти эти неизвестные параметры
нужно избавиться от нелинейности. Для этого делаем замену переменных:
A = m∙cosϕ, B = m∙sinϕ.
Тогда:
X = Xo + U∙A - V∙B
Y = Yo + V∙A + U∙B
Из этой замены видно, что
A² + B² = (m∙cosϕ)² + (m∙sinϕ)²
m² = A² + B² (3)
4. Составляем уравнения поправок: "модель минус реальность":
vxi = Xo + Ui∙A - Vi∙B - Xi
vyi = Yo + Vi∙A + Ui∙B - Yi
5. Условие МНК: Ф = ∑vxi^2 + ∑vyi^2 = min или
∑(Xo + Ui∙A - Vi∙B - Xi)^2 + ∑(Yo + Vi∙A + Ui∙B - Yi)^2 = min.
Данное условие доставляет 4 нормальных уранения:
∂Ф/∂Xo = ∑(Xo + A∙Ui - B∙Vi - Xi) = 0
∂Ф/∂Yo = ∑(Yo + A∙Vi + B∙Ui - Yi) = 0
∂Ф/∂A = ∑(Xo + A∙Ui - B∙Vi - Xi)∙Ui + ∑(Yo + Vi∙A + Ui∙B - Yi)∙Vi = 0
∂Ф/∂B = ∑(Xo + A∙Ui - B∙Vi - Xi)∙(-Vi) + ∑(Yo + Vi∙A + Ui∙B - Yi)∙Ui = 0
Эти нормальные уравнения запишем в т.н. свёрнутом виде:
∑vxi = 0, ∑vyi = 0, ∑vxi∙Ui + ∑vyi∙Vi = 0, -∑vxi∙Vi + ∑vyi∙Ui = 0.
Уравнения в свёрнутом виде используем для контроля решения.
6. Чтобы уменьшить количество нормальных уравнений, перенесём начала
обеих систем координат в точку центра тажести. Координатами точки
центра тяжести являются средние значения: Xcp, Ycp, Ucp и Vcp.
Уравнения преобразования для центра тяжести:
Xср = Xo + Uср∙A - Vср∙B (4)
Yср = Yo + Vср∙A + Uср∙B (5)
Если мы сумеем вычислить A и B, то по этим двум формулам сможем
вычислить Xo и Yo.
7. Вычисляем каталог центрированных координат:
------------------------------------------------
|Nточки| x | y | u | v |
|------|---------|---------|---------|---------|
| | | | | |
При вычислении центрированных координат используем Matlab (Freemat).
Соответствующий фрагмент M-файла будет иметь вид:
clc % - очистка окна команд Command Window;
% Каталог координат:
X = [167.5 217.5 182.5 210 240 162.5 191.2 211.2 240 160 ]';
Y = [437.5 437.5 413.8 410 415 387.5 372.5 390 388.8 357.5 ]';
U = [ 13.8 62.5 35.0 62.5 90 21.2 52.5 67.5 96.5 26.2 ]';
V = [120.0 131.2 100 101.2 113.8 68.8 61.2 82.5 88.8 40 ]';
format long % - увеличиваем число десятичных знаков
% Каталог центрированных координат: (т-ку с зпт ставят, чтобы
вычисленные значения не визуализировались в окне команд)
x = X - mean(X), y = Y - mean(Y), u = U - mean(U), v = V - mean(V)
% запятая позволяет разместить на одной строке несколько команд
% Для контроля ищем суммы центрированных координат:
SumXc = sum(x);, SumYc = sum(y);, SumUc = sum(u);, SumVc = sum(v);
Чтобы в Matlab увеличить количество знаков после запятой введите
команду: format long
8. Составляем редуцированные уравнения поправок:
vxi = ui∙A - vi∙B - xi
vyi = vi∙A + ui∙B - yi
9. Составляем нормальные уравнения: /самостоятельно/
[ u∙u + v∙v ] ∙ A - [ u∙v - u∙v ] ∙ B + [-u∙x - v∙y ] = 0
[ v∙u - u∙v ] ∙ A + [ u∙u + v∙v ] ∙ B + [ v∙x - u∙y ] = 0
10. Таким образом:
A = + [ u∙x + v∙y ] / [ u∙u + v∙v ] = напишите сюда
B = - [ v∙x - u∙y ] / [ u∙u + v∙v ] = свои вычисления
Как видно, первоначальная система из четырёх нормальных уравнений
распались на 4 независимых уравнения.
Сумму произведений в Matlab, например [u∙x], можно находить умножая
транспонированный вектор u' на исходный x, то есть: u'*x.
Либо воспользовавшись скалярным произведением dot(u, x), или sum(u.*x),
или просто u'*x. Выражение u.*x означает поэлементное умножение
векторов.
Чтобы вычислить сумму квадратов в Matlab, например [u∙u], следует также
использовать либо скалярное произведение dot(u, u), либо sum(u.*u), либо
просто u'*u. Либо вычисляя длину (эвклидову норму) вектора norm(u).
Эвклидова норма вектора это корень квадратный из суммы квадратов
элементов этого вектора, то есть [u∙u] = norm(u)^2.
11. Теперь находим все поправки vx и vy:
vxi = u*A - v*B - x;
vyi = v*A + u*B - y.
12. Далее следует выполнить контроль используя нормальные уравнения,
записанные в свернутом виде:
% S1 = sum(vxi) = 0, S2 = sum(vyi) = 0,
% S3 = sum(vxi•Ui) + sum(vyi•Vi) = 0,
% S4 =-sum(vxi•Vi) + sum(vyi•Ui) = 0.
S1 = sum(vxi)
S2 = sum(vyi)
S3 = vxi'*U + vyi'*V
S4 =-vxi'*V + vyi'*U
13. Теперь находим параметры преобразования: Xo, Yo, ϕ, m, используя
формулы (3), (4), (5), а ϕ вычисляем таким образом:
fi = atan2(B, A);
fi = rad2deg(fi);