Integration producd NaN as answer

2 次查看(过去 30 天)
Laze
Laze 2017-9-8
I tried to write a function file to implement a simple integration where 't' as input must be positive.
My code:
function y = Integration(t)
%Input a value t larger than 0, it will return an intergral
if t <= 0
disp('Input must be positive');
y = NaN;
else
syms x;
y = int(-(t-x)*exp(-(t-x))*(t-x>=0)*x^2*exp(-x)*sin(x)*(x>=0));
end
end %end of Integration2
But this code keep giving me NaN when I input postive numbers. Could someone kindly explain? Thanks!

回答(2 个)

Star Strider
Star Strider 2017-9-8
First, ‘t’ needs to be defined as a sym object;
Second, use the convenient heaviside function to define the unit step function:
syms x t
t = sym(5); % Example
y = int(-(t-x)*exp(-(t-x))*heaviside(t-x)*x^2*exp(-x)*sin(x)*heaviside(x));
This produces an expression for ‘y’ incorporating heaviside terms, since ‘x’ is not defined numerically.
I am not certain what result you want. At the very least, this solves the NaN problem.
  2 个评论
Laze
Laze 2017-9-8
Thanks for your response! What I wanted to do is to a function 'Integration' that can calculate the above formula. I checked the definition of heaveside, it's kinda different from a unit step function because at x=0, heavside(x)=1/2 while u(x) should equal to 1.
Besides, by trying your revision, the problem of NaN has been solved but I still could not get a numerical result rather than the above formular with t substituted by my input. Could you tell me why this is happening? Thanks a lot!
Star Strider
Star Strider 2017-9-8
My pleasure.
The ‘unit step function’ is defined as the Heaviside function.

请先登录,再进行评论。


Pal Szabo
Pal Szabo 2017-9-8
I think you should delete the >=0 parts from line 8. Like this:
y = Integration(2)
function y = Integration(t)
%Input a value t larger than 0, it will return an intergral
if t <= 0
disp('Input must be positive');
y = NaN;
else
syms x
y = int(-(t-x)*exp(-(t-x))*(t-x)*x^2*exp(-x)*sin(x)*(x));
end
end %end of Integration2
If you want numerical result, I think you should specify the value of x.

类别

Help CenterFile Exchange 中查找有关 Numbers and Precision 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by