Bonjour,
Je cherche à approcher les coefficients a0, a1 et a2 de l'équation:
Cd = a0 + a1 * Cl^2 + a2 * Cl^4
par la méthode des moindres carrés.
Voilà mon code:
Mais j'obtiens le message d'erreurs suivant:
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 from numpy import random,dot import numpy from scipy.optimize import leastsq 'Creation des tableaux' nombre=7 altitude=[] Cd=[] Cl=[] Cd_estime=[] altitude_Cl_Cd=[] a=1 while a != nombre: altitude.append(a) Cd.append(a) Cl.append(a) Cd_estime.append(a) altitude_Cl_Cd.append(a) a+=1 altitude= [28000.0, 30000.0, 32000.0, 34000.0, 36000.0, 38000.0] Cd = [0.02395, 0.02408, 0.02421, 0.02434, 0.02447, 0.02467] Cl=[0.3, 0.3, 0.3, 0.3, 0.3, 0.3] def func2(cl,p): a0,a1,a2 = p return a0 + a1 * cl**2 + a2 * cl**4 def residuals(p): return [cd - func2(cl,p) for cd,cl in zip(Cd,Cl)] plsq, ler = leastsq(residuals, x0=[1]*6) print ('plsq : \n' , plsq) Cd_estime = [func2(cl,plsq) for cl in zip(Cl)] print ('Cd_estime: \n' , Cd_estime)
Pourriez-vous m'aider s'il vous plait ? Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Traceback (most recent call last): File "C:/Users/Mathilde/Desktop/Python/Calcul_Cd.py", line 106, in <module> plsq, ler = leastsq(residuals, x0=[1]*6) File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 369, in leastsq shape, dtype = _check_func('leastsq', 'func', func, x0, args, n) File "C:\Python27\lib\site-packages\scipy\optimize\minpack.py", line 20, in _check_func res = atleast_1d(thefunc(*((x0[:numinputs],) + args))) File "C:/Users/Mathilde/Desktop/Python/Calcul_Cd.py", line 104, in residuals return [cd - func2(cl,p) for cd,cl in zip(Cd,Cl)] File "C:/Users/Mathilde/Desktop/Python/Calcul_Cd.py", line 100, in func2 a0,a1,a2 = p ValueError: too many values to unpack
Partager