Effacer les filtres
Effacer les filtres

Problem in infinite symbolic integrals

8 vues (au cours des 30 derniers jours)
Ege Gurtan
Ege Gurtan le 9 Juin 2019
Commenté : Ege Gurtan le 10 Juin 2019
I am trying to realize this operation in MATLAB.
My code is:
clear,clc
syms a m x h f A
f=2*A^2*(x^2)*exp(-2*a*m*x^2/h)
I=int(f,x,0,inf)
But MATLAB gives me :
2*A^2*limit((2^(1/2)*a*pi^(1/2) - 2^(1/2)*a*pi^(1/2)*erfc(2^(1/2)*x*((a*m)/h)^(1/2)))/(16*a*((a*m)/h)^(3/2)) - (x*h*exp(-(2*x^2*a*m)/h))/(4*a*m), x, Inf)
Does anyone know what's wrong?
Thanks in advance!

Réponse acceptée

Walter Roberson
Walter Roberson le 9 Juin 2019
When you do the syms call, you should break it down into symbols that are certain to be real valued and those that are not certain, and you should add the "real" qualifier when possible. For example,
syms a f h m x real
syms A %potentially complex valued
We know that A is potentially complex valued because they used instead of just . In turn that implies that your use of A^2 in the code is not correct: it might need to be abs(A)^2
You should also add any assume() calls that are reasonable. For example,
assume(x >= 0)
With all of your symbols being potentially complex valued (because you did not say otherwise), and since any of your values might be 0, then MATLAB is unable to determine the complex sign of the expression, so it has to just talk in general about limits, with it not able to prove anything about the properties of that limit.
  2 commentaires
Ege Gurtan
Ege Gurtan le 10 Juin 2019
Modifié(e) : Ege Gurtan le 10 Juin 2019
Hello, thanks for the answer, but it is not working.
clear,clc
syms A f a
syms m x h real
assume(x>=0)
assume(m>0)
assume(h>0)
f=2*A^2*(x^2)*exp((-2*a*m*x^2)/h)
I=int(f,x,0,inf)
but I still get
2*A^2*limit((2^(1/2)*a*pi^(1/2) - 2^(1/2)*a*pi^(1/2)*erfc(2^(1/2)*x*((a*m)/h)^(1/2)))/(16*a*((a*m)/h)^(3/2)) - (x*h*exp(-(2*x^2*a*m)/h))/(4*a*m), x, Inf)
Ege Gurtan
Ege Gurtan le 10 Juin 2019
Nevermind. Now it works with the following code.
Thanks a lot!
clear,clc
syms A f a real
syms m x h real
assume(x>=0)
assume(m>0)
assume(h>0)
assume(a>0)
assume(A>0)
assume(f>0)
f=2*A^2*(x^2)*exp((-2*a*m*x^2)/h)
I=int(f,x,0,inf)

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by