Why Does int() of rectangularPulse Return NaN?

syms t real
x(t) = rectangularPulse(0,1,t);
int(x(t),t,0,5)
ans = 
1
int(x(t),t,0,inf)
ans = 
NaN
int(x(t),t,-10,10)
ans = 
1
int(x(t),t,-inf,inf)
ans = 
NaN
Any ideas why those two cases return NaN?

1 comentario

Fixed in 2022a
syms t real
x(t) = rectangularPulse(0,1,t);
int(x(t),t,0,inf)
ans = 
1
int(x(t),t,-inf,inf)
ans = 
1
int(rectangularPulse(0,1,t),-2,inf)
ans = 
1

Iniciar sesión para comentar.

 Respuesta aceptada

Work-around:
syms b x t real
assume(b>=0)
y(t) = rectangularPulse(x,1,t)
y(t) = 
z = int(y,t,0,b)
z = 
limit(z, b, inf)
ans = 

4 comentarios

Paul
Paul el 9 de Jul. de 2021
Seems like this should be pretty simple function for int() to deal with. Does this seem like a bug?
Walter Roberson
Walter Roberson el 10 de Jul. de 2021
Editada: Walter Roberson el 10 de Jul. de 2021
I am not sure why this is happening. You can read the internal code for rectangularPulse by using
regexprep(char(feval(symengine, 'expose', 'rectangularPulse')),'\\n','\n')
but that doesn't tell you anything about how it integrates. The symbolic integration routine is too large for me to chase through.
Paul
Paul el 10 de Jul. de 2021
Editada: Paul el 10 de Jul. de 2021
Just seems so strange because int() handles much more complex functions, which is just about any function, with ease. I'll see what Tech Support says about this.
Another interesting result:
syms t real
int(rectangularPulse(0,1,t),-inf,2)
ans = 
1
int(rectangularPulse(0,1,t),-2,inf)
ans = 
NaN
Walter Roberson
Walter Roberson el 10 de Jul. de 2021
I have a suspicion that somewhere along the way, a dirac(0) is getting invoked.

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2021a

Preguntada:

el 9 de Jul. de 2021

Comentada:

el 25 de Mayo de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by