SAlut à tus
J'aimerais savoir comment peut on calculer la racine carée d'un nombre au niveau de l'algo. Quel est la méthode utilisé qui n'est peut être pas universel dans tous les langages ??
Merci
SAlut à tus
J'aimerais savoir comment peut on calculer la racine carée d'un nombre au niveau de l'algo. Quel est la méthode utilisé qui n'est peut être pas universel dans tous les langages ??
Merci
La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.
Méthode de Newton (Google est ton ami).
Voila une formule :
voila un exemple : racine cubique de 216 ( = 6 )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 a = nombre dont il faut trouver la racine e = exposant (ça ne marche donc pas que pour les racines carrees) x(0) est non nul x(n+1) = [ x(n) ^ e ( e - 1 ) + a ] / [ ex(n) ^ ( e - 1 ) ] x(infini) ^ e = a
x(0) = 1
x(1) = (1³*(3-1)+216)/(3*1²) = 72.66
x(2) = (72³*(3-1)+216)/(3*72²) = 49.35
x(3) = (49³*(3-1)+216)/(3*49²) = 32.92
...
x(8 et +) = 6 !
tu n'as qu'à faire une boucle qui fait ça une centaine de fois (ou plus pour plus de precisions)
Ma lib graphique, en C uniquement pour DJGPP :
http://www.ifrance.com/gorgonzola2/files/ggl_v1.zip
docu : http://www.ifrance.com/gorgonzola2/files/ggl_docu.html
C'est une très belle formule, gorgonzola!
Il manque cepandant une petite hypothèse, me semble-t-il : x(0) dot être positif (j'ai fait le test dans excel avec e=2 et a=16, on trouve -4)
Je suis content de connaitre la méthode de Newton, maintenant
Je dormirai moins con ce soir
Je vous rappèlle à tout hasard la formule de base des puissances :
a ^ b = exp (b x ln a)
Dans le cas d'une racine carrée, b vaut évidemment 1/2 .....
A+
Méthode de Newton : l'algorithme expliqué
http://www.haypocalc.com/grandnbr/newton.php
Pour le calcul d'une racine carré avec la méthode de Newton, on peut aussi utiliser la fonction :
f(x) = 1/x^2 -a
Car f(x) = 0 <=> a=1/x^2 <=> x=1/Racine(a)
Donc Racine(a) = x*a
Ce qui donne la suite : x_(n+1) = x_n/2 *(3 -a*x_n^2)
---
La division est une opération très coûteuse en temps de calcul, alors on se limite! On division par deux, c'est vraiment facile à programmer!
---
Le choix de x_(0) est très important! Il doit être le plus proche possible du résultat x_(n) pour n qui tend vers l'infini, dans notre cas : 1/Racine(a).
Il faut approcher très grossièrement x_(0) et/ou réduire a à une intervalle. On peut utiliser la propriété :
Racine(x*10^(2n+1)) = 10^n*Racine(x)*Racine(10)
Avec un x compris dans l'intervalle [0;1]. Si le calcul de (2n+1) (ou 2n) est trop complexe, on avec le nombre 2 :
Racine(x*2^(2n+1)) = 2^n*Racine(x)*Racine(2)
@+ Haypo
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager