Я пытаюсь интегрировать вложенные интегралы следующего вида:Несколько вложенных интегралы в Matlab
s_min = 0;
s_max = lam;
t_min = 0;
t_max = pi;
pmax = @(x,y) y;
pmin = 0;
ymax = 1;
ymin = @(x) x;
xmax = 1;
xmin = 0;
eqn = integral(@(x) x.*integral(@(y) (1/y).*integral(@(p) (exp(-arrayfun(@(p,x,y)integral2(@(s,t)myfun(s,t,p,x,y),s_min,s_max,t_min,t_max),p,x,y)./(k.*T))),pmin,pmax,'Arrayvalued',true),ymin,ymax,'Arrayvalued',true),xmin,xmax,'Arrayvalued',true)
Однако я получаю ошибку:
Error using integral (line 85)
A and B must be floating point scalars.
Я думал, добавив 'Arrayvalued'
для однократных интегралов и arrayfun
для двойного интеграла, что это не будет проблемой. Почему это не работает?
Привет, janismac, спасибо! Есть ли у вас какие-либо предложения или рекомендации о том, как я могу сделать свой собственный интегратор? Можно ли это сделать с помощью циклических функций? – SFfever
Для ограниченной функции в прямоугольной области (ака гиперкуба) было бы реально легко. Но ваша функция имеет особенность '1/y', для этого потребуется некоторая адаптивная сетка и контроль ошибок. Математика этого выше меня. – janismac