• Aucun résultat trouvé

M1Math ´e matiques

N/A
N/A
Protected

Academic year: 2022

Partager "M1Math ´e matiques"

Copied!
16
0
0

Texte intégral

(1)

Enonc´ ´ e des travaux dirig´ es

M1 Math´ematiques

Programmation - Python

etienne.birmele@parisdescartes.fr

Automne 2019 Universit´e Paris Descartes

(2)
(3)

Travaux dirig´ es 1

TP1 - Introduction

Python est un logiciel libre de programmation. On peut ex´ecuter une commande soit en la tapant directement en ligne de commande, soit en ex´ecutant un script qui est une suite de commandes qui se trouvent dans un fichier dont l’extension est ”.py”.

Des environnements telsJupyterpermettent ´egalement de coder tout en commentant son code et en l’organisant tel un projet. C’est principalement dans cet environnement que se d´eroulera ce cours.

Avant d’aborder les notions essentielles, quelques points importants `a garder en m´emoire, quelque soit le langage utilis´e :

1. La commande la plus importante est sans doute l’aide des fonctions, ici?. A utiliser abondamment avant d’appeler `a l’aide.

2. Ne pas h´esiter ´egalement `a utiliser internet pour trouver des pages o`u la gestion du probl`eme ou du message d’erreur auquel vous ˆetes confront´e est d´etaill´ee.

3. Toujours donner des noms explicites `a vos variables et fonctions, commenter les passages qui ne sont pas intuitifs, indenter correctement (l’avantage de Python est de ne pas vous laisser le choix de ce point de vue). Il faut ´ecrire votre code en vous disant que vous devez ˆetre capable de le comprendre `a la relecture dans trois ans (cela vous arrivera en pratique !).

1.1 Un cours introductif

Il existe de nombreux cours et pages web comportant des introductions `a Python.

Parmi eux, le cours disponible surhttps://python.sdv.univ-paris-diderot.fr/

cours-python.pdf est un document tr`es clair et avec de nombreux exercices.

Les chapitres 1 `a 12 sont faciles, rapides `a lire et donnent l’essentiel pour pouvoir commencer `a coder.

Quelques remarques pour ceux d’entre vous qui n’ont jamais cod´e sous Python : 1. L’appel `a l’aide de la fonctionfonct se fait `a l’aide de la commande ?fonct 2. Les indices dans les listes et tableaux d´emarrent `a 0.

3. Les identations se font `a l’aide de quatre espaces.

Une ligne pr´ec´edent une indentation (commen¸cant par if, elif, else, for, while) se termine par un :. C’est la fin de l’indentation qui marque la fin du code qui est concern´ee par le test ou la boucle.

Pour parcourir tous les nombres de 0 `a n−1, le plus simple est d’utiliser range(n). Ainsi

for i in range(n):

print(n)

affichera tous les entiers de 0`an. A noter querangepeut ne pas partir de0et ne pas augmenter de 1en 1 (cf?range).

(4)

1.2. Exercices

4. De nombreuses fonctions et constantes sont disponibles dans des modules qu’il faut charger. Par exemple, pour utiliser la fonction exp du package numpy, il faudra en pr´eambule importer numpy :

import numpy

puis appeler la fonction `a l’aide denumpy.exp().

Quand un module est appel´e tr`es souvent ou a un nom trop long, on peut lui affecter un nom plus court :

import numpy as np

puis appeler la fonction via np.exp()

5. Le mot-cl´e pour d´efinir une fonction estdef, la ou les variables `a retourner sont inclues dans une commande return.

Par exemple, la fonction suivante renvoie les coordonn´ees cart´esiennes d’un point d´efini par ses coordonn´ees polaire :

def coordonnees_cartesienne(r,theta):

x=r*math.cos(theta) y=r*math.sin(theta) return(x,y)

L’appel [x,y]=coordonnees_cartesiennes (2,np.pi/4) entraine alors la cr´eation de deux variablesxetycontenant respectivement les parties r´eelles et imaginaires de 2eiπ4.

6. Attention ! La copie de variables peut r´ev´eler des surprises car elle est g´er´ee diff´eremment sous Python que sous la plupart des autres langages. Recopiez par exemple le code suivant :

x=[1,2,3]

y=x y[2]=10 print(x)

L’op´erationy=xne cr´ee en fait pas une copie dexmais seulement une vue surx.

Afin de cr´eer une copie, le plus simple est d’utiliserdeepcopydu modulecopy.

7. Un nombre complexe se d´efini par un j sur sa partie imaginaire. 4+3is’´ecrira ainsi 4+3j.

1.2 Exercices

Exercices - Manipulation de tableaux

1. On consid`ere les vecteurs de R3 suivants

