numerical integraion with array limits

3 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Mike Hosea
Mike Hosea il 6 Dic 2013
Modificato: Mike Hosea il 6 Dic 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 Commenti
Wenjuan
Wenjuan il 6 Dic 2013
Modificato: Wenjuan il 6 Dic 2013
Now I am trying to work out double integral, where the limit of y is a function of x, like
fun=@(x,y)lognpdf(b-x,2,1).*lognpdf(y,3,2);
ymax=@(x) b-x;
Qab=@(a,b)integral2(fun,a,b,0,ymax);
Q=arrayfun(Qab,a,b);
but this returns error
"
Error using -
Matrix dimensions must agree.
Error in @(x)b-x"
Is this because b is a vector?
Mike Hosea
Mike Hosea il 22 Gen 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);

Accedi per commentare.

Più risposte (1)

Sergio Quesada
Sergio Quesada il 1 Giu 2018
Modificato: Sergio Quesada il 1 Giu 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 !!

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by