Moyenne de températures

La question :

Bonjour,

Ce que je veux faire est en théorie simple, c'est calculer la moyenne de
températures sur une période donnée.

Les données en entrée sont des couples date (en s) et température (en °C).

Le problème est que les intervalles entre les dates ne sont pas
identiques, sinon il suffirait de faire la somme des températures /
nombre de mesures.

J'avais pensé simuler des intervalles égaux d'une seconde en calculant
des températures intermédiaires par simple interpolation linéaire. La
moyenne est alors la somme des températures intermédiaires ou réels /
durée en s.

Mais il doit y avoir un autre moyen car l'interpolation linéaire, c'est
un peu trop rude je pense.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Poser votre question sur le forum Programmation

Les 9 réponses :

&#201;ric L&#233;v&#233;nez a écrit :


Mais il doit y avoir un autre moyen car l'interpolation lin&#233;aire,
c'est un peu trop rude je pense.


L'interpolation quadratique?


--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.

On 19/05/12 18:42, Éric Lévénez a écrit :


Bonjour,

Ce que je veux faire est en théorie simple, c'est calculer la moyenne de
températures sur une période donnée.

Les données en entrée sont des couples date (en s) et température (en °C).

Le problème est que les intervalles entre les dates ne sont pas
identiques, sinon il suffirait de faire la somme des températures /
nombre de mesures.


Question bête, est-ce que faire la moyenne pondérée (par l'intervalle
entre les mesures, ou l'intervalle centré sur chaque mesure) ne
suffirait pas ?

Si la série est assez longue et pas trop irrégulière (i.e. tous les
intervalles sont du même ordre de grandeur), je pense que le résultat
doit être au pouillème près la même chose que ce que donnera une
interpolation plus complexe.

Sinon, quelles propriétés cherches-tu dans l'interpolation ? Simplicité
de l'algo ? Rapidité de calcul ? Précision du résultat (mais par rapport
à quel référence théorique) ? Continuité de la courbe/dérivée/dérivée
n-ième ? Similarité avec un processus physique (genre températures
journalières ou annuelles) ?

Je ne suis pas sûr de comprendre ce que tu veux dire par
"l'interpolation linéaire, c'est un peu trop rude"...
--
Rémi Moyen

Le 19/05/12 22:25, Pascal J. Bourguignon a écrit :


Éric Lévéneza écrit :


Mais il doit y avoir un autre moyen car l'interpolation linéaire,
c'est un peu trop rude je pense.


L'interpolation quadratique?


Oui, c'est ce que je pensais, mais le but n'étant pas de calculer la
courbe complète des points, mais juste la moyenne, j'espérais un
algorithme plus simple.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Éric Lévénez a écrit :


Le 19/05/12 22:25, Pascal J. Bourguignon a écrit :


Éric Lévéneza écrit :


Mais il doit y avoir un autre moyen car l'interpolation linéaire,
c'est un peu trop rude je pense.


L'interpolation quadratique?


Oui, c'est ce que je pensais, mais le but n'étant pas de calculer la
courbe complète des points, mais juste la moyenne, j'espérais un
algorithme plus simple.


Le plus simple, c'est de calculer la surface.

Σ δtᵢ·Tᵢ
----------
Σ δtᵢ

(/ (sum i (* (delta-t i) (temp i)))
(sum i (delta-t i)))


Mais comme on suppose que la température évolue continuement, les sauts
de températures ne sont pas réaliste, donc on peut faire une
interpolation linéaire.


Σ δtᵢ·½(Tᵢ₊₁+Tᵢ)
---------------
Σ δtᵢ

(/ (sum i (* (delta-t i) (/ (+ (temp (+ i 1)) (temp i)) 2)))
(sum i (delta-t i)))




Maintenant, avec l'interpolation linéraire, on a des changements de
variation de température aux temps de mesures qui sont discontinus, et
ceci n'est probablement pas réaliste non plus. En tout cas, il n'y a
aucune raison pour que tous les changement de variation de température
discontinus se produisent toujours au moment de la mesure. Une
interpolation quadratique ne résoudrait pas ce problème.

