Why is the Fourier Transform of symbolic Laplacian function (2nd partial derivative) not being found?

I am needing to find the Fourier Transform of the following symbolic expression:
syms U(x,y,z) beta k
LHS = laplacian(U) + beta.^2*U
LHS_FT = fourier(LHS)
That is,
I'm needing to take the spatial 3D Fourier Transform of LHS.
This is the output I get:
LHS(x, y, z) =
LHS_FT(y, z) =
I am stuck here, any help would be much appreciated! Thank you in advance!

7 Comments

Not sure how that result was obtained. Are your symprefs not the defaults?
syms U(x,y,z) beta k
LHS = laplacian(U) + beta.^2*U
LHS(x, y, z) = 
LHS_FT = fourier(LHS)
LHS_FT(y, z) = 
What result is expected?
Hello. The sympref have been configured to:
sympref('FourierParameters',[1/(sqrt(2*sym(pi))) -1]);
sympref('FloatingPointOutput', false);
The expected result should have fourier coefficients, see the fourier in the output means that MATLAB is not finding the Fourier Transform.
Still not able to recreate the result in the Question, although it looks like it can be simplified further to what's shown here, though I'm still confused why the transform variable is k and not w.
syms U(x,y,z) beta k
LHS = laplacian(U) + beta.^2*U
LHS(x, y, z) = 
sympref('FourierParameters',[1/(sqrt(2*sym(pi))) -1]);
LHS_FT = fourier(LHS)
LHS_FT(y, z) = 
simplify(LHS_FT)
ans(y, z) = 
Considering that U(x,y,z) is not defined, I don't see how fourier() is supposed to know what it's supposed to find the Fourier transform of. I mean, what more can be expected with the input fourier() as U and no furhter definition of U as a function of x,y, and z?
Hi Emmanuel,
Since it's a 3d transform you will need three k's as in
syms U(x,y,z) beta kx ky kz
LHS = laplacian(U) + beta.^2*U
LHS_FT = fourier(fourier(fourier(LHS,x,kx),y,ky),z,kz)
but it looks like it's not smart enough to do it.
What is fourier() not smart enough to do? I'm unclear what more fourier() can be expected to do given that U(x,y,z) is not defined.
Hi Paul,
the answer was
LHS_FT =
beta^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
- kx^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
+ fourier(fourier(fourier(diff(U(x, y, z), y, y), x, kx), y, ky), z, kz)
+ fourier(fourier(fourier(diff(U(x, y, z), z, z), x, kx), y, ky), z, kz)
so it could do the conversion d^2/dx^2 --> -kx^2, but it couldn't convert d^2/dy^2 or d^2/dz^2, which would have made the nice symmetric expression
beta^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
- kx^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
- ky^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
- kz^2*fourier(fourier(fourier(U(x, y, z), x, kx), y, ky), z, kz)
@David Goodmanson Thank you for that insight of having to include 3 k's, one corresponding to each spatial dimension. I may have to resort to solving this numerically, instead of symbolically to bypass the limitation.
@Paul The expected result should be:
** Expected result **
Applying 3D Fourier Transform
Here the represents the Fourier coefficient.
NOTE: I have put in a service request to MathWorks regarding this, and their response is "currently working with my colleagues to determine the nature of workflow and if this behavior is a potential enhancement/bug I will reach out to you at the earliest, once I have an update."
So it appears this is just not us :), and there is a potential limitation that MW will need to work out.

Sign in to comment.

Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Products

Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!