Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ммм.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
90.18 Кб
Скачать

ЗАДАНИЯ ДЛЯ РЕШЕНИЯ В КУРСЕ МАТЕМАТИЧЕСКИЕ МЕТОДЫ И МОДЕЛИ

При решении задач следует ипользовать среду 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);