Ainsi, on pourrait prendre comme contraintes que:

- la température évolue continument,
- la variation (dérivée) de température évolue continument.

Aux points de mesure, on a deux tangentes, une vers la gauche, et une
autre vers la droite. On pourrait faire une moyenne pondérée pour
obtenir une seule tangente (si on a une mesure plus proche que l'autre,
on peut supposer que la courbe ira plus directement vers elle).

Donc on a maintenant le problème d'imaginer une courbe entre deux points
et se finissant avec deux tangentes données. Les courbes de Bezier
cubiques pourraient faire l'affaire.


P(τ)=P₀(1-τ)³+3P₁τ(1-τ)²+3P₂τ²(1-τ)+P₃τ³

avec: τ-1 = tᵢ-δtᵢ
τ = tᵢ

P₀ et P₃ sont les points de mesure.
P₁ et P₂ sont sur les tangentes, mais on peut choisir leur position (ça
donne une variation plus ou moins brusque, je les prendrais trés proche
des points de mesure, par exemple 1/10 de δtᵢ).


Reste à intégrer ces courbes parametriques cubiques (entre tᵢ-δtᵢ et
tᵢ), ie. effectuer le changement de variable de τ par t, et
l'intégration est alors toute simple (c'est un simple polynôme de degré
3).




--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.

Le 20/05/12 00:19, Rémi Moyen a écrit :


On 19/05/12 18:42, Éric Lévénez a écrit :



Si la série est assez longue et pas trop irrégulière (i.e. tous les
intervalles sont du même ordre de grandeur), je pense que le résultat
doit être au pouillème près la même chose que ce que donnera une
interpolation plus complexe.

Sinon, quelles propriétés cherches-tu dans l'interpolation ? Simplicité
de l'algo ? Rapidité de calcul ? Précision du résultat (mais par rapport
à quel référence théorique) ? Continuité de la courbe/dérivée/dérivée
n-ième ? Similarité avec un processus physique (genre températures
journalières ou annuelles) ?

Je ne suis pas sûr de comprendre ce que tu veux dire par
"l'interpolation linéaire, c'est un peu trop rude"...


C'est pour de la domotique. j'ai des capteurs de températures qui
remontent des infos par intervalle de 60 à 90 s, de façon irrégulière,
et parfois l'info n'est pas remontée (émission perturbée). Je voudrais
calculer la température moyenne par capteur.

En pratique, donc, mon problème n'a pas besoin d'une grande précision,
voire pas de précision du tout. Mais c'est plus pour la beauté de l'art
que pour autre chose que je voudrais faire ce calcul.

Pour la moyenne je voudrais calculer celle d'une journée entière, celle
de la nuit et celle du jour. Il me faudra calculer l'heure de lever et
coucher du soleil pour connaître les bornes temporelles.

En y réfléchissant, comme les sondes de température émettent entre 60 à
90 s, et parfois pas, si j'obtiens 140 s entre 2 mesures, je peux
supposer qu'une mesure manque et faire l'interpolation linéaire simple
pour la retrouver (la température ne change pas brutalement). Cela
devrait aller.

Je vais quand même regarder du côté d'une interpolation quadratique,
mais bon en Perl, ce n'est pas simple à coder...

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Poser votre question sur le forum Programmation

Questions similaires :

Valeur Moyenne d'une surface

Bonjour, Je dispose d'une surface en dimension n : y = f(x1, x2, ..., xn) ( au besoin je connais les dérivés partielles de cette surface ) Je cherche une manière intelligente de calculer la valeur moyenne de y Par echantillonnage, le temps de calcul quand n est grand...

Faire une moyenne d'angle (girouette)

Bonjour, je cherche à faire une moyenne d'angle, valeur qui ont été relevé sur une girouette, pour donner la direction moyenne du vent sur une période (par exemple). une moyenne simple ne fonctionne pas (350° et -10° doit donner une direction à 0°, et pas 170°) j'avais pensé à la moyenne des Tan...