Bonjour à tous,
Je vous sollicite aujourd'hui car je tourne en rond sur mon projet de recherche des coordonnées du point d'intersection de deux droites, mon problème se situe je pense (pas certain) autour de la représentation des dates.
Mes x sont des dates et mes y des integer. Le script se déroule de la façon suivant :
- Transformation du format datetime en EPOCH
- Trie de la liste par date
- A partir de deux éléments consécutifs de la liste création de l'équation de la droite
- Recherche du point d'intersection (abscisse uniquement) avec la droite de la forme y = a*x
- Stockage des point dans liste
- Transformation des abscisses des points d'intersection en date "humaine"
c'est dans la partie 6 de mon code que les choses se complique, le résultat n'est pas bon j'ai des dates des années 70 (ex: 01/01/70-16:16:11)
Résultat du dernier print :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 # mise en forme horodatage pour trie par date data = [] epoch = datetime.datetime.utcfromtimestamp(0) for date, val in data_to_plot: dt = datetime.datetime.strptime(date, '%d/%m/%y-%H:%M:%S') delta = dt - epoch seconds = delta.seconds total_seconds = delta.total_seconds() line = total_seconds, val data.append(line) # trie par date data_by_date = [] getcount = itemgetter(0, 1) data_by_date = sorted(data, key=getcount) # equation des droites http://www.mathforu.com/cours-103.html print len(data_by_date) cp, y_b = 0, 0 duree = [] for item in data_by_date: if cp == 0: x_a, y_a = item[0], item[1] if cp == 1: x_b, y_b = item[0], item[1] cp = -1 cp += 1 # equation segment puissance y=mx+p if y_a < puis_sous and y_b >= puis_sous: m = (y_b - y_a) / (x_b - x_a) p = y_a - m * x_a x_intersec = ((-p) / (m - puis_sous)) print x_a, y_a, x_b, y_b, m, p, x_intersec duree.append(x_intersec) print len(duree) for i in duree: try: dt_obj = datetime.datetime.fromtimestamp(i).strftime('%d/%m/%y-%H:%M:%S') print i, dt_obj except ValueError: pass
55851.3833463 01/01/70-16:30:51
28301.6688498 01/01/70-08:51:41
98271.1714435 02/01/70-04:17:51
52113.4012105 01/01/70-15:28:33
99670.3390544 02/01/70-04:41:10
14463.6733246 01/01/70-05:01:03
54971.0143553 01/01/70-16:16:11
...
Partager