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 

Que veut dire: Float(undefined)?

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



Inscrit le: 17 Juin 2006
Messages: 15

MessagePosté le: 21 Mai 2008 8:59    Sujet du message: Que veut dire: Float(undefined)? Répondre en citant

bonjour,
ma question semble être facile mais vu que je suis débutant en Maple je n'arrive pas à trouver la faute, voila je me donne la fonction f(x)=sin(Pi*x)/x*h(x), ou h(x) est la fonction qui vaut 0 sur [-1/2,1/2] et 1 ailleurs.
je veux calculer la valeur de la transformation de Fourier de f en un réel donné. Voile ce que j'ai tapé sous maple 8:

Code:
with(inttrans):
> T:=1/2:chi:=x->piecewise(x<-T,1,x<T,0,1);
int(exp(2*I*x)*sin(Pi*x)/x*chi(x),x=-infinity..infinity);

                           Float(undefined)



qu'est ce que ça veut dire Float(undefined)?
Noter bien que si je tape:

Code:
with(inttrans):
> T:=1/2:chi:=x->piecewise(x<-T,1,x<T,0,1);
int(exp(2*I*x)*sin(Pi*x)/x,x=-infinity..infinity);
                                  Pi

Vos remarque me seront très utiles
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: 21 Mai 2008 11:45    Sujet du message: Re: Float(undefined) Répondre en citant

Bonjour, il semblerait que Maple gère assez mal les intégrales de fonctions de type "piecewise". D'où ce résultat surprenant.
L'aide me fournit:

Citation:

The quantity Float(undefined) represents a non-numeric object in the floating-point system. This value can be returned by a function or operation if the input operands are not in the domain of the function or operand.
Note: Float(undefined) values always compare as equal. You can also use type(expr, undefined) to check for an undefined value.
You can tag a Float(undefined) object with the notation Float(n,undefined), where n is a non-zero integer. Whenever possible, Maple preserves this object, in the sense that if it is passed in as an operand to a function or operation, Maple tries to return the same value if it makes sense to do so. In this way, it is possible to perform some retrospective analysis to determine precisely when the object first appeared.
Float(undefined) can be either or both components of a complex number (for example, Float(undefined) + 1.*I, Float(infinity) + Float(undefined)*I. The type undefined recognizes such an object.


Maple 11 me fournit un résultat de forme différente. Quant à la valeur numérique ce n'est pas Pi. J'obtiens:

Code:

> with(inttrans); T := 1/2; chi := proc (x) options operator, arrow; piecewise(x < -T, 1, x < T, 0, 1) end proc; simplify(int(exp((2*I)*x)*sin(Pi*x)*chi(x)/x, x = -infinity .. infinity));
> evalf(%);
>

  [addtable, fourier, fouriercos, fouriersin, hankel, hilbert,

        invfourier, invhilbert, invlaplace, invmellin, laplace,

        mellin, savetable]


                               T := 1/2


            chi := x -> piecewise(x < -T, 1, x < T, 0, 1)


  -1/2 I (-Ei(1, 1/2 I (2 + Pi)) + Ei(1, -1/2 I (-2 + Pi))

         + Ei(1, -I - 1/2 I Pi) - Ei(1, -I + 1/2 I Pi))


                                               -11
                 0.7865968595 + 0.5000000000 10    I

> with(inttrans); T := 1/2; chi := proc (x) options operator, arrow; piecewise(x < -T, 1, x < T, 0, 1) end proc; int(exp((2*I)*x)*sin(Pi*x)/x, x = -infinity .. -1/2)+int(exp((2*I)*x)*sin(Pi*x)/x, x = 1/2...infinity);
> evalf(%);

  [addtable, fourier, fouriercos, fouriersin, hankel, hilbert,

        invfourier, invhilbert, invlaplace, invmellin, laplace,

        mellin, savetable]


                               T := 1/2


            chi := x -> piecewise(x < -T, 1, x < T, 0, 1)


  1/2 I Ei(1, I + 1/2 I Pi) - 1/2 I Ei(1, I - 1/2 I Pi)

         - 1/2 I Ei(1, -I - 1/2 I Pi) + 1/2 I Ei(1, -I + 1/2 I Pi)


                                           -10
                      0.7865968592 - 0.4 10    I



A plus tard.
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: 21 Mai 2008 12:09    Sujet du message: Répondre en citant

Autre méthode en utilisant fourier:

Code:

> with(inttrans):
> T := 1/2;
> chi := proc (x) options operator, arrow; piecewise(x < -T, 1, x < T, 0, 1) end proc;
> convert(fourier(sin(Pi*x)*chi(x)/x,x,-2),int);
                               T := 1/2


            chi := x -> piecewise(x < -T, 1, x < T, 0, 1)


  1/2 I (-Ei(1, I - 1/2 I Pi) + Ei(1, -I + 1/2 I Pi)

         + Ei(1, I + 1/2 I Pi) - Ei(1, -I - 1/2 I Pi))

> simplify(%);

  1/2 I (Ei(1, 1/2 I (2 + Pi)) - Ei(1, -1/2 I (-2 + Pi))

         - Ei(1, -I - 1/2 I Pi) + Ei(1, -I + 1/2 I Pi))

> evalf(%);

                                               -11
                 0.7865968595 + 0.5000000000 10    I

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
dhahri



Inscrit le: 17 Juin 2006
Messages: 15

MessagePosté le: 23 Mai 2008 20:51    Sujet du message: Répondre en citant

Merci bien pour vos réponses. j'ai copié coller vos codes sous maple 9 et j'ai trouvé les meme résultats. Ce sont des résultats assez bizarre parce que la fonction chi(x) est paire et parsuite la valeur de sa transformation de Fourier en tout point doit etre un réel, ce qui n'est pas le cas pour 2. Ou est le problème? ou bien il s'agit d'un défaut de Maple, entre autre défaut bien évidemment.
Vos commentaire me seront très utile
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: 24 Mai 2008 8:11    Sujet du message: Répondre en citant

Bonjour,
on peut considérer que la valeur approchée donnée par Maple : 0.7865968595 + 0.5000000000 10^(-11) I représente bien un réel.
Sinon, pour améliorer la précision, on peut dans evalf rajouter en second paramètre le nombre de décimales souhaité (par exemple 30).

Code:

>  with(inttrans):
>  T := 1/2;
>  chi := proc (x) options operator, arrow; piecewise(x < -T, 1, x < T, 0, 1) end proc;
>  convert(fourier(sin(Pi*x)*chi(x)/x,x,-2),int);
>
>  simplify(%);
>
>
> evalf(%,30);

                               T := 1/2


            chi := x -> piecewise(x < -T, 1, x < T, 0, 1)


  1/2 I (-Ei(1, -1/2 I Pi + I) + Ei(1, 1/2 I Pi - I)

         + Ei(1, 1/2 I Pi + I) - Ei(1, -1/2 I Pi - I))


  -1/2 I (Ei(1, -1/2 I (Pi - 2)) - Ei(1, 1/2 I Pi - I)

         - Ei(1, 1/2 I (Pi + 2)) + Ei(1, -1/2 I Pi - I))


               0.786596859855563791080817683540 - 0. I



C'est déjà mieux, non?
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 -> Autres questions 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.