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

Тема в разделе "C/C++/C#", создана пользователем aAzZ, 19 фев 2011.

  1. aAzZ

    aAzZ Гость

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

    IrineK Гость

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

    Подробнее: http://www.intuit.ru/department/mathematic...atrix/10/1.html

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

    aAzZ Гость

    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

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

    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)
    Условие нормировки выполнено, поскольку мы его включили в систему.
     
Загрузка...
Похожие Темы - Умножение вектора на
  1. student22rus
    Ответов:
    1
    Просмотров:
    2.438
  2. GirYA
    Ответов:
    0
    Просмотров:
    1.627
  3. Ruslan737
    Ответов:
    0
    Просмотров:
    1.337
  4. bearpaw
    Ответов:
    0
    Просмотров:
    1.583
  5. pastorixx
    Ответов:
    0
    Просмотров:
    1.901

Поделиться этой страницей