Application Center - Maplesoft

App Preview:

Les sommations

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

les_sommations.mw

[Inserted Image]Les sommations

Pierre Lantagne septembre 2000

Collge de Maisonneuve

plantag@edu.cmaisonneuve.qc.ca

 Le symbole de sommation

Dans ce laboratoire, vous allez explorer la notation mathmatique S ( sigma majuscule est une lettre de l'alphabet grec) et sa transposition dans Maple. La notation sigma (S) a t introduite par le mathmaticien Leonard Euler (1707-1783) pour symboliser une addition de termes conscutifs.

La somme de termes conscutifs  a[1] + a[2] + a[3] + ... + a[n-1] + a[n] est symbolise par l'expression Sum(a[k], k = 1 .. n)

o la lettre k est appele variable de sommation. Le rfrentiel de la variable k est l'ensemble des entiers Z. La valeur 1 est la valeur initiale de la variable de sommation k, et n est la valeur finale qui est ici indfinie :

Sum(a[k], k = 1 .. n) = a[1]+a[2]+a[3] + ... + a[n-1]+a[n]

La macro-commande sum() de la bibliothque principale permet de transposer une sommation indfinie dans Maple.

> sum(a[k],k=1..n);

sum(a[k], k = 1 .. n)

Le choix de la lettre utilise pour spcifier la variable de sommation est arbitraire. Les lettres, i, j, k, et l servent le plus souvent comme variables de sommation.

Sum(a[k], k = 1 .. n) = Sum(a[i], i = 1 .. n)  =   a[1] + a[2] + a[3] + ... +  a[n-1] + a[n]

> sum(a[i],i=1..6);
sum(a[j],j=1..6);

sum(a[k],k=1..6);

a[1]+a[2]+a[3]+a[4]+a[5]+a[6]

a[1]+a[2]+a[3]+a[4]+a[5]+a[6]

a[1]+a[2]+a[3]+a[4]+a[5]+a[6]

La variable de sommation est en quelque sorte une variable muette.

La valeur initiale de la variable de sommation peut tre un entier quelconque:

Sum(a[k], k = 3 .. 7) = a[3] + a[4] + a[5] + a[6] + a[7]

> sum(a[k],k = 3 .. 7);

a[3]+a[4]+a[5]+a[6]+a[7]

Sum(b[i], i = -3 .. 4) = b[-3]+b[-2]+b[-1]+b[0]+b[1]+b[2]+b[3]

> sum(b[i],i = -3 .. 4);

b[-3]+b[-2]+b[-1]+b[0]+b[1]+b[2]+b[3]+b[4]

>

REMARQUE  Sum(a[k], k = m .. n)

Habituellement, en mathmatique, la valeur initiale de la variable de sommation est un entier infrieur la valeur finale de la variable, c'est--dire que l'on a ordinairement m < n :

Sum(a[k], k = -7 .. -1) = a[-7]+a[-6]+a[-5]+a[-4]+a[-3]+a[-2]+a[-1]

Dans les cas inhabituels o la valeur initiale est suprieure la valeur finale, soit m > n, l'valuateur donne pour rsultat la sommation

Sum(a[k], k = m .. n)  =  -(Sum(a[k], k = n+1 .. m-1))

Par exemple, soit la somme Sum(a[k], k = 7 .. 1)

> sum(a[k],k = 7 .. 1);

-a[2]-a[3]-a[4]-a[5]-a[6]

La macro-commande sum()  possde une forme inerte qui permet de bien documenter un ventuel dveloppement sous la forme d'une galit.

> Sum(a[k],k=3..7)=sum(a[k],k=3..7);

Sum(a[k], k = 3 .. 7) = a[3]+a[4]+a[5]+a[6]+a[7]

Remarquez comment l'afficheur a prsent le rsultat pour sigma : le caractre sigma est en noir. Il en sera toujours ainsi lorsqu'on impose l'afficheur de prsenter un rsultat qui inclus la forme inerte d'un lment de syntaxe Maple. C'est le cas ici avec la macro-commande Sum(). Cela permet l'usager de faire la diffrence entre la mise en forme impose par la forme inerte et la prsentation du rsultat lorsque l'valuateur n'a pu obtenir la simplification de la requte. En effet, lorsqu'il n'y a pas simplification par l'valuateur, l'afficheur donne pour rsultat la requte telle quelle.  Il en sera de mme avec Diff(), Int(), Limit(), Product, etc. Par exemple

> Sum(a[k],k=1..n)=sum(a[k],k=1..n);

Sum(a[k], k = 1 .. n) = sum(a[k], k = 1 .. n)

 Rgles de la sommation

L'valuateur connat bien sr les rgles lmentaires de la sommation. L'extension student va nous aider le montrer.

> with(student):

RGLE 1

> Sum(1,k=1..n)=sum(1,k=1..n);

Sum(1, k = 1 .. n) = n

RGLE 2

> Sum(c,k=1..n)=sum(c,k=1..n);

Sum(c, k = 1 .. n) = n*c

RGLE 3

> Sum(A*b[k],k=1..n)=expand(Sum(A*b[k],k=1..n));

Sum(A*b[k], k = 1 .. n) = A*(Sum(b[k], k = 1 .. n))

RGLE 4

> Sum(A*b[k]+B*b[k],k=1..n)=expand(Sum(A*b[k]+B*b[k],k=1..n));

Sum(A*b[k]+B*b[k], k = 1 .. n) = A*(Sum(b[k], k = 1 .. n))+B*(Sum(b[k], k = 1 .. n))

>

Enfin, une sommation peut tre scinde en deux sommations contigus pour tout entier m tel que 1 < m < n :

RGLE 5

> Sum(b[k],k=1..n)=Sum(b[k],k=1..m)+Sum(b[k],k=m+1..n);

Sum(b[k], k = 1 .. n) = (Sum(b[k], k = 1 .. m))+(Sum(b[k], k = m+1 .. n))

Rciproquement, deux sommations contigus peuvent tre unifies en une seule sommation avec la macro-commande combine()de la bibliothque principale.  

> Sum(b[k],k=-5..12)+Sum(b[k],k=13..36);
``=combine(%);

(Sum(b[k], k = -5 .. 12))+(Sum(b[k], k = 13 .. 36))

`` = Sum(b[k], k = -5 .. 36)

L'valuateur est capable de simplifier automatiquement un trs grand nombre de sommations indfinies. Par exemple, demandez l'valuateur les sommes suivantes:

sum(k, k = 1 .. n), sum(k^2, k = 1 .. n)   et   sum(k^3, k = 1 .. n) .

> Sum(k,k = 1 .. n)=sum(k,k = 1 .. n);

Sum(k, k = 1 .. n) = 1/2*(n+1)^2-1/2*n-1/2

> Sum(k^2,k = 1 .. n)=sum(k^2,k = 1 .. n);

Sum(k^2, k = 1 .. n) = 1/3*(n+1)^3-1/2*(n+1)^2+1/6*n+1/6

> Sum(k^3,k = 1 .. n)=sum(k^3,k = 1 .. n);

Sum(k^3, k = 1 .. n) = 1/4*(n+1)^4-1/2*(n+1)^3+1/4*(n+1)^2

>

Toutes les rponses prcdentes peuvent, videmment,  tre simplifies

          -  sous la forme dveloppe avec normal(  ,expanded()) et

          -  sous la forme factorise avec factor(). Par exemple:

> Sum(k^3,k = 1 .. n)=sum(k^3,k = 1 .. n);
``=normal(sum(k^3,k = 1 .. n),expanded);

``=factor(sum(k^3,k = 1 .. n));

Sum(k^3, k = 1 .. n) = 1/4*(n+1)^4-1/2*(n+1)^3+1/4*(n+1)^2

`` = 1/4*n^4+1/2*n^3+1/4*n^2

`` = 1/4*n^2*(n+1)^2

Pour obtenir la formule de la somme indfinie Sum(3*k^4-k^2+1, k = 1 .. n) , il n'est pas ncessaire de faire intervenir explicitement les proprits du symbole de sommation. L'valuateur donnera directement le rsultat:

> Sum(3*k^4-k^2+1,k = 1 .. n)=factor(sum(3*k^4-k^2+1,k = 1 .. n));

Sum(3*k^4-k^2+1, k = 1 .. n) = 1/30*n*(18*n^4+45*n^3+20*n^2-15*n+22)

Si on dsire obtenir la dcomposition d'une sommation l'aide des proprits du symbole de sommation, il faut utiliser la macro-commande expand()(Il est ncessaire que l'extension student ait t rendu disponible).

> # with(student):
Sum(3*k^4-k^2+1,k = 1 .. n)=expand(Sum(3*k^4-k^2+1,k = 1 .. n));

Sum(3*k^4-k^2+1, k = 1 .. n) = 3*(Sum(k^4, k = 1 .. n))-(Sum(k^2, k = 1 .. n))+(Sum(1, k = 1 .. n))

>

 La double sommation

En mathmatique, on rencontre dans le calcul matriciel des sommations o interviennent deux variables de sommation : sum(sum(x[i]*y[j], j = 1 .. m), i = 1 .. n) .

La double sommation est en fait une sommation d'une sommation. Dans les textes mathmatiques, les doubles sommations s'crivent habituellement sans parenthses. Cela est la consquence de la rgle 1 qu'on verra la sous-section suivante.

Dans la sommation imbrique sum(x[i]*y[j], j = 1 .. m) , les variables indices x[i] jouent un rle de constante face la sommation sur j. On a donc l'galit : sum(x[i]*(sum(y[j], j = 1 .. m)), i = 1 .. n) .

> Sum(Sum(x[i]*y[j],j=1..m),i=1..n)=Sum(x[i]*Sum(y[j],j=1..m),i=1..n);

Sum(Sum(x[i]*y[j], j = 1 .. m), i = 1 .. n) = Sum(x[i]*(Sum(y[j], j = 1 .. m)), i = 1 .. n)

Et on crit

> ``=Sum(x[i],i=1..n)*Sum(x[j],j=1..m);

`` = (Sum(x[i], i = 1 .. n))*(Sum(x[j], j = 1 .. m))

Obtenons ce dernier dveloppement l'aide de expand() applique directement sur la double sommation.

> Sum(Sum(x[i]*y[j],j=1..m),i=1..n)=expand(Sum(Sum(x[i]*y[j],j=1..m),i=1..n));

Sum(Sum(x[i]*y[j], j = 1 .. m), i = 1 .. n) = (Sum(y[j], j = 1 .. m))*(Sum(x[i], i = 1 .. n))

>

On rencontre donc rarement, en mathmatique, la multiplication de deux sommations car il s'agit en fait d'une double sommation. La preuve est assez simple faire. Illustrons plutt ici la vracit de cette affirmation avec le dveloppement limit suivant : Sum(Sum(x[i]*y[j], j = 1 .. 2), i = 1 .. 4) .


D'une part, le dveloppement de la double sommation donne ceci :

> Sum(Sum(x[i]*y[j],j=1..2),i=1..4)=sum(sum(x[i]*y[j],j=1..2),i=1..4);

Sum(Sum(x[i]*y[j], j = 1 .. 2), i = 1 .. 4) = x[1]*y[1]+x[1]*y[2]+x[2]*y[1]+x[2]*y[2]+x[3]*y[1]+x[3]*y[2]+x[4]*y[1]+x[4]*y[2]

Et d'autre part, le dveloppement de la multiplication des deux sommation donne ceci :

> Sum(y[j],j = 1 .. 2)*Sum(x[i],i = 1 .. 4)=sum(y[j],j = 1 .. 2)*sum(x[i],i = 1 .. 4);

(Sum(y[j], j = 1 .. 2))*(Sum(x[i], i = 1 .. 4)) = (y[1]+y[2])*(x[1]+x[2]+x[3]+x[4])

> expand(%);

(Sum(y[j], j = 1 .. 2))*(Sum(x[i], i = 1 .. 4)) = x[1]*y[1]+x[1]*y[2]+x[2]*y[1]+x[2]*y[2]+x[3]*y[1]+x[3]*y[2]+x[4]*y[1]+x[4]*y[2]

On a donc bien, ici, l'galit Sum(Sum(x[i]*y[j], j = 1 .. 2), i = 1 .. 4) = (Sum(y[j], j = 1 .. 2))*(Sum(x[i], i = 1 .. 4)) qui est vrifie.

>

 Rgles de la double sommation

En ce qui concerne la double sommation, l'valuateur reconnat la rgle suivante.

RGLE 1

Dans une double sommation, on peut sans faute, permuter les deux S : sum(sum(x[i]*y[j], j = 1 .. m), i = 1 .. n) = sum(sum(x[i]*y[j], i = 1 .. n), j = 1 .. m) .

> Sum(Sum(x[i]*y[j],j = 1 .. m),i = 1 .. n) = Sum(Sum(x[i]*y[j],i = 1 .. n),j = 1 .. m);

Sum(Sum(x[i]*y[j], j = 1 .. m), i = 1 .. n) = Sum(Sum(x[i]*y[j], i = 1 .. n), j = 1 .. m)

Illustrons la rgle 1 par le dveloppement limit suivant : Sum(Sum(x[i]*y[j], j = 1 .. 4), i = 1 .. 2) .

> Sum(Sum(x[i]*y[j],j = 1 .. 4),i = 1 .. 2)=sum(sum(x[i]*y[j],j = 1 .. 4),i = 1 .. 2);

Sum(Sum(x[i]*y[j], j = 1 .. 4), i = 1 .. 2) = x[1]*y[1]+x[1]*y[2]+x[1]*y[3]+x[1]*y[4]+x[2]*y[1]+x[2]*y[2]+x[2]*y[3]+x[2]*y[4]

> Sum(Sum(x[i]*y[j],i = 1 .. 2),j = 1 .. 4)=sum(sum(x[i]*y[j],i = 1 .. 2),j = 1 .. 4);

Sum(Sum(x[i]*y[j], i = 1 .. 2), j = 1 .. 4) = x[1]*y[1]+x[1]*y[2]+x[1]*y[3]+x[1]*y[4]+x[2]*y[1]+x[2]*y[2]+x[2]*y[3]+x[2]*y[4]

Terminons la liste des rgles en ajoutant les quatres rgles suivantes.

RGLE 2

> # with(student):

> Sum(Sum(a[i,j]+b[i,j],j = 1 .. m),i = 1 .. n) = expand(Sum(Sum(a[i,j]+b[i,j],j = 1 .. m),i=1..n));

Sum(Sum(a[i, j]+b[i, j], j = 1 .. m), i = 1 .. n) = (Sum(Sum(a[i, j], j = 1 .. m), i = 1 .. n))+(Sum(Sum(b[i, j], j = 1 .. m), i = 1 .. n))

RGLE 3

> Sum(Sum(k*a[i,j],j = 1 .. m),i = 1 .. n) = expand(Sum(Sum(k*a[i,j],j = 1 .. m),i = 1 .. n));

Sum(Sum(k*a[i, j], j = 1 .. m), i = 1 .. n) = k*(Sum(Sum(a[i, j], j = 1 .. m), i = 1 .. n))

RGLE 4

> Sum(Sum(x[i],j = 1 .. m),i = 1 .. n) = expand(Sum(sum(x[i],j = 1 .. m),i = 1 .. n));
Sum(Sum(y[j],j = 1 .. m),i = 1 .. n) = expand(sum(Sum(y[j],j = 1 .. m),i = 1 .. n));

Sum(Sum(x[i], j = 1 .. m), i = 1 .. n) = m*(Sum(x[i], i = 1 .. n))

Sum(Sum(y[j], j = 1 .. m), i = 1 .. n) = n*(Sum(y[j], j = 1 .. m))

RGLE 5

> Sum(Sum(k,j = 1 .. m),i = 1 .. n) = sum(sum(k,j = 1 .. m),i = 1 .. n);

Sum(Sum(k, j = 1 .. m), i = 1 .. n) = n*m*k

sum() et add()

La macro-commande sum()est la macro-commande utiliser pour obtenir formellement l'expression d'une somme indfinie, qu'elle soit finie ou infinie.

>

Dvelopper, sous la forme d'une galit, la somme indfinie Sum(5^(k-1), k = 1 .. n) .

> Sum(5^(k-1),k = 1 .. n)=sum(5^(k-1),k = 1 .. n);

Sum(5^(k-1), k = 1 .. n) = 1/20*5^(n+1)-1/4

> ``=simplify(sum(5^(k-1),k = 1 .. n),symbolic);

`` = 1/4*5^n-1/4

La somme indfinie prcdente est une somme finie. Avec la macro-commande sum(), il est possible aussi d'obtenir une somme infinie.

> Sum((-1)^k*1/k,k=1..infinity)=sum((-1)^k*1/k,k=1..infinity);

Sum((-1)^k/k, k = 1 .. infinity) = -ln(2)

Un tel rsulat dcoule de l'tude des sries infinies, ce qui dborde le niveau du cours EED.

Dans certains cas, la formulation du rsultat est exprime avec des expressions mathmatiques inconnues du niveau collgial.

> Sum(k/(k+1),k=0..n) = sum(k/(k+1), k=0..n);

Sum(k/(k+1), k = 0 .. n) = n+1-Psi(n+2)-gamma

O le nombre gamma (gamma) est la constante d'Euler valant approximativement:

> gamma=evalf(gamma,20);

gamma = .57721566490153286061

et la fonction d'Euler Psi (Psi) tant dfinie par Diff(ln(Gamma(x)), x) o Gamma(x) = Int(exp(-t)*t^(x-1), t = 0 .. infinity) .

Ne soyez pas effray par tous ces dtails, c'est seulement pour pater la galerie...

Lorsqu'il s'agit d'obtenir la somme d'un nombre fini de valeurs numriques, c'est--dire lorsqu'on cherche explicitement une somme numrique plutt qu'une formule, il est recommand d'utiliser la macro-commande add()mme si la macro-commande sum() pourrait donner explicitement la somme.

Calculer Sum(3*k^2+1, k = 4 .. 37) .

> add(3*k^2+1,k = 4 .. 37);

52717

Il est quand mme ncessaire d'utiliser la forme inerte de sum() afin de documenter la somme avec une galit:

>

> Sum(3*k^2+1,k = 4 .. 37)=add(3*k^2+1,k = 4 .. 37);

Sum(3*k^2+1, k = 4 .. 37) = 52717

Rsumons. Pour oprer symboliquement une sommation indfinie, on utilise sum() tandis que pour oprer numriquement une sommation dfinie, on utilise add().

Sur les intervalles numriques sum() et add() donne la somme:

> add(k,k=1..12);
sum(k,k=1..12);

78

78

Tandis que sur les intervalles symboliques, add() est inoprante:

> add(k,k=1..n);
sum(k,k=1..n);

Error, unable to execute add

1/2*(n+1)^2-1/2*n-1/2

En fait, la macro-commande add() est une petite procdure dfinie l'aide d'une structure de contrle appele boucle for:
        add(Formule, k=m..n)
 S := 0;
                                 Valeur := i;

                                 for i from m to n do S := S+Formule

                                 end do;

                                 i := Valeur;

                                 S; # Affichage du rsultat


Tandis que la macro-commande
sum() fait appel un ensemble de rsulats dcoulant de l'tude des polynmes.C'est ce qui explique son usage
lorsqu'on effectue
un traitement analytique d'une sommation.

>

 Exercices

No.1

l'aide de la macro-commande add(), obtenez la somme des 100 premiers nombres impairs

1 + 3 + 5 + 7 + 9 + ... + 199

avec comme valeur initale de la variable de sommation,

a) la valeur 0

b) la valeur 1

