• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Умножение вектора на матрицу

  • Автор темы aAzZ
  • Дата начала
A

aAzZ

Фишка задачи заключается в том что необходимо найти такой вектор, который при умножении на какую-то матрицу будет равен сам себе, с условием нормировки, что сумма всех элементов вектора будет равна 1. Сам алгоритм умножения вектора на матрицу не представляет ничего сложного, но вот как найти такой вектор, проверяя по данному условию я ума не приложу.
 
I

IrineK

Ваша задача похожа на коряво поставленную задачунаходжения собственных чисел и собственных векторов матрицы.
Дана матрица А. Тогда собственный вектор Х и собственное число λ удовлетворяют соотношению:
АХ = λХ, т.е. матрица умноженная на вектор дает вектор, пропорциональный исходному.

Подробнее:

Для продолжения диалога уточните:
1) вы умножаете вектор на матриицу или матрицу на вектор;
2) на выходе - сам вектор, или пропорциональный ему вектор;
3) условие нормировки: сумма элементов вектора равна 1, или сумма квадратов элементов равна 1 (что естественней для линейной алгебры).
 
A

aAzZ

Для продолжения диалога уточните:
1) вы умножаете вектор на матриицу или матрицу на вектор;
2) на выходе - сам вектор, или пропорциональный ему вектор;
3) условие нормировки: сумма элементов вектора равна 1, или сумма квадратов элементов равна 1 (что естественней для линейной алгебры).
1) вектор на матрицу
2) сам вектор
3) сумма элементов вектора равна 1

пример, дана матрица t:
0.5 0.5 0
0.1 0.1 0.8
0 0.7 0.3
для неё надо найти такой вектор w=(x,y,z) что бы w*t=w, с условием что сумма всех элементов w равна 1
соответственно получаем такую систему уравнений
0,5x+0,5y+0z=x
0,1x+0,1y+0,8z=y
0x+0,7y+0,3z=z
x+y+z=1

нужен алг который это будет делать
 
I

IrineK

Угу, линейная алгебра и что-то с вероятностями.
Алгоритм такой.

Первый этап: проверка |t-E| = 0

Равенство wt=w равносильно:
w(t-E) = 0, где Е - единичная матрица
Поскольку вектор w ненулевой, равенство выполняется только при условии, что определитель:
|t-E| = 0
(Т.о., необходима подпрограмма для вычисления определителя.)

В данном случае из исходной матрицы получаем:
-0,5; 0,5; 0
0,1; -0,9; 0,8
0; 0,7; -0,7
Определитель равен 0. Можно переходить ко второму этапу
(Если определитель не равен 0, выводим сообщение, что вектора w не существует. End)
*****************************
Второй этап: решение системы
Определитель равен 0, значит система из трех первых уравнений избыточна. Отбрасываем одно из них (по вкусу). При размерностях n>3 поступаем так же - отбрасываем одно из первых n уравнений.
Решаем оставшуюся систему.
(Для небольших размерностей - методом Крамера, используя все ту же подпрограмму для вычисления определителя)

В данном случае отбросим первое уравнение и решаем:
0,1x-0,9у+0,8z=0
0x+0,7y-0,7z=0
x+y+z=1

Решение: x=y=z = 1/3, т.е w = (1/3;1/3;1/3)
Условие нормировки выполнено, поскольку мы его включили в систему.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!