 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
dhahri
Inscrit le: 17 Juin 2006 Messages: 15
|
Posté le: 21 Mai 2008 8:59 Sujet du message: Que veut dire: Float(undefined)? |
|
|
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 |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 21 Mai 2008 11:45 Sujet du message: Re: Float(undefined) |
|
|
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 |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 21 Mai 2008 12:09 Sujet du message: |
|
|
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 |
|
 |
dhahri
Inscrit le: 17 Juin 2006 Messages: 15
|
Posté le: 23 Mai 2008 20:51 Sujet du message: |
|
|
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 |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 24 Mai 2008 8:11 Sujet du message: |
|
|
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 |
|
 |
|
|
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
|

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