реализация двойного интеграла в Matlab

У меня возникли проблемы с реализацией следующего двойного интеграла. внутри интеграла есть суммирование, которое немного усложняет ситуацию. Код Matlab, который я сделал, выглядит следующим образом и всегда имеет ошибку типа «Размеры матрицы должны совпадать». , любой намек на его реализацию? Спасибо

n=3;
nn=1:n;
aa=gamma([1:n])
thre=3;
lapha=4;
r=3;
fun1= @(theta, x) (1-sum( lambda *pi *( (x-r).^2+r^2-(x-r).*r.*cos(theta)).^(nn-1)./aa).*exp(-1*lambda *pi*((x-r).^2+r^2-(x-r).*r.*cos(theta)))).*lambda/n*(1-1/2^n).*thre.*r.^alpha.*(x-r).^(1-alpha) ;
answer=integral2( fun1, 0, 2*pi, 0, inf )

Двойной интеграл: двойной интеграл


person knight I am    schedule 17.12.2015    source источник
comment
Возможно, вы захотите разбить свою формулу, поработать над отдельными частями и сгруппировать их после проверки.   -  person marsei    schedule 17.12.2015


Ответы (1)


Ваша проблема заключается в том, как вы вычисляете сумму в интегрированной функции. В документации intergal2 сказано, что аргумент функции должен принимать массивы X и Y одинакового размера и возвращать массив соответствующих значений. Но это выражение внутри определения функции:

((x-r).^2 + r^2 - (x-r).*r.*cos(theta)).^(nn-1)./aa

не работает так, как вы ожидаете, потому что именно вы определяете размер nn и aa, а integral2 определяет размер векторов x и theta; неудивительно, что по этому поводу есть разногласия.

person Community    schedule 17.12.2015