Численное интегрирование двойного интеграла, Maple 9.5

Форум пользователей пакета Maple

Модератор: Admin

.:Артём:.
Сообщения: 1
Зарегистрирован: Ср ноя 26, 2008 10:50 pm

Численное интегрирование двойного интеграла, Maple 9.5

Сообщение .:Артём:. » Ср ноя 26, 2008 10:55 pm

Пытаюсь решить уравнение
f(x)=1/(Pi*(1+x^2));
f(y)=1/(Pi*(1+y^2));

Int( f(x)*Int(f(y), y=-infinity...5.758770482+5.671281818*x) , x=-infinity...infinity);

в документации написано, что для численного интегрирования нужно использовать связку efalf(Int(...))
пишу

evalf( Int( f(x)*Int(f(y), y=-infinity...5.758770482+5.671281818*x, method=_d01amc) , x=-infinity...infinity, method=_d01amc));

решение maple не может найти

но если заменить Int на int то maplе находит решение

Но оно не верно, т.к. решение должно быть действительным числом.
Не могу понять в чем дело. Может надо дополнительный пакет использовать?
Думаю все проблемы связаны с тем что интеграл от бесконечностей берется, но чтобы не было с этим проблем я использую метод _d01amc но он почему-то не помогает

Семен
Сообщения: 73
Зарегистрирован: Пн сен 08, 2008 10:24 am

Сообщение Семен » Чт ноя 27, 2008 10:58 am

Действительно, если в Maple 10 мы имеем комплексное значение, то в Maple 8 получаем Float(undefined), хотя уже график

> plot(f(x)*h(x), x=-infinity...infinity);

показывает, что должно быть конкретное действительное значение. К сожалению, это далеко не единственная проблема Maple при вычислениях даже относительно несложных интегралов. Много по этому поводу можно найти в англоязычных форумах и в Goole-группах. В таком случае еще для Maple 7 рекомендовалось одним авторитетом, в частности, «поиграть» Digits, что я и сделал:

> f:= x -> 1/(Pi*(1+x^2)): g:= y -> 1/(Pi*(1+y^2)):

> Digits:=3: h:= x -> int(g(y), y=-infinity...5.758770482+5.671281818*x):

> int(f(x)*h(x), x=-infinity...infinity);
0.726

Мотивировку такого подхода по ряду причин не привожу, заинтересованный сам отыщет при необходимости.

GAA
Сообщения: 102
Зарегистрирован: Вт сен 30, 2003 2:47 pm
Откуда: Донецк

Сообщение GAA » Чт ноя 27, 2008 1:14 pm

.:Артём:., oчень нехорошо одновременно задавать один и тот же вопрос на нескольких форумах, [особенно без указания этого!]. Не ясно — где отвечать!

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Пт ноя 28, 2008 10:55 am

Но оно не верно, т.к. решение должно быть действительным числом.

Вы получаете

Код: Выделить всё

.7266741716-2.387324146*10^(-12)*I

Мнимая часть этого ответа достаточно близка к нулю.

Можно использовать evalf(Int(..)) вот так:

Код: Выделить всё

> evalf(Int(fx*(int(fy, y = -infinity .. 5.758770482+5.671281818*x)), x = -infinity .. infinity))
                    0.7266741715

То есть внутренний интеграл считает int, внешний -- evalf(Int(...))