~u=

 1 2 3

, ~v=

−5 2 1

 et~w=

−1

−3 7

.

(a) Cr´eer des tableaux correspondants `a ces vecteurs.

page 2

(5)

Chapitre 1. TP1 - Introduction

(b) Calculer~u+~v,~u+3~v−5w,~ 15~w.

(c) En utilisant les commandes appropri´ees, calculer k~uk2, k~vk1, k~wk et le cosinus de l’angle form´e par les vecteurs~uet~v.

2. On consid`ere les matrices suivantes : A=

2 3 6 5

et B=

2 3 4 7 6 5 2 8 7

.

(a) Cr´eer des tableaux correspondants `a Aet B.

(b) En utilisant les commandes appropri´ees, calculer leurs d´eterminants, in- verses et valeurs propres et vecteurs propres associ´e.

3. Pour n ∈ N, n ≥ 2 , cr´eer le tableau correspondant `a la matrice tridiagonale d’ordre n d´efinie par

An=

2 −1

−1 2 −1 . .. ... ...

−1 2 −1

−1 2

 .

Exercices - Ecriture de fonctions

1. ´Ecrire une fonction nomm´ee polaire, prenant comme arguments d’entr´ee les coordon´ees cart´esiennes (x,y)d’un point deR2 et renvoyant en sortie les coor- donn´ees polaires(r,θ)de ce point1.

2. Ecrire une fonction nomm´ee profil qui associe `a toute matrice A `a m lignes et n colonnes son profil, c’est-`a-dire la suite d’entiers {φ(i)}i=1,...,m avec φune application de {1, . . . ,m} dansNtelle que

φ(i) =

(inf

j∈ {1, . . . ,n} |aij 6=0 si la i`eme ligne de Aest non nulle,

n+i sinon.

3. Suite de Fibonacci

(a) ´Ecrire une boucle calculant les valeurs des vingt premiers termes de la suite de Fibonacci d´efinie par

u(0)=0, u(1)=1 etu(k+2) =u(k+1)+u(k), ∀k ∈N, et conservant ces valeurs dans un vecteur.

1. On rappelle que, en vertu du th´eor`eme de Pythagore, on ar=px2+y2et que, pour obtenir l’angleθ dans l’intervalle[0, 2π[, on utilise les formules suivantes :

θ=

arctan yx

six>0ety0, arctan yx

+2π six>0ety<0, arctan yx

+π six<0,

π

2 six=0ety>0,

3π

2 six=0ety<0.

(6)

1.2. Exercices

(b) ´Ecrire une boucle calculant les termes successifs de la suite de Fibonacci dont la valeur est inf´erieure ou ´egale `a 50000 et afficher le dernier de ces termes.

(c) ´Ecrire enfin une fonction fibonacci(n) calculant de mani`ere it´erative le ni`eme terme de la suite de Fibonacci, sans toutefois conserver les valeurs de tous les termes de la suite.

4. Suites adajacentes

On d´efinit deux suites (u(k))kN et(v(k))kN par u(0)=1, v(0)=2, u(k+1) = u

(k)+v(k)

2 , v(k+1) =pu(k+1)v(k), ∀n∈N.

On admet que ces suites sont adjacentes, de limite

√ 27 π .

