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:

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)
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
 
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
Pourriez-vous m'aider s'il vous plait ? Merci !