2009-08-19 4 views
5

J'essaie de résoudre ce qui semble être un problème mathématique simple. Je peux écrire le problème comme une boucle for, mais je ne suis pas sûr de savoir comment le traduire en une équation. Quelqu'un peut-il aider?Comment traduisez-vous cela pour la boucle en mathématiques

x = 10; 
for(int i=0; i<3000; i++) 
{ 
    x = x^2 
} 
+1

Désolé, j'aurais dû préciser, le ci-dessus est psuedocode. Ce n'est pas pour un problème de programmation donc je ne m'inquiète pas des débordements :) J'essaie en fait de résoudre un problème mathématique à la main. Je sais comment exprimer le problème en code mais pas en mathématiques. Merci pour l'aide de tout le monde – user113164

Répondre

10

x^(2^3000) où^signifie la puissance de

+1

Ou dans ce cas, 10^(2^3000) –

+3

Toutes les réponses x^6000 sont erronées. C'est vrai que (x^2)^3000 == x^6000. Cependant, ce n'est pas ce que dit la boucle. Je suis surpris (et plutôt déçu) que vous soyez minoritaire en le lisant correctement. –

-3

Étant donné qu'il est une constante, que diriez-vous juste

x = 10000000... (etc.) 

Mais je suppose que vous voulez quelque chose d'un peu plus intensionnel :

x = 10^6000 

Ou encore plus:

x = (10^2)^3000 

Ou (si vous permettez un peu plus lâche notation):

x = (10^2) ... ^2 

avec une horizontale "} 3000" sous la "...".

0

Quelque chose (la valeur d'origine de 10 dans votre cas) sera au carré 3000 fois.

6

Vous avez fourni du code, et nous demandons de fournir l'équivalent mathématique - donc je vais prendre votre code littéralement, et supposer que c'est un langage de type C.

Dans cet environnement,^est l'opérateur XOR bit à bit. Donc, après la boucle x = 10, car il a été XOR-ed avec une constante 2 (basculer le bit suivant-LSB) un nombre pair de fois.

Ou était-ce simplement pseudocode - avez-vous vraiment pensé à l'exponentiation?

+0

P.S. Étais-je le seul à compiler réellement cela et à voir ce qu'il a fait? –

+2

Je pense que vous méritez une certaine quantité d'accessoires pour mentionner que^n'est pas exponentiation en C. Je pense que la plupart des codeurs C n'auraient pas eu à le compiler pour comprendre cela cependant. ;) En outre, je préciserai que vous avez répondu avant que l'OP ne précise qu'il utilisait un pseudocode. Je tiens également à préciser que l'utilisation de C pour boucle et accolades n'est pas le meilleur choix pour PSEUDOcode, ce qui rend votre confusion d'autant plus compréhensible. –

+0

Je me sens mieux maintenant, merci. :-) –

4
for(int i=0; i<n; i++) 
    x = x^p 

équivaut à:

x = x^(p^n) 
4

Le nom mathématique pour la classe de problème que vous avez donné est recurrence relation. Une relation de récurrence définit une séquence A n en fonction des termes précédents A n-1, A n-2, etc. Dans votre cas,

A n = A n -1

Comme d'autres réponses ont montré, la création d'un closed-form solution pour votre exemple donné est simple.La résolution d'une relation de récurrence peut rapidement devenir beaucoup plus difficile avec des changements en apparence simples à la relation:

A n = A n-1 + c

Une telle récurrence non linéaire relation peut même pas avoir une solution de forme fermée, en fonction de la valeur de c. (Incidemment, lorsqu'il est utilisé avec des nombres complexes la relation de récurrence ci-dessus est au cœur de la Mandelbrot set.)

Questions connexes