1

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

2

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.
avatar
« 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. »

3

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

4

OK, donc #jesors#
avatar
« 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. »

5

Sasume: mauvaise idée ... la for stricte

il faut décider d'un écart type epsylon fixe et d'un nb max d'itération:
un truc comme ca koi
tant que abs(xn+1 - xn) > espylon OU nb_iteration < nb_iteration_max
faire
  traitement sur xn, xn+1 avec f; :P
fait

6

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

7

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

8

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

9

bah une tant que c une while ... apres, c simple !

10

epsilon tu l'écrit comme ca ou c dans la catalogue

11

nb_itération tu le trouve ou

12

arf !
ben nan ... epsylon c un nombre qui tend vers 0.0 genre 0.00001 puis ton nb_iteration_max est par exemple 10000 ...

13

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

14

Utilise la commande format en BASIC (regarde dans ton manuel pour savoir comment l'utiliser)
avatar
« 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. »

15

tu peux pas vraiment avoir ca en basic ...
a la rigueur abs(10000*nombre)/10000

16

je connaissais pas ca tiens smile

17

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

18

g encore une question
dans l'algo c'est quoi f et :P

19

a ton avis ...

20

f je pense que c'est 1/n^3
mais :P g aucune idée

21

bah reflechis ... enfin, si t'as compris ce qu'étais une série .. ca devrait pas etre trop dur a trouver.

22

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é.

23

une while fait tres bien l'affaire koi smile

24

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)

25

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


- Tu doit forcément poser une limite, sinon tu va planter si on on te donne une série qui ne converge pas. (Ou alors tu les détectes et les refuse avant. Je te souhaite bien du plaisir).
- Tu travailles sur un système à virgule flottante, donc tu auras toujours une erreur, liée à l'imprécision inhérente au calculateur lui-même. Cela est valable également sous matlab (sauf que la précision est plus importante).