>

>

No.2

l'aide de la macro-commande sum(), obtenez la formule factorise de la somme des n premiers nombres impairs conscutifs avec comme valeur initiale de la variable de sommation,

a) la valeur 0

b) la valeur 1

>

>

No.3

l'aide de la macro-commande sum(), vrifiez que la somme des n premier termes donne,
(
Vous devez touver le terme gnral de la sommation.)

a) 1 + 2 + 3 + 4 + 5 + ...   =  n*(n+1)/2

>

>

>

b) 1^2 + 2^2 + 3^2 + 4^2 + 5^2 + ...   =  n*(n+1)*(2*n+1)/6

>

>

>

c)1^3 + 2^3 + 3^3 + 4^3 + 5^3 + ...   =  n^2*(n+1)^2/4

>

>

>

c) 1/(2*3)+1/(2*3*4)+1/(3*4*5) + ...  =   n*(n+3)/(4*(n+1)*(n+2))

>

>

>

d) 1 + 7 + 13 + 19 + ...  =  n*(3*n-2)

>

>

>

e) 5^0+5+5^2+5^3 + ...  =   (5^n-1)/4

>

>

>

No.4

Pour les exercices ci-dessous, documentez votre solution comme l'exemple suivant.

Exemple

Obtenez la somme infinie 1/3 + 1/15 + 1/35 + 1/63 + 1/99 + 1/143 + ... + 1/((2*k-1)*(2*k+1)) + ... de deux manires diffrentes

      -  en posant directementSum(a[k], k = 1 .. infinity)  et

      - en posantLimit(Sum(a[k], k = 1 .. n), n = infinity) .