(a) ´Ecrire un programme lisant2 un entier n et affichant l’approximation du nombre π obtenue `a partir de la valeur dev(n).

(b) ´Ecrire un programme lisant un r´eel ε strictement positif et affichant l’ap- proximation du nombre π obtenue `a partir de la valeur de v(n), premier terme de la suite (v(k))kN `a satisfaire la condition

u(n)−v(n) u(n)+v(n)

ε,

avec ε un r´eel strictement positif fix´e

5. Calcul d’une valeur approch´ee deπ par la m´ethode de Monte-Carlo3 Pour obtenir une valeur approch´ee du nombre π par la m´ethode de Monte- Carlo, on tire au hasard4, dans un carr´e de cˆot´e de longueur ´egale `a 2, des points de coordonn´ees (x,y)et l’on v´erifie s’ils appartiennent ou non au disque de rayon 1 et de centre le centre du carr´e. Ces points pouvant ˆetre tir´es avec la mˆeme probabilit´e dans l’ensemble du carr´e, le rapport entre le nombre de points tir´es dans le disque et le nombre de points tir´es au total tend, lorsque le nombre de tirages tend vers l’infini, vers le rapport des surfaces du cercle et du carr´e, soit π4, en vertu de la loi des grands nombres.

Au moyen de la commanderandom.uniform, ´ecrire une fonction prenant comme argument le nombre de tirages `a r´ealiser et renvoyant la valeur approch´ee de π obtenue par la m´ethode de Monte-Carlo d´ecrite ci-dessus (on peut ´egalement se restreindre au quart de carr´e contenu dans l’orthant positif deR2 et utiliser random.random).

6. Programmation r´ecursive

2. Utiliser par exemple la fonctioninputpour demander `a l’utilisateur de fournir une r´eponse.

3. On appelle m´ethode de Monte-Carlo toute m´ethode visant `a calculer une approximation nu- erique par utilisation d’un proc´ed´e al´eatoire. Le nom de ce type de m´ethode, qui fait allusion aux jeux de hasard pratiqu´es dans le c´el`ebre casino d’un des quartiers de la cit´e- ´Etat de la principaut´e de Monaco, a ´et´e invent´e en 1947 par Nicholas Metropolis et publi´e pour la premi`ere fois en 1949 dans un article co-´ecrit avec Stanislas Ulam.

4. C’est-`a-dire selon une loi de probabilit´e uniforme.

page 4

(7)

Chapitre 1. TP1 - Introduction

