CoCalc Shared FilesSemaine 2 - Methode de Newton / newton-polynomes-original.htmlOpen in CoCalc with one click!
Author: Georédy
Views : 48
Description: Jupyter html version of Semaine 2 - Methode de Newton/newton-polynomes-original.ipynb
newton-polynomes-original

Comprendre la méthode de Newton sur l'exemple des polynômes.

Le but de ce bloc-notes est de comprendre la méthode de Newton-Raphson d'abord telle qu'elle a été expliquée par Newton, puis avec les notations de Raphson, mais toujours sur l'exemple des polynômes.

La méthode de Newton-Raphson est une méthode pour approcher les racines d'une fonctions dérivables - c'est à dire les arguments sur lesquels la fonction s'annule. Vous en saurez plus très vite.

Crédits: Ce bloc-notes s'inspire de l'article «La méthode de Newton et son histoire» d'André Bonnet, paru dans un bulletin de l'APMEP et disponible en libre téléchargement ici :
http://www.apmep.fr/IMG/pdf/APMEP_article_BV_7_C_A.pdf
Cependant les seuls extraits de texte recopiés tels quel depuis cet article, sont ceux des textes historiques. (Il n'est pas clair par quelle licence de droit d'auteur est régi cet article.)

1. La méthode telle qu'elle est décrite par Newton

Dans les deux paragraphes suivants, vous avez des extraits du texte de Newton (en anglais) où ce qu'on appelle aujourd'hui la méthode de Newton apparaît pour la première fois. Ce texte a été publié après sa mort par Colson sous le titre "The method of fluxions and infinite series". Vous pouvez le télécharger ici :
http://www.e-rara.ch/zut/doi/10.3931/e-rara-10833
Ce même texte traduit en français par Buffon est lisible ici:
http://gallica.bnf.fr/ark:/12148/bpt6k62411f.r=La%20m%C3%A9thode%20des%20fluxions%20et%20des%20suites%20infinies?rk=21459;2

«§20. Let this equation y³−2y−5=0 be proposed to be resolved, and let 2 be a number (any how found) which differs from the true Root less than by a tenth part of itself. Then I make 2+p=y, and substitute 2+p for the given Equation, by which is produced a new Equation p³+6p²+10p−1=0, whose Root is to be sought for, that it maybe added to the Quote. Thus rejecting p³+6p² because of its smallness, the remaining Equation 10p−1=0, or p = 0.1 will approach very near to the truth. Therefore I write this in the Quote and suppose 0,1+q=p, and substitute this fictious value of P as before, which produces q³+6,3q²+11,23q+0,061=0. And since 11,23q+0,061=0 is near the truth, or q = −0.054 nearly, (that is dividing 0,061 by 11,23, till so many Figures arise as there are places between the first figures of this, and of the principal Quote exclusively, as there are two places between 2 and 0,005) I write −0,0054 in the lower part of the quote, as being negative; and supposing −0,0054+r=q, I substitute this as before. And thus I continue the Operation as far as I please, in the manner of the following diagram:
┌────────────────┬─────────────────────────────┐ │y³−2y−5=0 │+2,10000000 │ │ │−0,00544852 │ │ │─────────── │ │ │+2,09455148, &c=y │ ├────────────────┼─────────────────────────────┤ │2+p=y. +y³│+ 8 + 12p + 6p² + p³ │ │ −2y │− 4 −2p │ │ −5 │− 5 │ ├────────────────┼─────────────────────────────┤ │ The sum │− 1 + 10p + 6p² + p³ │ ├────────────────┼─────────────────────────────┤ │0,1+q=p. +p³│+ 0,001 + 0,03q + 0,3q² + q³│ │ +6p²│+ 0,06 + 1,2 q + 6 q² │ │ +10p │+ 1 + 10 q │ │ −1 │− 1 │ ├────────────────┼─────────────────────────────┤ │ The sum │+ 0,061 + 11,23q + 6,3q² + q³│ ├────────────────┼─────────────────────────────┤ │−0,0054+r=q. +q³│[…] │ │ +6,3 q²│[…] │ │ +11,23 q │[…] │ │ +0,061 │[…] │ ├────────────────┼─────────────────────────────┤ │ The sum │0,0005416+11,162r […] │ ├────────────────┼─────────────────────────────┤ │−0,00004852+s=r.│[…] │ └────────────────┴─────────────────────────────┘
»

