Интеграл внутри экспоненты внутри интеграла

Я пытаюсь численно интегрировать несколько разных выражений, но все они имеют интеграл внутри экспоненты, окруженный другим интегралом, т.е.

интегральное изображение

Кажется, я не могу решить эту проблему, используя приведенный ниже код:

syms s p t
W = 3.18*10^(-22);
b = 10^(-23);
X = 300;
L = 0.374;
intlim = 0.589;

myfuncirc = @(s,p,t) (-W).*sqrt((L.^2)-(s.^2)).*(((-p.*cos(t))+sqrt(1-((p.^2).*((sin(t)).^2)))-sqrt(L.^2-s.^2)).^(-2));

s_min = 0;
s_max = L;
t_min = 0;
t_max = pi;

integral(@(p)(p.*exp(-(integral2(@(s,t) myfuncirc(s,t,p),s_min,s_max,t_min,t_max))/(b.*X))),0,intlim,'Arrayvalued',true)

Я получаю сообщение об ошибке, показанное ниже, но я ожидаю число от 0 до 1:

Предупреждение. Обнаружено бесконечное значение или значение Not-a-Number. В funfun\private\integralCalc>iterateArrayValued на 267 В funfun\private\integralCalc>vadapt на 130 В funfun\private\integralCalc на 75 В Inintegral на 88

Я также пытаюсь выполнить аналогичную интеграцию в следующей форме, но также не получаю ожидаемых ответов:

второе цельное изображение

pmax = y;
pmin = 0;
ymax = 1;
ymin = @(x) x;
xmax = 1;
xmin = 0;

integral3(@(x,y,p) (exp(-(integral(@(s)myfun(s,p),0,lam,'ArrayValued',true)./(k.*T)))),xmin,xmax,ymin,ymax,pmin,pmax,'Method','iterated')

Предупреждение. Обнаружено бесконечное значение или значение Not-a-Number. > В funfun\private\integralCalc>iterateScalarValued на 349 В funfun\private\integralCalc>vadapt на 132 В funfun\private\integralCalc на 75 В funfun\private\integral2Calc>@(xi,y1i,y2i)integralCalc(@(y) fun(xiones(size(y)),y),y1i,y2i,opstruct.integralOptions) в 17 In funfun\private\integral2Calc>@(x)arrayfun(@(xi,y1i,y2i)integralCalc( @(y)fun(xiones(size(y)),y),y1i,y2i,opstruct.integralOptions),x,ymin(x),ymax(x)) at 17 In funfun\private\ IntegerCalc>itateScalarValued на 314 In funfun\private\integralCalc>vadapt на 132 In funfun\private\integralCalc на 75 In funfun\private\integral2Calc>integral2i на 20 In funfun\private\integral2Calc на 7 In Inintegral3>innerintegral на 137 In funfun\ private\integralCalc>iterateScalarValued на 314 В funfun\private\integralCalc>vadapt на 132 В funfun\private\integralCalc на 75 В Inintegral3 на 121 Предупреждение: интеграция не удалась. > В интеграле3 при 125


person SFfever    schedule 08.06.2016    source источник


Ответы (1)


Проблема 1 заключается в том, что вы определяете

myfuncirc = @(s,p,t) ...

Но когда это называется, это называется как

myfuncirc(s,t,p)

Аргументы не в том же порядке. Вы должны изменить определение myfuncirc на

myfuncirc = @(s, t, p) ...

Для второго сложнее сказать, потому что то, что вы опубликовали, не дает результатов, которые вы напечатали, это ошибки - некоторые значения не определены, например, myfun и k. Однако я думаю, проблема в том, что pmax определяется не как дескриптор функции, а как значение — все, что находится в y в момент, когда pmax назначается. я подозреваю, что вы хотите

pmax = @(x,y) y;
person SCFrench    schedule 09.06.2016