Advertisement
Guest User

DS INFO Diane Hamlat

a guest
Apr 4th, 2020
372
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.30 KB | None | 0 0
  1. ###Exercice 1 question 4
  2. def f(x,a):   # on définit f pour une meilleure lisibilité
  3.   return x**2-a
  4. def g(x):     # idem avec la dérivée de f
  5.   return 2*x
  6.  
  7. def newton(a,eps):
  8.   x0=a+1
  9.   while abs(f(x))>eps:
  10.     x=x-f(x)/g(x)
  11.   return x
  12.  
  13. ###Exercice 2.1 question 3
  14. def derive(P):
  15.   n=len(P)
  16.   P1=[]
  17.   for i in range (1,n):
  18.     P1.append(i*P[i])   #on définit P1 comme la somme des i*P[i]*X**(i-1), i variant de 1 à (n-1). Ainsi en partant de i=1, on a supprimé le terme constant pour X=0
  19.   return P1
  20.  
  21. ###Exercice 2.1 question 4
  22. def primitive(P):
  23.   n=len(P)
  24.   Q=[1]                     #il s'agit du coefficient constant tq Q(0)=1
  25.   for i in range (n):
  26.     Q.append(1/(i+1)*P[i]) #Q prend les coefficients de la primitive de P. On a degP=n car les coeffcients sont décalés d'un rang grâce à l'initialisation
  27.   return Q
  28.  
  29. ###Exercice 2.1 question 5
  30. def addition(P,Q):
  31.   n=len(P)
  32.   R=[]
  33.   assert len(P)==len(Q)
  34.   for i in range(n):
  35.     R.append(P[i]+Q[i])
  36.   return R
  37.  
  38. ###Exercice 2.1 question 6
  39. def addition_v2(P,Q):
  40.   n,m=len(P),len(Q)
  41.   S,R=[],[]
  42.   if m==n:
  43.     R=addition(P,Q)
  44.   elif m>n:
  45.     for i in range (m):
  46.       S.append(0)     #degS=degQ
  47.     for i in range(n):
  48.       S[i]=P[i]       #S correspond au polynôme P auquel on a rajouté des 0 tq degS=degQ
  49.     R=addition(S,Q)   #on peut ainsi calculer la somme de P et de S
  50.   else:
  51.     for i in range (n):
  52.       S.append(0)     #degS=degP
  53.     for i in range (m):
  54.       S[i]=Q[i]       #idem que précédemment avec le polynôme Q
  55.     R=addition(S,P)
  56.   for i in range(n-1,-1,-1):
  57.     if R[i]==0:
  58.       R.pop()       #on supprime tous les derniers éléments nuls
  59.     else:
  60.       break
  61.   return R
  62.  
  63. ###Exercice 2.2 question 3
  64. def evalue_naive(P,x):
  65.   n=len(P)
  66.   A=P[0]
  67.   X=1
  68.   for i in range(1,n):
  69.     X*=x        #avec la variable X on peut augmenter d'une puissance à chaque passage dans la boucle
  70.     A+=P[i]*X
  71.   return A
  72.  
  73. ###Exercice 2.3 question 1
  74. def evalue_rapide(P,x):
  75.   n=len(P)
  76.   A=0
  77.   for i in range(n):
  78.     A+=P[i]*x**i  #par principe de l'exponenciation rapide
  79.   return A
  80.  
  81. ###Exercice 2.5 question 3
  82. def evalue_horner(P,x):
  83.   n=len(P)
  84.   A=P[n-1]        #on pose alpha0=an-1
  85.   for k in range(n-1):
  86.     A=A*x+P[n-(k+2)]   #par la relation de récurrence sur alpha définie question1
  87.   return A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement