Jordi--
On the one hand, yes, it is possible to write a Fourier transform
function; on the other hand, it might not work as well as you'd like.
There are several ways you might set up the Fourier transform. Here is
probably the easiest:
ft(expr,t,w):=integrate(expr*exp(-%i*2*%pi*w*t),t,-inf,inf)
To use this:
ft(exp(-q^2),q,v) => SQRT(%PI)*%E^(%I^2*%PI^2*v^2)
((Note that there is a minor bug which has prevented the %I^2 from being
simplified to -1; ratsimp will fix that.))
If you always use the same variable names, you could simplify this to:
ft(expr):=integrate(expr*exp(-%i*2*%pi*w*t),t,-inf,inf)
To use this:
ft(exp(-t^2)) => SQRT(%PI)*%E^(%I^2*%PI^2*w^2)
As I say, this might not work as well as you like. Although it gives
correct results in many cases, in others it gives messy or useless ones
(try ft(t^(-1/2))). Also, Maxima in general, and the integration
package in particular, are weak on non-analytic functions like abs,
delta, step, etc., even in the most trivial cases:
integrate(delta(t),t,minf,inf) => Fail; integrate(abs(x),x,-1,1) =>
Fail. And those functions are pretty important in many applications of
transforms.
To do better, you'd probably have to write your own Fourier transform
package which took advantage of the large fund of existing mathematical
knowledge about Fourier transforms. It would use pattern-matching and
so on, something like the existing Laplace transform package (which is
written in Lisp, and so is hard to use as a model).
-s