et vrifiez si l'valuateur a, dans chaque cas, donn un rsultat quivalent.

Solution

> P:=k->1/((2*k-1)*(2*k+1));

P := proc (k) options operator, arrow; 1/((2*k-1)*(2*k+1)) end proc

> seq(P(k),k=1..6);

1/3, 1/15, 1/35, 1/63, 1/99, 1/143

> Sum(P(k),k=1..infinity)=sum(P(k),k=1..infinity);

Sum(1/((2*k-1)*(2*k+1)), k = 1 .. infinity) = 1/2

> Sum(P(k),k=1..infinity)=Limit(Sum(P(k),k=1..n),n=infinity);
``=Limit(sum(P(k),k=1..n),n=infinity);

``=limit(sum(P(k),k=1..n),n=infinity);

Sum(1/((2*k-1)*(2*k+1)), k = 1 .. infinity) = Limit(Sum(1/((2*k-1)*(2*k+1)), k = 1 .. n), n = infinity)

`` = Limit(-1/2/(2*n+1)+1/2, n = infinity)

`` = 1/2

Dans les deux cas, l'valuateur a donn un rsultat quivalent.

>

a)  1/3+1/8+1/15+1/24+1/35 + ... + 1/(k*(k+2)) + ...

>

>

>

>

b)  1/4+1/10+1/18+1/28+1/40+1/54 + ... + 1/(k*(k+3)) + ...

