import numpy as np
Estados possíveis do clima
estados = ["Ensolarado", "Nublado", "Chuvoso", "Ventando"]
Matriz de transição
Cada linha soma 1 (100%)
matriz_transicao = [
[0.60, 0.20, 0.10, 0.10], # Ensolarado
[0.30, 0.40, 0.20, 0.10], # Nublado
[0.20, 0.30, 0.40, 0.10], # Chuvoso
[0.40, 0.20, 0.20, 0.20] # Ventando
]
Estado inicial escolhido
estado_inicial = "Nublado"
Número de dias para prever
dias_previsao = 10
Função para encontrar o índice do estado
def obter_indice_estado(estado):
return estados.index(estado)
Função que implementa a Cadeia de Markov
def prever_clima(estado_inicial, dias):
estado_atual = estado_inicial
previsao = [estado_atual]
for _ in range(dias - 1):
indice = obter_indice_estado(estado_atual)
proximo_estado = np.random.choice(
estados,
p=matriz_transicao[indice]
)
previsao.append(proximo_estado)
estado_atual = proximo_estado
return previsao
Teste do modelo
resultado = prever_clima(estado_inicial, dias_previsao)
Exibição dos resultados
print(f"Estado inicial: {estado_inicial}")
print("Previsão para os próximos 10 dias:")
for dia, clima in enumerate(resultado, start=1):
print(f"Dia {dia}: {clima}")
"""
Exemplo de saída possível:
Estado inicial: Nublado
Previsão para os próximos 10 dias:
Dia 1: Nublado
Dia 2: Ensolarado
Dia 3: Ensolarado
Dia 4: Nublado
Dia 5: Chuvoso
Dia 6: Chuvoso
Dia 7: Nublado
Dia 8: Ventando
Dia 9: Ensolarado
Dia 10: Ensolarado
"""