Matlab Singularity - PullRequest
       9

Matlab Singularity

0 голосов
/ 24 октября 2011

У меня проблемы с вычислением следующего двойного интеграла:

Очевидно, что эти проблемы вызывает колебательный характер функции cos. Когда я увеличиваю f и g до больших чисел, matlab жалуется на особенности и интеграцию не удалась.

(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)) ./ (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy

Превышение пределов от -pi до pi для x и от -pi до pi для y.

Я использовал:

quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)

Любая помощь или идеи, пожалуйста ???

1 Ответ

1 голос
/ 14 ноября 2011

Сначала необходимо проверить, является ли это математической проблемой или проблемой программирования.Для ваших вводов f и g, равных 0 и 130, ребра вашего интеграла действительно уходят в бесконечность.Поэтому неудивительно, что Matlab оценивает до бесконечности, потому что это действительно ответ.

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

z = zeros(1, 100);
dd = logspace(-8, -2, 100);
for i = 1 : 100
    d = dd(i);
    z(i) = quad2d(@(x,y)my_func(x,y,0,130),-pi+d,pi-d,-pi+d,pi-d);
end
plot(log10(dd), z)
...