Как умножить две матрицы, используя NumPy итеративным образом.для данного диапазона в питоне - PullRequest
0 голосов
/ 17 октября 2018

Я хочу вычислить результирующую Матрицу состояния путем умножения матрицы начального состояния и матрицы перехода на заданный промежуток времени.

Например, если период равен 1 месяц, тогда State1 [matrix] будет State[]*Transition[]
Если период равен 2, то State2[] = State1[]*Transition
3, затем State3[]=State2[]* Transition
... и т. Д.

У меня возникла проблема с повторением значений результирующегоМатрица с использованием циклов:
Я не знаю, как перебирать значения с помощью умножения в python.

Вот мой код:

import numpy as np

statevector=np.array([0.2,0.8])

transition=np.array([[0.9,0.1],[0.7,0.3]])

for product in range(0,1):
    product=statevector

    product=np.dot(statevector,transition)

    product=product+1

    r=np.dot(product,transition)
    print(r)

1 Ответ

0 голосов
/ 17 октября 2018

Если я вас правильно понимаю, вы хотите многократно умножить вектор состояния на матрицу перехода.Один из способов сделать это заключается в следующем цикле for:

import numpy as np

statevector=np.array([0.2,0.8])

transition=np.array([[0.9,0.1],[0.7,0.3]])

states = [statevector]

for i in range(10):
    statevector=np.dot(statevector,transition)
    states.append(statevector)

print(states)

На каждой итерации я добавляю новое состояние в список states.Конечный результат:

[array([0.2, 0.8]), array([0.74, 0.26]), array([0.848, 0.152]), array([0.8696, 0.1304]), array([0.87392, 0.12608]), array([0.874784, 0.125216]), array([0.8749568, 0.1250432]), array([0.87499136, 0.12500864]), array([0.87499827, 0.12500173]), array([0.87499965, 0.12500035]), array([0.87499993, 0.12500007])]
...