Лабораторная работа 10: матрица косинусных коэффициентов

Кувшинов Д.Р.

2017


Общее оглавление


Данная работа продолжает работу 9. Пример организации работы с матрицами поверх std::vector, включая ввод-вывод, приведён в самостоятельной работе 10 (файл amatrix2.hpp).


Задание 1

Дана матрица оценок. Строкам соответствуют способы оценивания, столбцам — оцениваемые объекты.

Пример 1: оценка товаров по шкале [–10, 10]
Товар 1 Товар 2 Товар 3
Покупатель 1 0 –5 10
Покупатель 2 3 0 5
Покупатель 3 7 3 7


Пример 2: оценки студентов по шкале [0, 100]
Студент 1 Студент 2 Студент 3
Контрольная 1 90 40 40
Контрольная 2 60 0 40
Контрольная 3 80 0 70


Пример 3: сведение многокритериального выбора к однокритериальному через сравнение с эталоном
Замер 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

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

Пример 3: таблица после центрирования каждой строки
Замер 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


Считать матрицу из файла и вычислить матрицу попарных центрированных косинусных коэффициентов между её строками. Полученную матрицу коэффициентов сохранить в другой файл.


Задание 2

Вычислить и сохранить в отдельный файл также матрицу попарных центрированных косинусных коэффициентов между столбцами исходной матрицы.


Общее оглавление

Кувшинов Д.Р. © 2017