cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 21 déc. 2004 à 16:46
En fait, c'est la méthode de Newton.
Pour résoudre approximativement une équation du type f(x)=0, on pose une suite récurrente u(n+1) = g(u(n)). Pour cela, on pose g(x)=x-f(x)/f'(x), où f' est la dérivée de f. Les tangentes font converger la suite qui tend rapidement vers la limite.
Dans notre cas, on veut sqrt(a). On pose donc: f(x)=x²-a et donc g(x)=(x+a/x)/2 après calcul.
Avec les convergences quadratique, on a en fait une précision de la suite u(n) qui vaut presque 3*n décimales vraies, où n est bien sûr l'indice de la suite.
C'est en ça que réside la rapidité de convergente. Mais il parait de plus que les fractions continues sont encore plus rapides, et ce serait bien meilleur car on peut gérer numérateur et dénominateur en valeurs entières.
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 15 déc. 2004 à 18:03
Mais quand tu apprendras que 1 n'est pas un nombre premier ...
Mais sinon , brave je'en avais justement besoin.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 10 déc. 2004 à 18:22
J'oubliais, renommes donc ton code en "Super calculateur à haute précision", enfin... un truc plus attrayant qu'actuellement.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 10 déc. 2004 à 18:21
J'ai une technique de ouf pour approximer une racine carrée très très rapidement à l'aide de fractions. Ce sont des suites:
u0=QQCH
u(n+1)=(u(n)+a/u(n))/2
u0 doit être initialisée à un nombre entier immédiatement supérieur à la racine carrée de a, où a est le nombre dont tu veux trouver la racine.
La suite u(n) converge vers sqrt(a) en moins d'une dizaine de termes avec une précision infinitésimale, tellement infinitésimale que tu n'en reviendras pas. A toi donc de dresser l'algo. Tu gères numérateur et dénominateur séparément et puis tu divises à la fin. D'où l'utilité des maths et du calcul formel.
Ton interface actuellement est un peu compliquée.
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 10 déc. 2004 à 08:43
Alors a bientôt
Salutations
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 9 déc. 2004 à 20:30
Il manquait donc bien des fichiers. Sauf que maintenant les exceptions liées aux conversions des nombres décimaux devient lassante. "Ne peut pas convertir 9.3". Ok, il faut paramétrer Windows, et je n'ai pas que ça à faire. Gère plutôt des events OnKeyPress du style «if key='.' then key:=','».
Je patiente...
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 7 déc. 2004 à 09:20
Avec DELPHI TOUT est possible.
la somme des n nombre premier est égale à un arré
1+3+5 9 3^2 ;1+3+5+7 = 16 = 4^2
Mais cette méthode antique est lante mais efficace
Salutations
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 4 déc. 2004 à 14:32
Le titre est a priori de l'arnaque: une racine carré avec 300 décimales... SQRT est irrationnelle. Elle ne peut être approchée que par des suites convergentes. Le prog serait donc à priori capable de faire des trucs pareils ? Si oui, c'est très bien.
yvessimon
Messages postés637Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 9 janvier 2017 29 nov. 2004 à 08:46
Je regarde ..
résponse dans quelques jours.
Salutations
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 28 nov. 2004 à 20:33
Il manque des fichiers. C'est bête ! Ce prog marche sur le même principe qu'un des miens qu'il faut que je refasse d'ailleurs. Je suppose donc qu'il peut calculer 8^879 très facilement. En espérant qu'il ne passera pas 45 minutes. Le résultat ??
21 déc. 2004 à 16:46
Pour résoudre approximativement une équation du type f(x)=0, on pose une suite récurrente u(n+1) = g(u(n)). Pour cela, on pose g(x)=x-f(x)/f'(x), où f' est la dérivée de f. Les tangentes font converger la suite qui tend rapidement vers la limite.
Dans notre cas, on veut sqrt(a). On pose donc: f(x)=x²-a et donc g(x)=(x+a/x)/2 après calcul.
Avec les convergences quadratique, on a en fait une précision de la suite u(n) qui vaut presque 3*n décimales vraies, où n est bien sûr l'indice de la suite.
C'est en ça que réside la rapidité de convergente. Mais il parait de plus que les fractions continues sont encore plus rapides, et ce serait bien meilleur car on peut gérer numérateur et dénominateur en valeurs entières.
15 déc. 2004 à 18:03
15 déc. 2004 à 13:20
Mais quand tu apprendras que 1 n'est pas un nombre premier ...
Mais sinon , brave je'en avais justement besoin.
10 déc. 2004 à 18:22
10 déc. 2004 à 18:21
u0=QQCH
u(n+1)=(u(n)+a/u(n))/2
u0 doit être initialisée à un nombre entier immédiatement supérieur à la racine carrée de a, où a est le nombre dont tu veux trouver la racine.
La suite u(n) converge vers sqrt(a) en moins d'une dizaine de termes avec une précision infinitésimale, tellement infinitésimale que tu n'en reviendras pas. A toi donc de dresser l'algo. Tu gères numérateur et dénominateur séparément et puis tu divises à la fin. D'où l'utilité des maths et du calcul formel.
Ton interface actuellement est un peu compliquée.
10 déc. 2004 à 08:43
Salutations
9 déc. 2004 à 20:30
Je patiente...
7 déc. 2004 à 09:20
la somme des n nombre premier est égale à un arré
1+3+5 9 3^2 ;1+3+5+7 = 16 = 4^2
Mais cette méthode antique est lante mais efficace
Salutations
4 déc. 2004 à 14:32
29 nov. 2004 à 08:46
résponse dans quelques jours.
Salutations
28 nov. 2004 à 20:33
6547847648072587780913
3676587181351355025267
3190182987929904815687
8154104669082640532928
8055411015612894482448
0213901902737743052052
9603897785132713772802
8720469001517358925042
2676844166638267185441
0428427554888894293227
2423347427428333778363
2694036381140162987771
6676436855819599971569
7938328345009915910535
2738295056216369243444
6498467346818815670786
0211018236485765222370
6353390921690807449082
7473292326307125077028
1306685695221375249599
3120983713304131710400
2455624853847804086949
7923882550038487638516
5296973645049499358199
7566164485630685076844
4207611762916081887602
3204044598757058193037
5993266581064227952888
7792676457230782511731
5556126420995956422289
8723060816889261464875
2884940635286664676843
5043067725544608682153
6436268251173589438119
5848078838589246656740
261933927951596857065472
Ce GENRE de code est vraiment très puissant. Mais là, je n'ai pas pu tester... puisqu'il manque des fichiers !