Itération jusque infini avec boucle for() ou while()

Fermé
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013 - Modifié par ayoubs le 18/08/2013 à 17:45
tj anh Messages postés 18 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 24 août 2013 - 21 août 2013 à 18:15
Bonjour,

je cherche à programmer cette fonction S mais je ne sais pas comment faire pour le " infini " :

S=0;
for ( m=1; m-->infini; m++)
for ( n=1; n-->infini; n++)
{
A[m,n]= f(m,n); // f(m,n) est une fonction de m et n, A[m,n] tableau de 2 dimension
S=S+A[m,n];
}
c urgent , merci d'avance.
A voir également:

5 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 18/08/2013 à 18:05
C'est du C++ ça ?

Si tu veux que ça n'ait pas de limite, alors tu ne mets rien :

for (m=1;;m++)
for (n=1;;n++)
    S +=  A[m][n] = f(m,n);

Remarque : un tableau ne pouvant pas avoir une taille infinie tu vas te retrouver avec une jolie erreur au moment où "n" dépassera la taille de ton tableau...La confiance n'exclut pas le contrôle
2
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
18 août 2013 à 19:32
Merci pour votre réponse, c juste une écriture pour présenter le problème ( c pas une écriture correct pour c++ )

dans la problématique que j'ai, le m et n tend vers l'infini...en fait c une double sommation ( sigma de m,n=1, jusq infini)... aussi la fonction tend vers 0 qd m et n tend vers infini .. c'est pour ca j'ai pensé à un tableau 2D, sachant que je ne suis pas d'origine informaticien...

voila le problème exactement:

R = A (multiplier par )sigma(m=1 --> inf) sigma(n=1--> inf) d'une fonction (m,n) + B

A et B sont des constantes.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019 > ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
18 août 2013 à 19:41
Tu ne peux pas faire de sommes infinies en C à moins d'avoir un temps infini et une mémoire infinie pour faire tourner ton programme.

Si tu veux faire du calcul formel utilises les outils adaptés comme maxima pour programmer un peu, voire des outils en ligne. Exemple : sum(sum(f(m,n),n,1,infinite),m,1,infinite))
0
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
18 août 2013 à 19:56
Merci beaucoup pour ton aide.

Je vais voir si c'est possible de le faire avec ce logiciel Maxima, sinon je vais voir avec Matlab ou scilab ou autres ..

Bonne journée ^^
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
19 août 2013 à 11:20
J'ajouterai, attention au type de m et n. Les types en informatique ont une valeur maximale, qui, si tu la dépasses, tu te retrouve à la valeur minimale.
Ceci est à prendre en compte pour les grands nombres.
Ensuite, je suppose que S et f(m,n) sont des réels (sinon, pas trop de sens). Et que la suite converge. Il arrivera donc un moment où l'ajout d'un nouveau terme ne changera pas le résultat (troncature numérique qui fait que "a+b==a"). Il n'est donc pas forcément nécessaire d'aller très loin dans les itérations.
1
geoinfo Messages postés 31 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 17 juin 2017 8
19 août 2013 à 01:29
Veuillez nous une description complète de cette fonction, votre question est un peu vague
0
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
20 août 2013 à 02:59
Bonjour,
c'est une fonction simple, juste le problème de l'itération jusque l'infini, malheureusement et logiquement ce n'est pas possible je pense en c++... la solution que j'ai est de choisir la plus grande valeur possible ( à la place de l'infini ) et de voir si ça donne les résultats attendus..
en gros c'est double sigma ( m,n=1 jusq infini) d'une fonction f(m;n))
pour plus de détails c la solution de Rao et Sarma (1981) pour la recharge artificielle des nappes.
0
tj anh Messages postés 18 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 24 août 2013
19 août 2013 à 05:04
décrivez le mot " infini " ???? Précisez
0
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
Modifié par ayoubs le 20/08/2013 à 03:04
J'ai pas bien saisi ta question ^^
0
tj anh Messages postés 18 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 24 août 2013
Modifié par tj anh le 20/08/2013 à 06:59
Bon,
votre question, c'est comment peut - on faire l'itération sans terminaison, sans achèvement ??? c'est ca ??
Si oui, Pour " for " ,
for( ; ; )
{
faire qqc
}
while ( true )
{
faire qqc
}
pendant l'itération, si vous voulez sortir, utiliser la fonc " break; "
bonne journée
0
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013
20 août 2013 à 21:28
Je crois que ce n'est pas possible et logique de calculer la somme d'une fonction jusqu'à l'infinie avec c++, ...
parce que en fin de compte je veux que mon programme m'envoie le résultat de la sommation, et pour avoir ce résultât, surement il doit y avoir une condition ou une barrière pour arrêter le calcul de la somme et renvoi le résultat, mais je n'ai pas de condition à insérer en vu de la problématique, malgré que ma fonction tend vers 0 quand le n (variable d'itération) tend vers infini..
0
tj anh Messages postés 18 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 24 août 2013
21 août 2013 à 09:06
la condition pour terminer l'itération, c'est break, s'il y a une condition quelconque, la fonc " break " s'appelé, à ce temps - là, l'itération s'achevera
0
tj anh Messages postés 18 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 24 août 2013
21 août 2013 à 09:07
En outre, pouvez - vous afficher la question complètée de cet exercise ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
geoinfo Messages postés 31 Date d'inscription dimanche 11 août 2013 Statut Membre Dernière intervention 17 juin 2017 8
19 août 2013 à 10:12
pour que votre fonction fonctionne jusqu'a l'infini, tu dois utiliser la boucle while ou bien do while, et non pas for, car cette derniere est utilisée lorsque le nombre d'iterations est connu
0