numerical integraion with array limits
6 views (last 30 days)
Show older comments
I am trying to work out the integrals that are function of one of the limits, and both limits are vectors:
n=1:10;
t=2;
a=(n-1).*t;
b=n.*t;
Q=integral(@(x)lognpdf(b-x,2,1),a,b,'ArrayValued',true);
As a and b must be scalars, so integral won’t work here. Someone suggested using arrayfun in the answers to a similar question in April where only one limit is a vector, how to do this?
0 Comments
Accepted Answer
Mike Hosea
on 6 Dec 2013
Edited: Mike Hosea
on 6 Dec 2013
Assuming you want each individual integral to be
integral(@(x)lognpdf(b(j)-x,2,1),a(j),b(j))
then
Qab = @(aj,bj)integral(@(x)lognpdf(bj-x,2,1),aj,bj)
Q = arrayfun(Qab,a,b)
You don't have to rename a and b in Qab, as they are "scoped" to be distinct from the previously defined a and b vectors, but I just did it for clarity.
4 Comments
Mike Hosea
on 22 Jan 2014
Yes, but the problem is that the value for b is obtained as a snapshot when @(x)b-x is created. You should be able to work around this problem by inlining the creating of ymax, i.e.
ab=@(a,b)integral2(fun,a,b,0,@(x)b-x);
More Answers (1)
Sergio Quesada
on 1 Jun 2018
Edited: Sergio Quesada
on 1 Jun 2018
Hi everybody, I'm working on a similar easier case, but with no success... I'm trying to evaluate
liminf=ones(1,20); syms x;
integral(@(x)exp(-a./x.*log(x)),liminf,r)
beeing 'a' an escalar, and 'r' also a 1x20 array. That is, 20 different integrals from 1 to each value of 'r'
It sais:
Error using integral (line 85)
A and B must be floating-point scalars.
Thankyou so much !!
0 Comments
See Also
Categories
Find more on Function Creation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!