Integral with specific range (i.e t = 0:0.1:1)

2 Ansichten (letzte 30 Tage)
Fakhri Alifin
Fakhri Alifin am 23 Sep. 2020
Kommentiert: Star Strider am 2 Okt. 2020
Hello everybody,
I'm a new user of matlab and still a beginner of this software. I'm using matlab R2015a by the way.
I've made a function called intensityc (t) with this code:
%NHPP on critical component (N(t))
function lc = intensityc(t)
B = 2;
ac = 0.4;
lc = (B/ac)*((t/ac).^(B-1));
end
then I was trying to call the function to another function Lamdac (t) with this code:
%big Lamda
function Lc = Lamdac(t)
Lc = integral(@intensityc, 0 ,t);
end
I have a trouble to find the value of Lamdac(t) because the "t" is ranging from 0 up to 1. I have used 'Arrayvalued' but the code still error.
Anyone can help me? I will appreciate all suggestions given to me. Thank you.

Akzeptierte Antwort

Star Strider
Star Strider am 23 Sep. 2020
Do the integration in a loop for each value of ‘t’:
function lc = intensityc(t)
B = 2;
ac = 0.4;
lc = (B/ac)*((t/ac).^(B-1));
end
function Lc = Lamdac(t)
for k = 1:numel(t)
Lc(k) = integral(@intensityc, 0 ,t(k));
end
end
Calling it:
t = linspace(0, 1, 10);
Out = Lamdac(t).'
produces:
Out =
0
0.077160493827160
0.308641975308642
0.694444444444444
1.234567901234568
1.929012345679012
2.777777777777777
3.780864197530863
4.938271604938270
6.249999999999999
(Another option is to use arrayfun, however it is much slower and less efficient than an explicit loop.)
  4 Kommentare
Fakhri Alifin
Fakhri Alifin am 2 Okt. 2020
Thanks for your help, it already work!
Star Strider
Star Strider am 2 Okt. 2020
My pleasure!
If my Answer helped you solve your problem, please Accept it!
.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by