Documentaciónes_estocastica(P, tolerancia)

es_estocastica(P,tolerancia)\texttt{es\_estocastica}(P, tolerancia)

Nombre

es_estocastica - Verifica si una matriz de transicion es estocastica por filas.

Sinopsis

ok = markov.es_estocastica(P, tolerancia)

Descripcion

Comprueba que cada fila sume aproximadamente 1 y que todas las probabilidades sean no negativas.

Es la verificacion basica previa para trabajar con una cadena de Markov bien formada.

Formula:

jPij=1,Pij0\sum_j P_{ij}=1,\quad P_{ij}\ge 0

Validaciones y casos borde

  • Valida que P sea una matriz cuadrada no vacia.
  • Valida que tolerancia sea mayor que cero.
  • Si alguna de esas condiciones falla, emite ERROR().
  • Si la matriz no cumple la condicion estocastica, retorna FALSO.

Comportamiento

  • Verifica primero que la matriz sea cuadrada.
  • Rechaza filas con valores menores que 0 o mayores que 1 fuera de tolerancia.
  • Suma cada fila y comprueba que el resultado sea aproximadamente 1.
  • Retorna VERDADERO si toda la matriz cumple la condicion estocastica.

Funciones API relacionadas

  • markov.estacionaria()
  • markov.paso()
  • markov.absorbente()

Parámetros

ParámetroTipoDescripción
PMATRIZMatriz de transicion o probabilidades.
toleranciaNUMERICOTolerancia numerica usada como criterio de validacion.

Valor de retorno

LOGICO - VERDADERO si todas las filas cumplen la condicion estocastica; FALSO en caso contrario.

Ejemplo

ejemplo.blox
// Cadenas de MARKOV
//
// Problema
//
// Una cadena climática con 2 estados:
// 0 = Soleado
// 1 = Lluvioso
//
// Matriz de transición:
//
// P = [ [0.8, 0.2],
//       [0.4, 0.6] ]
//
//
// Distribución inicial:
//
// pi0 = [1, 0]
//
// Objetivo
// 
// Calcular la distribución después de 10 días.
// pi1 = pi0 * P    <-- dia 1
// pi2 = pi1 * P    <-- dia 2
// pi3 = pi2 * P    <-- dia 3
// pi4 = pi3 * P    <-- dia 4
// ...

INCLUIR "matrices.api"
INCLUIR "markov.api"

FUNCION PRINCIPAL
INICIO "ejemplo_stochastic"

    MATRIZ P[2][2]

    P[0][0] = 0.8   P[0][1] = 0.2
    P[1][0] = 0.4   P[1][1] = 0.6

    LOGICO ok
    ok = markov.es_estocastica(P, 0.000001)

    SI (ok == VERDADERO) ENTONCES
        IMPRIMIR ("P es estocastica.")
    SINO
        IMPRIMIR ("P NO es estocastica.")
    FIN_SI


FINAL