Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Anomalie dans la série cosinus

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Maple en analyse
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Leleuco



Inscrit le: 22 Mar 2014
Messages: 5

MessagePosté le: 22 Mar 2014 11:44    Sujet du message: Anomalie dans la série cosinus Répondre en citant

Code:


> for x from 0 to 5 do

>print(evalf(sum((-1)^k*x^(2*k)/factorial(2*k), k = 0 .. 10)), evalf(cos(x)))

> end do;

0., 1.
0.5403023059, 0.5403023059
-0.4161468365, -0.4161468365
-0.9899924966, -0.9899924966
-0.6536436057, -0.6536436209
0.2836642141, 0.2836621855



la "sum" est le développement en série de cos(x),bien entendu .Maple donne 0 pour x=0,et cos(0) = 0 . (!).

Si vous donnez à x une valeur proche de zéro :

Code:

> x := 0.1e-7; print(evalf(sum((-1)^k*x^(2*k)/factorial(2*k), k = 0 .. 10)), evalf(cos(x)));


1 10 e-8
1.000000000, 1.



Vous obtenez le bon résultat.

Si vous demandez la série : elle est correcte :

Code:

> sum((-1)^k*x^(2*k)/factorial(2*k), k = 0 .. 5);

1-(1/2)*x^2+(1/24)*x^4-(1/720)*x^6+(1/40320)*x^8-(1/3628800)*x^10

eval(1-(1/2)*x^2+(1/24)*x^4-(1/720)*x^6+(1/40320)*x^8-(1/3628800)*x^10, [x = 0]);
1



Quelle est cette anomalie ? . Où est l'erreur ?

pour Maple ,la série cosinus classique donne pour cosinus(0) = 0 !!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 23 Mar 2014 8:54    Sujet du message: Répondre en citant

Bonjour,
Effectivement l'anomalie vient du 0^0 correspondant à la première valeur 0 de k. Quand il calcule la somme, Maple doit considérer que 0^0 = 0.
La valeur est 1 en fait, car c'est la limite de exp(x ln(x)) quand x tend vers 0+.
Si on procède en remplaçant x par 0, le calcul semble bien se passer:

Code:

> 0^0;

                                  1

> sum((-1)^k*0^(2*k)/factorial(2*k), k = 0 .. 10);

                                  1



D'où ma solution pour avoir la bonne valeur, je substitue chaque valeur de x dans une variable y:

Code:

> for x from 0 to 5 do
>
> print(evalf(subs(y=x,sum((-1)^k*y^(2*k)/factorial(2*k), k = 0 .. 10))), evalf(cos(x)))
>
> end do;
                                1., 1.


                      0.5403023059, 0.5403023059


                     -0.4161468365, -0.4161468365


                     -0.9899924966, -0.9899924966


                     -0.6536436057, -0.6536436209


                      0.2836642141, 0.2836621855



A bientôt.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
prof_simplet



Inscrit le: 12 Sep 2006
Messages: 86

MessagePosté le: 23 Mar 2014 11:07    Sujet du message: Répondre en citant

Bonjour, cette question a été maintes fois évoquée sur le forum mapleprimes.com, en voici une réponse en anglais.
Il vaut mieux utiliser add à la place de sum.

Citation:


When you want to add a finite specific number of terms (rather than perform a symbolic sumation) you should use add instead of sum. Then you will get the correct answer. By using sum, you are causing the premature evaluation of 0^(2*k), which evaluates to zero (except apparently in Maple 1Cool, k being initially unknown. With add, the terms are not evaluated until the values of k are substituted, and then 0^0 evaluates to 1.

This issue has been discussed on Maple forums for decades.



Code:

for x from 0 to 5 do
>
> print(evalf(add((-1)^k*x^(2*k)/factorial(2*k), k = 0 .. 10)), evalf(cos(x)))
>
> end do;
                                1., 1.


                      0.5403023059, 0.5403023059


                     -0.4161468365, -0.4161468365


                     -0.9899924966, -0.9899924966


                     -0.6536436057, -0.6536436209


                      0.2836642141, 0.2836621855


Voilà, la messe est dite!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Leleuco



Inscrit le: 22 Mar 2014
Messages: 5

MessagePosté le: 23 Mar 2014 11:21    Sujet du message: Anomalie dans la série cosinus Répondre en citant

Gênant.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Leleuco



Inscrit le: 22 Mar 2014
Messages: 5

MessagePosté le: 24 Mar 2014 12:21    Sujet du message: Répondre en citant

J'avoue que j'ai un peu de mal à avaler cette explication,car si vous remplacez x par une très petite valeur ,par ex : 0.0000001,On obtient un bon résultat.

for x from 10^(-10) to 5 do

print(evalf(sum((-1)^k*x^(2*k)/factorial(2*k), k = 0 .. 10)), evalf(cos(x)))

end do;

1.0000000, 1.
0.54030231, 0.54030231
-0.41614684, -0.41614684
-0.98999250, -0.98999250
-0.65364361, -0.65364362

> Rien à voir avec "you are causing the premature evaluation of 0^(2*k)" me semble) -t-il.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Maple en analyse Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.