You are on page 1of 11
oayt2r2028 14:92 (Optimisation et Processus de décsion - Jupyter Notebook MINIBeLR LOL ETEOMOReTT IMi siAlr 1 10IN} INSTITUT SUPERIEUR D‘INFORMATIQUE ET DE GESTION DE KAIR ouAN Mouhamed aziz bouhrem 3 Gust Gee 2 exercice 1 Pour résoudre l’équation f(x)=x3-2x2+x=0 dans I'intervalle [-2, 2 ] avec une tolérance de 10-4 , 10-6 et 10-8 en utilisant | algorithme de la dichotomie Entrée [1]: wavoununn 10 a 12 B 14 15 16 v7 18 19 20 21 22 23 24 *##* 1 algorithme de la dichotomie**** import numpy as np import matplotlib.pyplot as plt def #(x) return np.power(x, 3) - 24np.power(x, 2) + x def dichotomie (f, a, b, tol=1e-6, Niter =1000): assert(#(a) < @ and f(b) > @), “Erreur , on doit avoir f(a) < @ et assert(a tol: 45 if F(c) < F(d): 16 bed v7 else: 18 a 19 c=b- (b- a) / gr 20 d= a+ (b- a) / gr 21 return (b + a) / 2 22 23. # Trouver Le maximum ou Le minimum 24 x max = sectionDoree(@, 1) 25 26 # Tracer La fonction 27 x = np.linspace(®, 1, 400) 28 y = np.exp(-x) * np.cos(5*x) 29 plt.plot(x, y, label="F(x) 30 plt.plot(x_max, F(x_max), 31 plt.legend() 32. plt.show() 33 34 e*{-x} cos(5x)") "ro") 10 — F(x) =e“ {x} cos(5x) og 0.6 04 0.2 0.0 0.0 0.2 0.4 06 08 1.0 locathost'8888/notebooks/Optimsation et Processus de décision.ipynb oayt2r2028 14:92 Entrée [5 (Optimisation et Processus de décsion - Jupyter Notebook Alors F(x) donne une graphe unimodale sur lintervalle [0, 1] ‘comme F(x) donne un minimum ,On utilisez la méthode d’optimisation appropriée pour le déterminer numériquement. =** méthode d' optimisation appropriée*** import math import matplotlib.pyplot as plt import numpy as np from scipy.optimize import minimize # Definir La fonction def F(x) return math.exp(-x) * math.cos(5*x) 1@ # UtiLlisez La fonction minimiser de scipy pour trouver Le minimum 11 result = minimize(F, @.5, bounds=[(@, 1)]) 13. # Imprimer Le résultat 14 print("le minimum valueur est a x » result.x[@]) 16 le minimum valueur est a x = @,588839413095213 pour rechercher les nombres d'itérations nécessaires pour atteindre la convergence vers la solution avec une tolérance 10-6 prés on va utiliser méthode de gradient a pas constant (Descente de gradient & pas (quasi-) optimal) ***Descente de gradient a pas (quasi-) optima yee Pour illustrer graphiquement les différentes itérations on va utiliser aussi utiliser méthode de gradient a pas constant aussi locathost'8888/notebooks/Optimsation et Processus de décision.ipynb am oayt2r2028 14:92 (Optimisation et Processus de décsion - Jupyter Notebook Entrée [6]: import numpy as np 1 2 import matplotlib.pyplot as plt 3 4 # Define the function and its derivative 5 def F(x): 6 return np.exp(-x) * np.cos(5*x) 7 8 9 def dF(x): return -np.exp(-x) * np.cos(5*x) - 5 * np.exp(-x) * np.sin(S*x) 11 # Gradient descent algorithm 12. def gradient_descent(x_start, learning rate, tol): 3 x = x_start 14 x.values = [x] # List to store the x values at each iteration 45 i= 0 # Initialize the iteration counter 16 while Tru 7 x_new = x - learning_rate * dF(x) 18 if abs(x_new - x) < tol: 19 break 28 x = xnew 21 x_values.append(x) # Store the new x value 22 i++ 1 # Increment the iteration counter 23 return x_values, i 24 25 # Parameters 26 x_start = 0.5 27, learning_rate 28 tol = 10-6 29 3@ # Run the algorithm 31 xvalues, n_iters = gradient_descent(x_start, learning rate, tol) 32 33 print("Le nombre d'itérations nécessaires pour atteindre la convergence 34 35 # Plot the function and the x values at each iteration 36 x = np.linspace(a, 1, 400) 37 y = np.exp(-x) * np.cos(S*x) 38 plt.plot(x, y, label="F(x) = e%{-x} cos(5x)') 39 plt.plot(x_values, [F(x) for x in x_values], ‘ro-') # The red points a 4@ plt.legend() 41 plt.show() 42 43 4a. Le nombre d'itérations nécessaires pour atteindre la convergence est 62 locathost'8888/notebooks/Optimsation et Processus de décision.ipynb ant oayt2r2028 14:92 (Optimisation et Processus de décsion - Jupyter Notebook 10 — F(x) =e“ {x} cos(5x) og 0.6 04 0.2 0.0 0.0 0.2 0.4 06 08 1.0 exercice 3 Pour résoudre équation f(x) = 0 avec f(x)= cos(x) en utilisant la méthode d'optimisation Newton. on difinir la fonction et la mrthode de newton et on excute | algorithme avec le paramtre locathost'8888/notebooks/Optimsation et Processus de décision.ipynb ann oayt2r2028 14:92 (Optimisation et Processus de décsion - Jupyter Notebook Entrée [7]: import numpy as np # difinir La fonction def f(x) return np.cos(x) def df(x) return -np.sin(x) BSeavauaunn 1@ # Newton's method 11 def newton_method(x start, tol): 2 x = x start B while True: 14 xnew = x = F(x) / dF (x) 15 if abs(x_new - x) < tol: 16 break v7 x= xnew 18 return x 19 20 # paranetre 21 x.start = 2 # Start near pi 22 tol = 1e-6 23 24 # Excuter algorithm 25 x_zero = newton_method(x_start, tol) 26 27 print("La solution de 1'équation (x) = @ est x =", x_zero) 28 La solution de 1'équation f(x) = @ est x = 1.5707963267948066 Pour déterminer le nombre ditérations nécessaires pour résoudre I’équation {(x)=cos(x) en utilisant la méthode de Newton avec un point de départ x0=1 5 et une tolérance de 10-8, nous pouvons modifier 'algorithme précédent pour compter le nombre ditérations locathost'8888/notebooks/Optimsation et Processus de décision.ipynb sont oayt2r2028 14:92 Entrée [8]: BSeavauaunn 4 ct 12 3 14 45 16 7 18 19 20 21 22 23 24 25 26 27 28 29 38 (Optimisation et Processus de décsion - Jupyter Notebook import numpy as np # difinir La fonction def F(x): return np.cos(x) def df(x) return -np.sin(x) # Newton's method def newton_method(x_start, tol): x = xstart i= # Initialisation while Tru xnew = x = (x) / df(x) if abs(x_new - x) < tol: break x = xnew its 1 # Incrementation return i # Parametere x_start = 1.5 tol = 10-8 # excuter n_iters = newton_method(x_start, tol) print("Le nombre d'itérations nécessaires pour atteindre 1a convergence Le nombre d'itérations nécessaires pour atteindre la convergence est 2 locathost'8888/notebooks/Optimsation et Processus de décision.ipynb wnt

You might also like