Integration producd NaN as answer
Afficher commentaires plus anciens
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!
Réponses (2)
Star Strider
le 8 Sep 2017
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 commentaires
Laze
le 8 Sep 2017
Star Strider
le 8 Sep 2017
My pleasure.
The ‘unit step function’ is defined as the Heaviside function.
Pal Szabo
le 8 Sep 2017
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.
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!