Tibio Le 27/10/2003 à 09:31 salut désolé si vous voyez ce message sur ce forum ici mais je crois que c'st mieux ici pour mon probleme.
Je voudrais faire un programme qui me calcule la somme de la série 1/n^3 à quatre décimales près comment je peux faire en utlisant une boucle for et la fonction partie entière merci
Approche naïve : for(n=0;n<MAX;n++) { somme+=....}
Mais il y a peut être moyen de simplifier les calculs. Je ne connais pas les séries.

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
Tibio Le 27/10/2003 à 09:43 le problème c'est que d'après mon énoncé je ne dois pas rentrer de variable
une série c'est une somme a l'infini c-à-d que 1+1/2^3+1/3^3+......+1/N^3 a une limite finie et c'est ce que je dois calculer
au fait je ne peux pas poser n=0 car 1/0 ca n'existe pas
Tibio Le 27/10/2003 à 09:58 je veux bien mais g deux remarques a faire :
1. je comprends pas trop ce que tu as écrit ex: tmp c koi et je croyais que la calc est en anglais(tant que=while? faire...fait=do...done?)
2.il me semble que dans ce que tu as écrit on impose un n particulier alors que je dois faire tendre n vers l'infini
1. c dans la partie alog, j'ai écrit un algo, pas un code !
2. moué, c de l'auto incrémenté koi .... je change ce que j'avais mis
Tibio Le 27/10/2003 à 10:04 désolé je suis nouveau mais alog pour moi c chinois
je connais la programmation que par Matlab et sur la TI89 g du mal a transposer avec ce qe je connais de Matlab
bah une tant que c une while ... apres, c simple !
Tibio Le 27/10/2003 à 10:11 epsilon tu l'écrit comme ca ou c dans la catalogue
Tibio Le 27/10/2003 à 10:12 nb_itération tu le trouve ou
arf !
ben nan ... epsylon c un nombre qui tend vers 0.0 genre 0.00001 puis ton nb_iteration_max est par exemple 10000 ...
Tibio Le 27/10/2003 à 10:20 ben oui mais là je décide d'un certain rang ou j'arrete alors que je ne dois pas avoir de dernier rang avec ca j'aurais toujours une erreur que je ne dois pas avoir
autre question :
pour avoir le résultat avec quatre chiffre après la virgule je fais coment? il doit me l'afficher quand je demande le résultat
Utilise la commande format en BASIC (regarde dans ton manuel pour savoir comment l'utiliser)

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
tu peux pas vraiment avoir ca en basic ...
a la rigueur abs(10000*nombre)/10000
Tibio Le 27/10/2003 à 10:27 oui c vrai j'y pensait pas
en fait je voulais utiliser la fonction partie entière. Je l'ai déjà fait mais sur Matlab
comme ca j'ai fait
par ex je prends un nombre S qui a plus de quatre décimale
(10000*S-E(10000*S))/10000
normalement ca marche
Tibio Le 27/10/2003 à 10:34 g encore une question
dans l'algo c'est quoi f et :P
Tibio Le 27/10/2003 à 10:39 f je pense que c'est 1/n^3
mais :P g aucune idée
bah reflechis ... enfin, si t'as compris ce qu'étais une série .. ca devrait pas etre trop dur a trouver.
y333 Le 27/10/2003 à 11:21 for ne me paraissant pas adapté, je propose:
somm()
func
local i,m,n
0->n
1->i
loop
n->m
n+1/i^3->n
if abs(n-m)<10^-4:return round(n,4)
i+1->i
endloop
endfunc
sinon avec for:
somm()
func
local i,m,n
0->n
1->j
for i,1,j
n->m
n+1/i^3->n
if abs(n-m)<10^-4:return round(n,4)
j+1->j
endfor
endfunc
A l'origine de plusieurs arcticles dans le magazine Hacker'z Voice, devenu à ce jour The Hackademy Journal, me voici, plus présent que jamais auparavant près à se mettre au service de notre belle et chère communauté.
Si tu veux, tu peux aussi utiliser une technique d'accélération de convergence. Avantage : ça converge plus vite (meilleure précision), mais inconvénient : tu n'as pas de contrôle théorique sur la précision (tu ne peux pas être sûr que les 4 premières décimales seront les bonnes), même si "expérimentalement" on peut avoir une idée de la précision.
Dans ton cas, 1/n^3 converge assez vite, donc ça va. Mais si tu voulais calculer Somme((-1)^n/n), je te conseillerais d'utiliser une accélération de convergence.
Au fait, je précise que les méthodes qui ont été décrites plus haut ne sont pas exactes au niveau de la précision : il faut majorer Somme(1/n^3, n>=k) par intégrale(1/t^3,t=k-1..infini) = 1/(2.(k-1)^2) et pas par 1/k^3 (car ce n'est pas parce qu'un terme ne va pas changer une décimale que plusieurs termes combinés ne vont pas le faire).
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)