Integration producd NaN as answer

2 Ansichten (letzte 30 Tage)
Laze
Laze am 8 Sep. 2017
Kommentiert: Star Strider am 8 Sep. 2017
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!

Antworten (2)

Star Strider
Star Strider am 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 Kommentare
Laze
Laze am 8 Sep. 2017
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 am 8 Sep. 2017
My pleasure.
The ‘unit step function’ is defined as the Heaviside function.

Melden Sie sich an, um zu kommentieren.


Pal Szabo
Pal Szabo am 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.

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by