En informatique, une fonction dite r´ecursive lorsqu’elle s’appelle elle-mˆeme. En pratique, une telle fonction aura toujours au moins une instruction condition- nelle, afin que, dans certains cas au moins, il n’y ait pas d’appel r´ecursif (sans quoi la fonction s’appellerait ind´efiniment jusqu’`a la saturation de la pile, pro- voquant une interruption du programme). Le concept de fonction r´ecursive est g´en´eralement oppos´e `a celui de fonction it´erative, qui s’ex´ecute sans s’invoquer ou s’appeler explicitement.

Bien que cette forme de programmation aboutisse `a des programmes concis et proches des formulations math´ematiques qui en sont `a l’origine, il peut parfois ˆ

etre mal indiqu´e ou mˆeme catastrophique d’employer la r´ecursivit´e (toute fonc- tion r´ecursive pouvant ˆetre remplac´ee par une fonction it´erative), comme on le v´erifiera `a la troisi`eme question du pr´esent exercice.

(a) ´Ecrire une fonction r´ecursive rfactorielle(n)calculant n!.

(b) ´Ecrire, en utilisant la fonction%donnant le reste de la division euclidienne de deux entiers, une fonction r´ecursivePGCD(a,b)renvoyant le plus grand commun diviseur5des entiers naturelsaetbcalcul´e par l’algorithme d’Eu- clide6.

(c) ´Ecrire une fonction r´ecursive rfibonacci(n) calculant le ni`eme terme de la suite de Fibonacci et comparer son temps d’ex´ecution avec celui de la fonction fibonacci(n)de l’exercice3.

Exercices - Repr´esentations graphiques

Les fonctions de base permettant des repr´esentations graphiques sont disponibles dans le module matplotlib.pyplot.

1. Tracer une repr´esentation graphique de la fonction f(x) = exp(−x)sin(4x)

´

echantillonn´ee sur 101 valeurs ´equidistantes sur l’intervalle [0, 2π].

2. Tracer sur une mˆeme figure une repr´esentation graphique des fonctions x 7→

x2 et x 7→ x2sin(x)exp(−x) sur l’intervalle [−1, 1], en utilisant des couleurs diff´erentes pour chacune d’entre elles.

5. C’est-`a-dire le plus grand entier naturel qui divise simultan´ement ces deux entiers.

6. Cet algorithme est bas´e sur la propri´et´e suivante :on suppose que abet on note rle reste de la division euclidienne deaparb; alors le pgcd deaetbest le pgcd debetr. En pratique, il suffit donc de faire des divisions euclidiennes successives jusqu’`a trouver un reste nul. Le dernier reste non nul est le PGCD.

(8)
(9)

Travaux dirig´ es 2

TP2 - Alg`ebre lin´eaire

Pour r´ealiser ce TP, les modules suivants sont conseill´e :numpypour la manipula- tion desarrays,timepour la mesure des temps de calcul etcopysi vous avez besoin d’utiliser copy.deepcopy.

Exercice 2.1((proc´ed´e d’orthonormalisation de Gram–Schmidt)). On rappelle que, par- tant d’une famille B = {x1, . . . ,xm} de vecteurs lin´eairement ind´ependants de Rn, avec m et n des entiers tels que 2 ≤ m ≤ n, le proc´ed´e d’orthonormalisation de Gram–Schmidt permet de construire une famille B0 = {q1, . . . ,qm} de vecteurs or- thonormaux donn´es par

q1 = x1 kx1k, qk = qek

kqekk, avec qek = xk

k1 i

=1

(xk,qi)qi, k=2, . . . ,m.

Le pseudo-code pour cet algorithme peut ˆetre ´ecrit sous la forme : Gram-Schmidt

for k=1 tom do s =0

for i=1to k−1 do s=s+< xk,qi > qi s =xk−s

if ksk 6=0 then qk =s/ksk else

qk =0

1. ´Ecrire une fonction nomm´eegramschmidt, prenant comme param`etre d’entr´ee une matrice ayant pour colonnes lesmvecteurs de la familleBet retournant en sortie une matrice ayant pour colonnes les mvecteurs de la famille B0, obtenue en appliquant `a B le proc´ed´e d’orthonormalisation de Gram–Schmidt.

2. On poseε=108. Tester la fonction gramschmidt avec la famille

B =





 1 ε 0 0

 ,

 1 0 ε 0

 ,

 1 0 0 ε





 ,

puis v´erifier si les vecteurs obtenus sont bien orthogonaux deux `a deux. Que constate-t-on ?

(10)

3. Pour pallier les d´efauts d’orthogonalit´e des vecteurs de la famille B0 obser- v´es (qui sont dˆus aux erreurs d’arrondi en arithm´etique `a virgule flottante), il faut utiliser une version plus stable de la m´ethode, appel´ee proc´ed´e de Gram–

Schmidt modifi´e. On proc`ede alors de la mani`ere suivante. A la premi`ere ´etape, on calcule

q1= x1 kx1k,

et on remplace chaque xi par xi−(q1,xi)q1 pour i>1. Ensuite, une fois qu’on a calcul´e lesk−1vecteurs q1, . . .qk1, on poseqk = kxk

xkk et on remplace chaque xi par xi−(qk,xi)qk pour touti> k.

Impl´ementer, en modifiant la fonction d´ej`a existante, cette variante pour obtenir une nouvelle fonction qu’on nommera modgramschmidt. Effectuer alors l’ortho- normalisation de la famille B donn´ee dans la question pr´ec´edente. Qu’observe- t-on ?