«§21. But the Work may be much abbreviated towards the end by this Method, especially in Equations of many Dimensions. Having first determined how far you intend to extract the Root, count so many places after the first Figure of the Coefficient of the last Term but one, of the Equations that result on the right side of the Diagram, as there remain places to be filled up in the Quote, and reject the Decimals that follow. But in the last Term the Decimals may be neglected, after so many more places as are the decimal places that are filled up in the Quote. And in the antepenultimate Term reject all that are after fo many fewer places. And so on, by proceeding Arithmetically, according to that Interval of places: Or, which is the same thing, you may cut off every where so many Figures as in the penultimate Term, so that their lowest places may be in Arithmetical Progression, according to the Series of the Terms, or are to be supposed to be supplied with Cyphers, when it happens otherwise. Thus in the present Example, if I desired to continue the Quote no farther than to the eighth place of Decimals, when I substituted 0,0054+r for q, where four decimal places are compleated in the Quote, and as many remain to be compleated, I might have omitted the Figures in the five inferior places, which therefore I have marked or cancelled by little Lines drawn through them ; and indeed I might also have omitted the first Term r³, although its Coefficient be 0,99999. Those Figures therefore being expunged, for the following Operation there arises the Sum 0,0005416+11,162r, which by Division, continued as far as the Term prescribed, gives 0,00004852 for r, which compleats the Quote to the Period required. Then subtracting the negative part of the Quote from the affirmative part, there arises 2,09455148 for the Root of the propofed Equation. »

Vous allez maintenant refaire l'exemple de Newton.

Déclarations et affectations

Commencons par déclarer les objets utiles.

Nous allons chercher une racine approchée du polynôme y³−2y−5. Il nous faudra donc déclarer ce polynôme. Pour mettre en application les concepts appris cette semaine, je vais vous demander de bien préciser son Anneau de coefficients.

