Tengo una matriz cuadrada (que viene de una Cadena de Markov) que se ve así:
Q=[0100..000a1−a0..0000b1−b..00..............0000..01]
con a,b,c, etc. los números reales entre el 0 1 incluido.
Estoy interesado en los valores de la primera línea de la matriz QN. Actualmente, estoy usando una biblioteca (numpy) que me permite calcular QN y luego leí la primera línea de esta matriz. Pero con grandes matrices (>500×500) y los grandes valores de N (~ 10000), es un poco demasiado lento para mi uso.
Por curiosidad, me han conspirado QN0,j N entre 1 a 1000 y me encontré con que se siga algo que se parece a una distribución de Poisson o similar (pero no sé si es sólo por mi específicos de la matriz de entrada Q o no).
Mi pregunta es, dada una matriz Q, hay una manera para obtener los valores de QN0,j sin tener que calcular QN?
Edit: los términos de la diagonal son tales como: 0 <= a <= b <= c <= ... < 1
Edit2:
Parece que si puedo diagonalize Q, puedo usar Qn=PDnP−1, lo que es más rápido para grandes valores de n de una exponenciación al cuadrado (como el usado por numpy). El problema es que no estoy seguro de que es posible para cualquier matriz Q. Y si no es posible, me gustaría aceptar una ligera modificación de Q, P o D si el resultado es lo suficientemente cerca.
Edit3:
Los valores de la primera línea de QNN∈[1,100]:
Edit4:
es a<=b e no a<b, lo siento!