Exercice 2.2 ((R´esolution de syst`emes lin´eaires carr´es)). Dans cet exercice, on consid`ere le syst`eme lin´eaire Ax=b, o`u A∈ Mn(R) matrice inversible, etb∈Rn.

1. Formules de Cramer On rappelle que si A est une matrice inversible de colonnes ai, la solution du syst`eme lin´eaire Ax=b est donn´ee par

xi = det(a1, . . . ,ai1,b,ai+1, . . . ,an)

det(A) .

(a) ´Ecrire une fonction recursive_det(A), qui prend en entr´ee une matrice carr´ee et renvoie son d´eterminant calcul´e de fa¸con r´ecursive.

Comparer `a la vitesse d’ex´ecution de la fonctionnumpy.linalg.det() de numpy. Pour cela, utiliser time.time()avant et apr`es l’ex´ecution dont on souhaite mesurer la dur´ee.

(b) ´Ecrire une fonction cramer(A,b), qui r´esout le syst`eme Ax=b par la m´e- thode de Cramer. Cette solution est-elle efficace ?

2. D´ecomposition LU

(a) Impl´ementer la d´ecomposition LU de A en utilisant l’algorithme ci- dessous. Pour la fonction LU_decomposition(A), utiliser les op´erations par blocs de matrices afin de diminuer le nombre de boucles `a une.

Note : on suppose que la matrice Ane contient pas de z´eros sur la diago- nale !

Factorisation LU : U=On, L= In

for i=1 ton do for j=i+1 ton do

lji= aji/aii for j=ito n do

uij =aij

for j=i+1 ton do

page 8

(11)

Chapitre 2. TP2 - Alg`ebre lin´eaire

for k =i+1to ndo ajk =ajk−lji·uik Fin

(b) ´Ecrire, en utilisant la fonction LU_decomposition(A), une fonction [d]=LU_det(A) qui calcule le d´eterminant.

(c) Comparer exp´erimentalement la rapidit´e des fonctionsrecursive_det(), numpy.linalg.det() etLU_det().

(d) ´Ecrire, en utilisant la d´ecomposition LU, une fonctionLU_linsolve(A,b), qui r´esout le syst`eme Ax = b `a l’aide de la r´esolution de deux syst`emes triangulaires.

Remarque : Comme dans le cas du d´eterminant,numpypropose la fonc- tion numpy.solve qui permet de r´esoudre les syst`emes lin´eaires.

(12)
(13)

Travaux dirig´ es 3

TP3 - R´esolution d’´equations non-lin´eaires

Dans ce TP, on souhaite utiliser sur des exemples diff´erentes m´ethodes d’approxi- mation d’un z´ero d’une fonction. Il est `a noter que Python dispose de la fonction scipy.optimize.fsolve pour cela mais le but du TP est d’explorer les m´ethodes sous-jacentes sans utiliser cette fonction.

Exercice 3.1 (m´ethodes de dichotomie et de Newton–Raphson, d’apr`es A. Quarteroni).

1. On consid`ere tout d’abord la fonction g(x) = x

2 −sin(x) + π 6 −

√3

2 sur l’intervalle

π2,π

, en observant qu’elle y poss`ede deux z´eros.

a. D´efinir la fonctiongdans Python. Tracer son graphe sur

π2,π .

Expliquer pourquoi la m´ethode de dichotomie ne peut ˆetre utilis´ee que pour approcher l’un des deux z´eros de g, que l’on noteraξ dans la suite.

b. Ecrire une fonction dichotomie(f,a,b,tolerance,nmax) impl´ementant la m´ethode de dichotomie pour l’approximation d’un z´ero d’une fonction f don- n´ee, compris dans un intervalle [a,b] tel que f(a)f(b)<0. Les autres para- m`etres d’entr´eetoletnmax de la fonctiondichotomiesont respectivement la tol´erance pour le crit`ere d’arrˆet de la m´ethode et le nombre maximum d’it´erations `a effectuer.

La sortie devra comprendre

— zero, l’approximation du z´ero obtenu ;

— iterations, le nombre d’it´erations n´ecessaire au calcul de cette approxi- mation ;

— res, la valeur de la fonction f en ce point ;

— inc, un vecteur contenant la suite des valeurs absolues des diff´erences entre deux approximations successives (dite suite des incr´ements). Si on note x(k) l’approximation du z´ero `a la kieme it´eration de la dichotomie, inc(k)doit donc contenir la valeur de l’incr´ement|x(k)−x(k1)|.

c. Utiliser la fonction dichotomie sur la fonction g de la question a) pour calculer une approximation de ξ avec une tol´erance ´egale `a 1010 pour le crit`ere d’arrˆet `a partir du choix d’un intervalle [a,b] convenable.

(14)

d. A quel vitesse les incr´ements tendent-ils vers 0? S’en convaincre en tra¸cant leur ´evolution dans une ´echelle semi-logarithmique `a l’aide de la commande plt.gca().set_yscale('log')

plac´ee avant la d´efinition du plot.

2. On souhaite maintenant utiliser la m´ethode de Newton pour approcher les z´eros d’une fonction f. On rappelle qu’on part d’un point x0 dans l’ensemble de d´efinition de la fonction et qu’on construit la suite :

