Я пытаюсь вычислить P^100
, где P
— моя матрица перехода. Я хочу сделать это, диагонализируя P
так, чтобы у нас было P = Q*D*Q^-1
.
Конечно, если я смогу получить P
такой формы, то я смогу легко вычислить P^100 = Q*D^100*Q^-1
(где *
обозначает умножение матриц).
Я обнаружил, что если вы просто сделаете P^5
, все, что вы получите взамен, — это матрица, в которой каждая из ваших записей P была возведена в пятую степень, а не в пятую степень матрицы (P*P*P*P*P
).
Я нашел здесь вопрос, в котором спрашивается, как проверить, является ли матрица диагонализируемой, но не как явно построить диагонализацию матрицы. В MATLAB это очень просто, но я использую R, а не MATLAB.
P%*%P%*%P%*%P%*%P
и, возможно, что-то вроде Reduce('%*%', as.list(rep(P,5)) ) - person IRTFM   schedule 03.02.2020