>

>

>

>

c)  1/2+1/3+1/8+1/30+1/144+1/840 + ... + k/factorial(k+1) + ...

>

>

>

>

No.5

l'aide de la macro-commande add(), valuez

a) sum(sum((i^2-1)*(j+1), j = 1 .. 4), i = 1 .. 4)

b) sum(sum(i*j+2*i, j = 1 .. 6), i = 1 .. 4)

No.6

Montrez formellement que (sum(x[i], i = 1 .. n))^2 = sum(sum(x[i]*x[j], j = 1 .. n), i = 1 .. n)

No.7

Montez formellement que (sum(x[i]+1, i = 1 .. n))^2 = (sum(sum(x[i]*x[j], j = 1 .. n), i = 1 .. n))+2*n*(sum(x[i], i = 1 .. n))+n^2

No.8

Similairement ce qu'on fait avec le symbole S,  la lettre pi majuscule de l'alphabet grec, soit P, est utlilise pour symboliser une multiplication de facteurs conscutifs :

product(a[k], k = 1 .. n)  =  a[1]*a[2]*a[3]  ...  a[n-1]*a[n] .

> Product(a[k],k=1..n);

Product(a[k], k = 1 .. n)

> Product(a[k],k=1..7)=product(a[k],k=1..7);

Product(a[k], k = 1 .. 7) = a[1]*a[2]*a[3]*a[4]*a[5]*a[6]*a[7]

>

Dveloppez les multiplications suivantes.

a) Product(k, k = 1 .. 7)

b) Product((k+1)*k/2, k = 3 .. 9)
c)
Product((k/(k+2))^3, k = 1 .. 20)

d)  Product((x/(x+2))^3, k = 1 .. 20)

e) Product(2*k-15, k = -5 .. 5)

f)  Product(2*k*pi+1, k = -5 .. 5)

Pierre Lantagne , septembre 2000