xk+1 =xkf(xk)

f0(xk). (3.1)

Le point xk+1 est en fait l’intersection de la droite y = f(xk) +f0(xk)(x−xk) avec l’axe des abcisses. Pour appliquer la m´ethode de Newton `a une fonction f donn´ee, il faudra non seulement d´efinir f (comme on l’a fait pour g dans la question a.), mais ´egalement la fonctiond f qui correspond `a la d´eriv´ee de f. a. Ecrire une fonction newton(f,df,x0,tolerance,nmax) qui impl´emente la

m´ethode de Newton–Raphson pour l’approximation d’un z´ero d’une fonction d´erivable f donn´ee. Les param`etres d’entr´eedf,x0, tolerance etnmax re- pr´esentent respectivement le nom de la fonction correspondant `a la fonction f0, l’initialisation de la m´ethode, la tol´erance pour le crit`ere d’arrˆet de la m´ethode et le nombre maximum d’it´erations `a effectuer.

En sortie, les param`etres sont identiques `a ceux de la fonctiondichotomie.

b. Calculer la d´eriv´eeg0 de la fonction gd´efinie en a., et d´efinir une fonctiondg qui correspond `a cette d´eriv´ee. Calculer des approximations des deux z´eros ξ et ζ de la fonction g avec la m´ethode de Newton–Raphson, en prenant une tol´erance ´egale `a 1010 pour le crit`ere d’arrˆet et comme initialisation le point π pour ξ et −π2 pour ζ. Comparer les nombres d’it´erations effec- tu´ees pour obtenir une approximation de chacun des z´eros. Pourquoi sont-ils tr`es diff´erents ? Comparer ´egalement les graphes des suites des incr´ements obtenus.

c. On cherche `a r´eduire le nombre d’it´erations n´ecessaires `a l’obtention d’une approximation du z´ero n´egatif ζ de la fonction g. La m´ethode de Newton–

Raphson modifi´ee, bas´ee sur la modification suivante de la relation de r´ecur- rence de la m´ethode de Newton–Raphson

x(k+1) =x(k)−2 f(x(k)) f0(x(k)),

a une convergence quadratique si f0(ζ) = 0. Impl´ementer cette m´ethode dans une fonction modnewton. Appliquer cette m´ethode sur la fonction g et observer combien d’it´erations sont n´ecessaires pour qu’elle fournisse une approximation de ζ avec une tol´erance ´egale `a1010 pour le crit`ere d’arrˆet.

3. On consid`ere `a pr´esent la fonction g(x) = x+e20x2 cos(x), dont on veut approcher les z´eros par la m´ethode de Newton–Raphson.

(a) D´efinir une premi`ere fonction pour g, puis une seconde pour sa d´eriv´eeg0. page 12

(15)

Chapitre 3. TP3 - R´esolution d’´equations non-lin´eaires

(b) Utiliser la fonction newton pour essayer d’approcher un z´ero de gen pre- nant x(0) = 0 pour initialisation et une tol´erance ´egale `a 1010 pour le crit`ere d’arrˆet.

(c) Tracer le graphe de g sur l’intervalle [−1, 1] et tenter de donner une ex- plication qualitative du fait la m´ethode de Newton–Raphson ne converge pas avec l’initialisation pr´ec´edente.

(d) Appliquer la m´ethode de dichotomie `a la fonction gsur l’intervalle [−1, 1] pour la recherche d’un z´ero deg.

4. Renommer et modifier la fonction dichotomiepour obtenir, sur le mˆeme mo- d`ele, une fonction regulafalsi impl´ementant la m´ethode de la fausse posi- tion1. De la mˆeme mani`ere, ´ecrire une fonction qui impl´emente la m´ethode de la s´ecante2 `a partir de la fonctionnewton.

Exercice 3.2 (calcul de√

2). Dans cet exercice, on cherche `a calculer une approxima- tion de √

2 de diverses fa¸cons.

1. On peut tout d’abord obtenir une valeur approch´ee de√

2en cherchant la racine positive du polynˆome f(x) = x2−2. Pour cela, appliquer successivement `a f les m´ethodes de dichotomie, de la fausse position, de Newton–Raphson et de la s´ecante sur l’intervalle [1, 2]et d´eterminer celles qui convergent.

2. On peut ´egalement se servir de m´ethodes de point fixe, d´efinies `a partir des applications suivantes

