import numpy as np
Estados possíveis
estados = ["Ensolarado", "Nublado", "Chuvoso"]
Matriz de transição
Linhas = estado atual
Colunas = próximo estado
matriz_transicao = np.array([
[0.6, 0.3, 0.1], # Ensolarado
[0.3, 0.4, 0.3], # Nublado
[0.2, 0.3, 0.5] # Chuvoso
])
Função para prever o próximo estado
def prever_proximo_estado(estado_atual):
indice = estados.index(estado_atual)
probabilidades = matriz_transicao[indice]
proximo_estado = np.random.choice(estados, p=probabilidades)
return proximo_estado
Função para simular vários dias
def prever_varios_dias(estado_inicial, dias):
resultado = [estado_inicial]
estado_atual = estado_inicial
for _ in range(dias):
estado_atual = prever_proximo_estado(estado_atual)
resultado.append(estado_atual)
return resultado
Função para prever distribuição futura (sem aleatoriedade)
def prever_distribuicao(estado_inicial, passos):
vetor_estado = np.zeros(len(estados))
vetor_estado[estados.index(estado_inicial)] = 1
resultado = vetor_estado
for _ in range(passos):
resultado = np.dot(resultado, matriz_transicao)
return resultado
Teste do sistema
if name == "main":
estado_inicial = "Ensolarado"
print("Simulação de 7 dias:")
previsao = prever_varios_dias(estado_inicial, 7)
print(previsao)
print("\nDistribuição após 5 dias:")
dist = prever_distribuicao(estado_inicial, 5)
for i, estado in enumerate(estados):
print(f"{estado}: {dist[i]:.2f}")