Данная работа продолжает работу 9. Пример организации работы с матрицами поверх std::vector, включая ввод-вывод, приведён в самостоятельной работе 10 (файл amatrix2.hpp).
Дана матрица оценок. Строкам соответствуют способы оценивания, столбцам — оцениваемые объекты.
Товар 1 | Товар 2 | Товар 3 | |
---|---|---|---|
Покупатель 1 | 0 | –5 | 10 |
Покупатель 2 | 3 | 0 | 5 |
Покупатель 3 | 7 | 3 | 7 |
Студент 1 | Студент 2 | Студент 3 | |
---|---|---|---|
Контрольная 1 | 90 | 40 | 40 |
Контрольная 2 | 60 | 0 | 40 |
Контрольная 3 | 80 | 0 | 70 |
Замер 1 | Замер 2 | Замер 3 | |
---|---|---|---|
Модель 1 | 8 | 6 | 8 |
Модель 2 | 0 | –4 | –2 |
Модель 3 | 2 | 0 | –1 |
Эталон | 1 | –2 | –3 |
Вычислим матрицу косинусных коэффициентов для примера 3. Исходная матрица содержит четыре строки, а значит результирующая матрица будет имет размер 4×4:
cos(Модель 1, Модель 1) cos(Модель 1, Модель 2) cos(Модель 1, Модель 3) cos(Модель 1, Эталон)
cos(Модель 2, Модель 1) cos(Модель 2, Модель 2) cos(Модель 2, Модель 3) cos(Модель 2, Эталон)
cos(Модель 3, Модель 1) cos(Модель 3, Модель 2) cos(Модель 3, Модель 3) cos(Модель 3, Эталон)
cos(Эталон, Модель 1) cos(Эталон, Модель 2) cos(Эталон, Модель 3) cos(Эталон, Эталон)
Несложно заметить, что cos(a, b) = cos(b, a), а cos(a, a) можно положить по определению равным 1. Из этого следует, что результирующая матрица будет симметричной с единицами на главной диагонали:
1 a b c
a 1 d e
b d 1 f
c e f 1
где a = cos(Модель 1, Модель 2), b = cos(Модель 1, Модель 3), c = cos(Модель 1, Эталон), d = cos(Модель 2, Модель 3), e = cos(Модель 2, Эталон), f = cos(Модель 3, Эталон).
Итак, в случае нецентрированных коэффициентов получим:
a = (8·0 + 6·(–4) + 8·(–2))/((82 + 62 + 82)(02 + (–4)2 + (–2)2))1/2 = –40/(164·20)1/2 ≈ –0.69843,
b = (8·2 + 6·0 + 8·(–1))/((82 + 62 + 82)(22 + 02 + (–1)2))1/2 = 8/(164·5)1/2 ≈ 0.27937,
аналогично c ≈ –0.58435, d = 0.2, e ≈ 0.83666, f ≈ 0.59761. Итоговый вид матрицы:
1 -0.69843 0.27937 -0.58435
-0.69843 1 0.2 0.83666
0.27937 0.2 1 0.59761
-0.58435 0.83666 0.59761 1
При вычислении центрированных косинусных коэффициентов следует предварительно центрировать каждую строку исходной матрицы (независимо от прочих строк):
Замер 1 | Замер 2 | Замер 3 | |
---|---|---|---|
Модель 1 | 2/3 | –4/3 | 2/3 |
Модель 2 | 2 | –2 | 0 |
Модель 3 | 5/3 | –1/3 | –4/3 |
Эталон | 7/3 | –2/3 | –5/3 |
Соответствующая матрица косинусных коэффициентов имеет вид:
1 0.86603 0.18898 0.27735
0.86603 1 0.65465 0.72058
0.18898 0.65465 1 0.99587
0.27735 0.72058 0.99587 1
Считать матрицу из файла и вычислить матрицу попарных центрированных косинусных коэффициентов между её строками. Полученную матрицу коэффициентов сохранить в другой файл.
Вычислить и сохранить в отдельный файл также матрицу попарных центрированных косинусных коэффициентов между столбцами исходной матрицы.
Кувшинов Д.Р. © 2017