Вычислить нулевое пространство матрицы в PythonPython

Программы на Python
Anonymous
Вычислить нулевое пространство матрицы в Python

Сообщение Anonymous »

В этой статье (на странице 5) я пытаюсь понять, как реализовать уравнение (6). Уравнение следующее:
Изображение

Вместе с C P — это матрица выбросов и матрица перехода состояний в HMM. Цель состоит в том, чтобы вычислить N.
Давайте возьмем пример 4 из этой статьи.

[img]https:// i.stack.imgur.com/gi7KH.png[/img]

Результат в статье представлен следующим образом:

Изображение

Вот код, который я использовал:

Код: Выделить всё

import numpy as np
from scipy.linalg import null_space

n = 4
P = np.array([[1/2, 0, 1/3, 1/4], [0, 1/3, 1/3, 1/4], [1/2, 0, 1/3, 0], [0, 2/3, 0, 1/2]])
C = np.array([[1/4, 1/4, 1/2, 7/16], [3/4, 3/4, 1/2, 9/16]])

N = C
for i in range(1, n):
N = np.vstack((N, np.dot(C, np.linalg.matrix_power(P, i))))

ns = null_space(N)
print(ns)
Результат кода отличается от приведенного в статье:

Код: Выделить всё

[[ 0.71204526  0.05287224]
[-0.69918134  0.14473901]
[ 0.03859176  0.59283375]
[-0.05145569 -0.790445  ]]
Что я сделал не так и как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/783 ... -in-python

Вернуться в «Python»