Pour rappel, lorsqu'on veut que x represente le polynôme x à coefficients dans l'anneau RR = RealField(), qui est une des implementations à virgule flottante du corps des nombres réels dans Sage, on écrit x = polygen(RR,'x'). (C'est à dire qu'ensuite x est vu comme un élément de l'anneau de polynômes RR[x].)

Faites en sorte que y represente le polynôme y dans dans l'anneau de polynômes QQ[y]. (QQ → corps des nombres rationnels dans sage.)

In [103]:
y = polygen(QQ,'y')

Repetez la dernière étape pour les lettres p, q, r et s. (Nous ferons des substitutions avec)

In [104]:
q = polygen(QQ,'q') 
In [105]:
p = polygen(QQ,'p') 
In [106]:
r = polygen(QQ,'r') 
In [107]:
s = polygen(QQ,'r')

Vérifiez le type de 'y'.

In [8]:
type(y)
Out[8]:
<type 'sage.rings.polynomial.polynomial_rational_flint.Polynomial_rational_flint'>
In [ ]:
 
In [13]:
P = y^3 - 2*y - 5

Vérifiez le type de P.

In [12]:
type(P)
Out[12]:
<type 'sage.rings.polynomial.polynomial_rational_flint.Polynomial_rational_flint'>

Quelques tests

Avant de continuer, nous allons faire quelques tests.

AA est l'implementation dans sage du corps des nombres R-algébriques, c'est à dire les nombres réels qui sont racine d'un polynôme à coefficients réels.
QQbar est l'implementation dans sage du corps des nombres Q-algébriques (ou tout simplement nombres algébriques), c'est à dire les nombres réels qui sont racine d'un polynôme à coefficients rationnels.

Soit S le polynôme y³−2y−5 vu comme élément de l'anneau de polynômes QQbar[y].
Soit R le polynôme y³−2y−5 vu comme élément de l'anneau de polynômes AA[y].
Calculez S et R à partir de P en utilisant la méthode change_ring.

In [14]:
S = P.change_ring(QQbar)
In [15]:
R = P.change_ring(AA)

Essayez de faire factoriser à sage les polynômes P, S et R en utilisant la méthode factor.

In [16]:
P.factor()
Out[16]:
y^3 - 2*y - 5
In [17]:
S.factor()
Out[17]:
(y - 2.094551481542327?) * (y + 1.047275740771164? - 1.135939889088929?*I) * (y + 1.047275740771164? + 1.135939889088929?*I)
In [18]:
R.factor()
Out[18]:
(y - 2.094551481542327?) * (y^2 + 2.094551481542327?*y + 2.387145908831156?)

Que remarquez-vous?

L'implémentation par "AA" donc la factorisation de R dans notre test va plus loin dans la factorisation.

Maintenant essayez de faire chercher à sage les racines de P, S et R en utilisant la méthode roots.

In [19]:
P.roots()
Out[19]:
[]
In [20]:
S.roots()
Out[20]:
[(2.094551481542327?, 1),
 (-1.047275740771164? - 1.135939889088929?*I, 1),
 (-1.047275740771164? + 1.135939889088929?*I, 1)]
In [21]:
R.roots()
Out[21]:
[(2.094551481542327?, 1)]

Que remarquez-vous?

S.roots nous donne la racine et son inverse.

Pas-à-pas de la méthode de Newton (telle qu'elle avait été décrite par Newton)

Nous allons maintenant suivre pas à pas le texte cité (paragraphes 20. et 21 du livre "The method of fluxions and infinite series")

Notre valeur initiale sera 2. Donnez lui un nom (i.e. faites une affectation). Pour bien marquer qu'il s'agit de la valeur initiale, appelez-là y0.

In [22]:
y0=2

Newton affirme que y0 (i.e. 2) n'est pas plus loin qu'un dixième d'une vraie racine réelle de P.
Evaluez le polynôme P en y0+1/10 et en y0−1/10 pour vous vous en convaincre.

In [23]:
P(y0+1/10)
Out[23]:
61/1000
In [24]:
P(y0-1/10)
Out[24]:
-1941/1000

Avez-vous obtenu des nombres de signes différents?

Oui

Si oui, vous pouvez en déduire que P possède une racine entre y0−1/10 et y0+1/10 (théorème des valeurs intermédiaires). Par conséquent y0 ne peut pas être éloigné de plus d'un dixième de cette racine.

Première itération de la méthode

La différence entre y0 et la racine cherchée n'est pas plus grande qu'un dixième. Appelons cette différence pₑ. C'est à dire que si yₑ est la racine cherchée, alors yₑ = y0 + pₑ. Calculez P(y0+p) (cela revient à substituer y dans P par y0 + p) et écrivez le résultat dans une variable nommée P1.

In [25]:
P1 = P(y0+p)

Affichez le polynôme P1.

In [26]:
P1
Out[26]:
p^3 + 6*p^2 + 10*p - 1

Vérifiez si le type de P1 est égal au type de P.

In [27]:
type(P)==type(P1)
Out[27]:
True

Calculez le degré de P1 avec la méthode degree.

In [28]:
P1.degree()
Out[28]:
3

Internement dans sage, un polynôme est gardé comme la liste de ses coefficients.
On peut donc accéder à ses coefficients comme on accède aux éléments d'une liste.
Par exemple, pour accéder au coefficient constant de P, on peut faire P[0]; pour acceder au coefficient du terme quadratique de P (i.e. le terme de degré 2), on fait P[2]. (Faites attention à la forme de la parenthèse, pour accéder aux coefficients c'est un crochet carré qu'il faut mettre.)

On peut utiliser cette syntaxe pour extraire les termes qui nous intéressent. Par exemple, le polynôme dont les termes sont les termes de degré 1 et 2 de P peut être obtenu comme P[1]*y^1+P[2]*y^2.

Définissez une fonction (dans le sens du programmeur!) qui étant donné un polynôme et un nombre d0 (dans cet ordre) renvoie un polynôme du même anneau de polynômes dont les termes sont tous les termes du polynôme d'entrée de degré ≥ d (avec les mêmes coefficients que dans le polynôme d'entrée). Nommez votre fonction termes_grand_degre. Donnez au deuxième paramètre 2 comme valeur par défaut.

In [78]:
def termes_grand_degre (polynome,d=2):
    t = polynome.parent().0  
    deg = polynome.degree()
    poly_out = 0
    for k in range(d,deg+1):
        poly_out = poly_out + polynome[k]*t^k
    return poly_out

Testez votre fonction sur P.

In [79]:
termes_grand_degre(P)
Out[79]:
y^3

Testez votre fonction sur P1 sans préciser le paramètre d. Affectez le resultat à une variable nommée P1_diff. Affichez le polynôme P1_diff.

In [70]:
P1_diff = termes_grand_degre(P1)

P1_diff
Out[70]:
6*p^2

Ici, Newton argumente que pour p petit, P1_diff(p) sera très petit.
Pour renforcer cet argument, évaluez P1_diff sur p = 0,1.
(En règle générale, la syntaxe pour évaluer des polynômes est la même que pour les fonctions.)

In [33]:
P1_diff(0.1)
Out[33]:
0.0610000000000000

Ensuite, Newton argumente que puisque P1_diff(p) est petit lorsqu'on est proche de la solution de P1(p) = 0, on peut essayer de résoudre à la place l'équation P1(p) − P1_diff(p) = 0. Affectez le polynôme P1 - P1_diff à une nouvelle variable P1_lin et affichez-là.

In [34]:
P1_lin = P1 - P1_diff
In [35]:
P1_lin
Out[35]:
10*p - 1

Calculez la racine de ce nouveau polynôme P1_lin, par exemple en utilisant la méthode roots (et anaccédant aux différentes parties du résultat de roots comme on accède aux élément d'une liste).
Gardez cette unique racine dans une variable nommée p0 et affichez-la.

In [55]:
p0 = P1_lin.roots()[0][0]
p0
Out[55]:
1/10

Deuxième itération de la méthode

On a maintenant p0 comme une approximmation de la racine de P1. La différence entre p0 et une vrai racine de P1 n'est pas plus grande qu'un centième.

Pour vous en convaincre, calculez P1(p0-1/100) et P1(p0+1/100) sont de signes opposés, ce qui permettra de conclure par le théorème des valeurs intermédiaire à l'existence d'une racine réelle entre p0−1/100 et p0+1/100

In [56]:
P1(p0-1/100)
Out[56]:
-50671/1000000
In [57]:
P1(p0+1/100)
Out[57]:
173931/1000000

Soit qₑ la différence entre la racine réelle pₑ de P1 et son approximmation p0, considérons alors pₑ = p0 + qₑ. Calculez P1(p0+q) (cela revient à substituer p dans P1 par p0 + q) et écrivez le résultat dans une variable nommée P2.

In [58]:
P2 = P1(p0+q)

Affichez le polynôme P2.

In [59]:
P2
Out[59]:
q^3 + 63/10*q^2 + 1123/100*q + 61/1000

Evaluez la fonction termes_grand_degre (que vous aviez défini toute à l'heure) avec P2 comme premier argument et sans préciser le paramètre d. Affectez le resultat à une variable nommée P2_diff. Affichez le polynôme P2_diff.

In [62]:
P2_diff = termes_grand_degre(P2)
P2_diff
Out[62]:
q^3 + 63/10*q^2

Ici, Newton argumente que pour q petit, P2_diff(q) sera très petit.
Pour renforcer cet argument, évaluez P2_diff sur q = 1/100.

In [63]:
P2_diff(1/100)
Out[63]:
631/1000000

Ensuite, Newton argumente que puisque P2_diff(q) est petit lorsqu'on est proche de la solution de P2(q) = 0, on peut essayer de résoudre à la place l'équation P2(q) − P2_diff(q) = 0. Définissez une nouvelle variable P2_lin en lui affectant P2 − P2_diff. Affichez P2_lin.

In [64]:
P2_lin = P2 - P2_diff
In [65]:
P2_lin
Out[65]:
1123/100*q + 61/1000

Calculez la racine du nouveau polynôme P2_lin, par exemple en utilisant la méthode roots (et en accédant aux différentes parties du résultat de roots comme on accède aux élément d'une liste).
Gardez cette unique racine dans une variable nommée q0 et affichez-la.

In [83]:
q0 = P2_lin.roots()[0][0]
q0
Out[83]:
-61/11230

Troisième itération de la méthode

On a maintenant q0 comme une approximmation de la racine de P2. La différence entre q0 et une vrai racine de P2 n'est pas plus grande qu'un millième.

Pour vous en convaincre, calculez P2(q0-1/10000) et P2(q0+1/10000) sont de signes opposés, ce qui permettra de conclure par le théorème des valeurs intermédiaire à l'existence d'une racine réelle qₑ entre q0−1/10000 et q0+1/10000.

In [84]:
P2(q0-1/10000)
Out[84]:
-1317646813783233867/1416247867000000000000
In [85]:
P2(q0+1/10000)
Out[85]:
1843884895441261867/1416247867000000000000

Soit rₑ la différence entre la racine réelle qₑ de P2 et son approximmation q0, autrement dit qₑ = q0 + qₑ. Calculez P2(q0+r) (cela revient à substituer q dans P2 par q0 + r) et écrivez le résultat dans une variable nommée P3.

In [86]:
P3 = P2(q0+r)

Affichez le polynôme P3.

In [87]:
P3
Out[87]:
r^3 + 35283/5615*r^2 + 351906913/31528225*r + 32878756/177030983375

Evaluez la fonction termes_grand_degre (que vous aviez défini toute à l'heure) avec P3 comme premier argument et sans préciser le paramètre d. Affectez le resultat à une variable nommée P3_diff. Affichez le polynôme P3_diff.

In [91]:
P3_diff = termes_grand_degre(P3)
P3_diff
Out[91]:
r^3 + 35283/5615*r^2

Ici, Newton argumente que pour r petit, P3_diff(r) sera très petit.
Pour renforcer cet argument, évaluez P3_diff sur r = 1/10000.

In [92]:
P3_diff(1/10000)
Out[92]:
70567123/1123000000000000

Ensuite, Newton argumente que puisque P3_diff(q) est petit lorsqu'on est proche de la solution de P3(r) = 0, on peut essayer de résoudre à la place l'équation P3(r) − P3_diff(r) = 0. Définissez un polynôme P3_lin en lui affectant P3 − P3_diff. Affichez P3_lin.

In [93]:
P3_lin = P3 - P3_diff
In [94]:
P3_lin
Out[94]:
351906913/31528225*r + 32878756/177030983375

Calculez la racine du nouveau polynôme P3_lin, par exemple en utilisant la méthode roots (et en accédant aux différentes parties du résultat de roots comme on accède aux élément d'une liste).
Gardez cette unique racine dans une variable nommée r0 et affichez-la.

In [99]:
r0 = P3_lin.roots()[0][0]
r0
Out[99]:
-32878756/1975957316495

Quatrième itération de la méthode

On a maintenant r0 comme une approximmation de la racine de P3. La différence entre r0 et une vrai racine de PP n'est pas plus grande que 1/100000000.

Pour vous en convaincre, calculez P3(r0-1/100000000) et P3(r0+1/10000) et observez qu'ils sont de signes opposés, ce qui permettra de conclure par le théorème des valeurs intermédiaire à l'existence d'une racine réelle rₑ entre r0−1/100000000 et r0+1/100000000.

In [100]:
P3(r0-1/100000000)
Out[100]:
-6781410317536312951892697005138134752911223750719899/61719537630659037720669473970719899000000000000000000000000
In [101]:
P3(r0+1/100000000)
Out[101]:
6996165200333154319824600523126839922827724190719899/61719537630659037720669473970719899000000000000000000000000

Soit sₑ la différence entre la racine réelle rₑ de P3 et son approximmation r0, autrement dit rₑ = r0 + sₑ. Calculez P3(r0+s) (cela revient à substituer r dans P3 par r0 + s) et écrivez le résultat dans une variable nommée P4.

In [109]:
P4 = P3(r0 +s)

Continuez cette itération de la même façon que les trois premières ci-dessus jusqu'à obtenir une approximmation s0 à la racine réelle sₑ

In [110]:
P4
Out[110]:
r^3 + 12416232975111/1975957316495*r^2 + 43578799130857674916984057/3904407316610121599085025*r + 13422175326999498219819346928/7714942203832379715083684246339987375
In [112]:
P4_diff = termes_grand_degre(P4)
P4_diff 
Out[112]:
r^3 + 12416232975111/1975957316495*r^2
In [114]:
P4_diff(1/10000000)
Out[114]:
24832466345413463299/395191463299000000000000000000000
In [115]:
P4_lin = P4 - P4_diff
In [116]:
P4_lin
Out[116]:
43578799130857674916984057/3904407316610121599085025*r + 13422175326999498219819346928/7714942203832379715083684246339987375
In [118]:
s0 = P4_lin.roots()[0][0]
s0
Out[118]:
-13422175326999498219819346928/86109846986684169676738889168418120215

Remarque

Regardez de nouveau le petit diagramme du texte de Newton. ┌────────────────┬─────────────────────────────────────────────────┐ │y³−2y−5=0 │+2,10000000 │ │ │−0,00544852 │ │ │─────────── │ │ │+2,09455148, &c=y │ ├────────────────┼─────────────────────────────────────────────────┤ │2+p=y. +y³│+ 8 + 12p + 6p² + p³ │ │ −2y │− 4 −2p │ │ −5 │− 5 │ ├────────────────┼─────────────────────────────────────────────────┤ │ The sum │− 1 + 10 p + 6 p² + p³ │ ├────────────────┼─────────────────────────────────────────────────┤ │0,1+q=p. +p³│+ 0,001 + 0,03 q + 0,3 q² + q³ │ │ +6p²│+ 0,06 + 1,2 q + 6 q² │ │ +10p │+ 1 + 10 q │ │ −1 │− 1 │ ├────────────────┼─────────────────────────────────────────────────┤ │ The sum │+ 0,061 + 11,23 q + 6,3 q² + q³ │ ├────────────────┼─────────────────────────────────────────────────┤ │−0,0054+r=q. +q³│− 0,0000001 ̷5̷7̷4̷6̷4̷ + 0,0000̷8̷7̷4̷8̷r − ̷0̷,̷0̷1̷6̷2̷r² + r³│ │ +6,3 q²│+ 0,0001837 ̷0̷8̷ − 0,068 ̷0̷4̷ r + ̷6̷,̷3̷ r² │ │ +11,23 q │− 0.060642 + 11,23 r │ │ +0,061 │+ 0,061 │ ├────────────────┼─────────────────────────────────────────────────┤ │ The sum │+ 0,0005416 + 11,162 r │ ├────────────────┼─────────────────────────────────────────────────┤ │−0,00004852+s=r.│ │ └────────────────┴─────────────────────────────────────────────────┘
Essayez de comprendre son rapport avec le procédé qu'on vient de suivre.
Une inexactitude s'est glissée dans cette table à la troisième itération, sauriez-vous la retrouver?

Conclusion

Rappelons nous que

  • y0 était une approximamtion rationnelle d'une racine réelle yₑ de l'équation P(y) = 0
  • p0 était une approximamtion rationnelle d'une racine réelle pₑ de l'équation P(y0 + p) = 0 (puisque P1 = P(y0+p))
  • q0 était une approximamtion rationnelle d'une racine réelle qₑ de l'équation P(y0 + p0 + q) = 0 (puisque P2 = P1(p0+q) = P(y0 + p0 + q))
  • r0 était une approximamtion rationnelle d'une racine réelle rₑ de l'équation P(y0 + p0 + q0 + r) = 0 (puisque P3 = P2(q0+r) = P1(p0+q0+r) = P(y0 + p0 + q0+r))
  • s0 était une approximamtion rationnelle d'une racine réelle rₑ de l'équation P(y0 + p0 + q0 + r0 + s) = 0 (puisque P4 = P3(r0+s) = P2(q0+r0+s) = P1(p0 + q0 + r0 + s) = P(y0 + p0 + q0+r0 + s))

Donc y0+p0+q0+r0+s0 est une approximmation d'une racine réelle de P.

Calculez cette approximmation.

In [ ]:
 

Puis affichez cette approximmation comme un nombre à virgule flottante en utilisant la fonction numerical_approx.

In [ ]:
 

Combien vaut P évalué sur cette approximmation? Utilisez l'alias n de la fonction numerical_approxpour afficher le résultat comme un nombre à virgule flottante.

In [ ]:
 

On voit donc que l'approximmation à la racine obtenue avec la méthode de Newton est assez bonne...

2. La contribution de Raphson

Dans son livre de 1690, Raphson propose des méthodes pour approcher les solutions des équations cubiques.
Ce livre, intitule "Analysis aequationum universalis", est disponible en ligne ici :
https://archive.org/details/bub_gb_4nlbAAAAQAAJ
(Le livre est en latin.)

Voici la méthode que Raphson propose pour une équation de la forme x³ − bx = c (l'inconnue étant a):

  • prendre une approximmation initiale g de la solution,
  • tant qu'on n'est pas satisfait
    calculer une meilleure approximation en calculant le complément Δx à rajouter à g avec la formule Δx = (c+bg−g³)/(3g²−b)
    remplacer g par g + Δx

Écrivez une fonction qui a partir d'une valeur initiale g et des valeurs des coefficients b et c calcule avec cette méthode la première valeurs g telle que |g³ − bg − c| < 1/10^15

In [ ]:
 

Testez maintenant la fonction que vous venez d'écrire sur l'exemple que vous avez travaille dans la section précedente (équation x³ − 2x = 5). Obtenez-vous la même approximmation à la solution?

In [ ]:
 

<font color = "green"> Tapez votre réponse ici.
Si le bord gauche de cette cellule s'affiche en bleu, la cellule est en mode "commande". Appuyez sur la touche Entrée pour passer en mode "édition".</font>

Rappelons que P = y³ − 2y - 5 a été defini dans la section précedente comme un polynôme à coefficients rationnels.
Calculez la dérivée de P avec la méthode derivative. Comparez avec la formule ci-dessus pour Δx. Qu'est-ce que vous remarquez?

In [ ]:
 

<font color = "green"> Tapez votre réponse ici.
Si le bord gauche de cette cellule s'affiche en bleu, la cellule est en mode "commande". Appuyez sur la touche Entrée pour passer en mode "édition".</font>

3. Le rapport entre la méthode de Newton et la contribution de Raphson

Quel est le rapport entre la méthode telle qu'elle est décrite par Newton et la contribution de Raphson? Pendant longtemps on a regardé ces méthodes comme différentes et c'est Lagrange qui s'est rendu compte que "ces deux méthodes ne sont au fond que les mêmes présentées différemment".

Explique pourquoi les deux méthodes sont au fond la même méthode.
Tu peux citer des ressources en ligne ou des livres, mais je ne veux pas du copier-coller, je veux que chaque étudiant explique la situation avec ses propres mots.
Tu peux demander de l'aide à tes camarades, et je t'y encourage fortement, mais je ne veux pas retrouver le même texte dans plusieurs devoirs différents, utilisez chacun vos propres mots.

<font color = "green"> Tapez votre réponse ici.
Si le bord gauche de cette cellule s'affiche en bleu, la cellule est en mode "commande". Appuyez sur la touche Entrée pour passer en mode "édition".</font>

Pour aller plus loin

Pour faire des dessins des itérations de l'algorithme de Newton-Raphson, vous pouvez faire comme suit:

In [ ]:
from sage.geometry.newton_polygon import NewtonPolygon
NP = NewtonPolygon([ (0,0), (1,1), (2,6) ])
polygon = NP.plot()
polygon.show()
In [ ]: