Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def methodedenewton(a,epsilon):
- x=a+1
- while abs(x**2-a)>epsilon: #avec f(x)=x**2-a
- x=x-(x**2-a)/(2*x)
- return x
- def derive(P):
- Q=[]
- n=len(P)
- for i in range(1,n):
- Q.append(P[i]*i) #on ajoute à Q ai*i à chaque itération en partant de i=1 car la liste Q aura un terme en moins par rapport à P, du fait de la dérivation de la constante dans P
- return Q #Q est la liste correspondant à la dérivée de P
- def primitive(P):
- Q=[1] #Q(0)=1 donc on ajoute au départ la constante 1 à la liste Q
- n=len(P)
- for i in range(0,n): #on part de 0 car on trouve une primitive pour chaque monôme constituant P
- Q.append(P[i]/(i+1))
- return Q #Q est la liste correspondant à la primitive de P telle que Q(0)=1
- def addition(P,Q):
- n=len(P)
- R=[]
- for i in range(0,n):
- R.append(P[i]+Q[i]) #on additionne les coefficients des monômes de même degré
- return R #R est la liste correspondant au polynôme P+Q
- def addition_v2(P,Q):
- while len(P)!=len(Q):
- if len(P)<len(Q): #on ajoute des 0 en fin de liste de P ou Q si les listes n'ont pas la même taille
- P.append(0)
- else:
- Q.append(0)
- R=addition(P,Q) #on applique addition à R
- while R[len(R)-1]==0: #on retire le dernier terme de la liste si c'est 0
- R.pop()
- return R
- def evalue_naive(P,x):
- a=P[0]
- X=1
- n=len(P)
- for i in range(1,n): #la boucle ne fonctionne pas pour le rang i=0 donc on part de i=1
- X*=x #le degré de x augmente à chaque itération
- a+=X*P[i] #on multiplie (pour châque monôme de degré k) x**k par le coefficient ak et on les somme
- return a
- def evalue_horner(P,x):
- n=len(P)
- a=P[n-1]
- for i in range(0,n-1):
- a=a*x+P[n-i-2] #d'après la relation de récurrence trouvée
- return a #renvoie alpha_n-1 c'est a dire P(x)
- def evalue_rapide(P,x):
- a=0
- n=len(P)
- for i in range (n):
- a+=P[i]*x**i #on somme (comme pour evalue_naive) les monômes après avoir évalué
- return a
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement