Digamos que eu tenha uma lista de valores de precipitação por hora, cada um mostrando quanta chuva aconteceu nas 24 horas anteriores, ordenada por data. Por exemplo:
{
'2012-05-24 12:00': 0.5, // .5" of rain from 5/23 12:00 - 5/24 11:59
'2012-05-24 11:00': 0.6, // .6" of rain from 5/23 11:00 - 5/24 10:59
'2012-05-24 10:00': 0.6, // .6" of rain from 5/23 10:00 - 5/24 09:59
...
'2012-05-23 10:00': 0
}
Existe uma estratégia / algoritmo para determinar quanta chuva caiu em cada uma das horas? Parece que não consigo entender isso. Eu sei que não é tão simples como somar as diferenças.
Visualização do conjunto de dados
P(N) [.....======================]
P(N-1) [....======================.]
P(N-2) [...======================..]
P(N-3) [..======================...]
I want [..........................=]
Muito obrigado por qualquer ajuda.
algorithms
functional-programming
functions
Mike Griffith
fonte
fonte
P(N-x)
adição, portanto, no final, o número de equações e incógnitas se expõem novamente.Respostas:
Supondo que o conjunto de dados sempre consista em janelas consecutivas de 24 horas (ou seja, o primeiro ponto de dados não é uma janela de 1 hora) ...
Este não é um problema solucionável, pelo menos no caso geral, porque existe um contra-exemplo em que pelo menos dois padrões de chuva são mapeados para um conjunto de dados.
Nos dois casos, você é
P(N) = 24"
para todosN
.Como não há um cenário que possa ser derivado desse conjunto de dados, o problema não é solucionável no sentido genérico.
Como um aparte, também podemos demonstrar que não é necessariamente verdade que o problema é sempre insolúvel. Mais simplesmente, se for
P(N) = 0"
para todosN
, existe apenas um padrão de chuva possível para explicar: zero centímetro de chuva a cada hora.Portanto, é o problema mais interessante identificar quais características do conjunto de dados tornam o problema solucionável. Trivialmente, se você tem um conjunto de dados com pelo menos um
N
dessesP(N) = 0"
, então você tem uma solução.Eu não ficaria surpreso se houvesse outras propriedades que tornassem o problema solucionável para um determinado conjunto de dados. Encontrar esses deve ser um desafio divertido. Ao mesmo tempo, provar que nada pode existir é igualmente divertido.
fonte
você precisa percorrer os dados até encontrar um período de precipitação 0 e calcular a partir desse ponto, conforme descrito pelo SnOrus. Se nenhum ponto de dados for 0, não acho que isso possa ser resolvido, a menos que você defina a entrada mais antiga como 1 hora após o início do tempo, portanto, os pontos anteriores são indefinidos.
também seria possível calcular para trás no tempo a partir de uma leitura de 0, fazendo a mesma coisa ao contrário (embora você obtenha pelo menos 24 0s seguidos.
fonte
... deve fornecer a quantidade de chuva na hora anterior a
P(n)
.fonte
Esta não é uma resposta completa, estou no trabalho e já gastei muito tempo nisso ... além disso, precisaria de mais dados para ver se meu palpite está correto.
Vamos chamar P (x) a medida de 24 horas no tempo x.
Considere o seguinte cenário de sobreposição:
P (X) - P (X-1) + H25 = H1.
Portanto, você precisa calcular o H25. Acredito que a solução esteja em algum lugar de um sistema criado a partir de P (X), P (X-1) e P (X-24).
fonte
Por duas horas consecutivas n (agora) e n-1 (a hora anterior), você tem a soma da precipitação de 24 horas (T) composta de 24 números de precipitação por hora (P):
Então:
(Os termos P (n-1) ... P (n-23) são duplicados em T (n) e T (n-1), portanto, subtraí-los resulta em 0.) Reorganizando, você obtém:
Agora, você não pode descobrir o que P (n) é, a menos que saiba o que P (n-24) é. Você pode voltar ainda mais nos dados para calcular P (n-24), mas para isso precisa de P (n-25) e assim por diante ad infinitum. O que você precisa, então, é o valor da precipitação para qualquer hora que tenha mais de 24 horas. Se você tiver isso, poderá calcular a precipitação horária para todas as horas subseqüentes.
fonte