g1(x) =2+x−x2, g2(x) = 2

x et g3(x) = x+2 x+1, consid´er´ees sur l’intervalle [1, 2].

(a) Parmi les trois fonctions ci-dessus, lesquelles conduisent `a une m´ethode de point fixe convergente ?

(b) V´erifier ces affirmations en calculant les 20 premiers termes des suites d´efinies par les relations de r´ecurrence

x(0)= 3

2, x(k+1) =gi(x(k)), k∈N, i∈ {1, 2, 3}. ,

Exercice 3.3 ((bassins de convergence de la m´ethode de Newton–Raphson)). On s’in- t´eresse `a la recherche des solutions complexes de l’´equation z3 = 1 par la m´ethode de Newton–Raphson. On consid`ere pour cela la fonction d’une variable complexe

f(z) =z3−1, qui s’annule en chaque point z du plan complexe tel quez3=1.

1. On rappelle que, pour cette m´ethode, l’approximation du z´ero `a l’it´erationk x(k) est donn´ee par l’abscisse de l’intersection de la droite passant par les points(a(k),f(a(k)))et(b(k),f(b(k)))avec l’axe des abscisses, c’est-`a-dire

x(k)=a(k) a

(k)b(k)

f(a(k))f(b(k))f(a(k)).

2. On rappelle que la m´ethode de la s´ecante peut ˆetre obtenue `a partir de la m´ethode de Newton–

Raphson en rempla¸cant la quantit´e f0 x(k)

apparaissant dans la relation de r´ecurrence par le quotient f(x(k))f(x(k−1))

x(k)−x(k)−1 . L’initialisation de cette m´ethode n´ecessite donc deux points distincts,x(−1)

etx(0), si possible proches du z´ero recherch´e.

(16)

1. D´efinir deux fonctions fetdf renvoyant respectivement les valeurs de f et de f0 en un point quelconque deC.

2. Pour tout entier n ≥ 2, on d´efinit une grille de pas h = 3n couvrant le carr´e [−1.5, 1.5]×[−1.5i, 1.5i]. ´Ecrire un programme r´esolvant, pour une valeur don- n´ee de n, l’´equation f(z) =0 avec une tol´erance ´egale `a 104 par la m´ethode de Newton–Raphson3 initialis´ee successivement en chaque point de la grille zij = −1, 5(1+i) + (i+ji)h, 0 ≤ i,j ≤ n. Pour chaque couple (i,j), stocker dans le tableau `a deux dimensionsnracle num´erok(k=1,2ou3) de la racine cubique complexe de l’unit´eei2kπ3 vers laquelle la m´ethode aura converg´ee `a par- tir dezij (en posantk =4lorsque la m´ethode n’a pas converg´e apr`esnmax=100 it´erations) et dans le tableauniterle nombre d’it´erations n´ecessaires pour at- teindre la convergence (en stockant le nombre maximal d’it´erations autoris´ees nmax en l’absence de convergence).

3. Afficher une repr´esentation de chacun des tableauxnracetniterobtenus pour n=100(on pourra utiliser la fonctionimagesc).

4. Refaire des trac´es pour des pas de grille plus petits (i.e., de plus grandes valeurs de n). Que dire desfronti`eres des trois bassins de convergence de la m´ethode ?

3. On pourra pour cela utiliser la fonctionnewton´ecrite `a l’exercice3.1.

page 14

Références

Documents relatifs

[r]

[r]

La croissance du bénéfice ralentit lorsque sa dérivée devient décroissante, ce qui correspond au premier point d’inflexion de la courbe d’abscisse x 1 avec x 1

A ) La fonction f associe à un nombre donné la somme de son carré et de son double. Trouvons l'expression algébrique correspondant à la

A ) La fonction f associe à un nombre donné la somme de son carré et de son double. Trouvons l'expression algébrique correspondant à la

(a) Au moyen de la commande rand, qui g´ en` ere une suite de nombres r´ eels jouant le rˆ ole d’une r´ ealisation d’une suite de variables al´ eatoires conti- nues, ind´

[r]

[r]