2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Численное интегрирование в Maple
Сообщение28.11.2010, 17:09 


28/11/10
6
Друзья! Прошу помощи в таком вопросе: необходимо сосчитать интеграл
Код:
Int(x^(2*l+2)*e^(-2*sqrt(-2*a)*x)*hypergeom([l+1-1/sqrt(-2*a)], [2*l+2], 2*sqrt(-2*a)*x)^2, x = 0 .. 50)

l- целое неотрицательное, a - произвольный действительный параметр, интегрировать нужно при разных значениях a и l и по разным интервалам. Как это сделать? При записи evalf(.....) или evalf[N](....) maple просто упрощает выражение ничего не считая, опция int(..., numeric) тоже ничего не дает.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение28.11.2010, 21:33 
Заслуженный участник


12/07/07
4549
В Maple не определена постоянная e. Возможно, с этим связаны Ваши проблемы, поскольку у меня, если задать значения a и l, значение интеграла Maple 12 Classic Worksheet численно находит
Код:
> a:= 1: l:=1:
> f:= evalf(Int(x^(2*l+2)*exp(-2*sqrt(-2*a)*x)*hypergeom([l+1-1/sqrt(-2*a)], [2*l+2], 2*sqrt(-2*a)*x)^2, x = 0 .. 50));
                          f := 8.042370933-.1417351947e-13*I
Над разумностью результата я не задумывался.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 01:47 
Аватара пользователя


05/11/09
90
В аналогичной ситуации я создавал процедуру типа
Код:
qqq := proc(l, a, xmin, xmax)
evalf(Int(..., x = xmin..xmax));
end proc:

а затем применял её в циклах.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 16:14 


28/11/10
6
Спасибо GAA, действительно была ошибка насчет e :oops: :D Результаты получаются странные из-за ошибок вычисления, поэтому пробую другой метод. Соответсвенно, вопрос: Как интегрировать сложные процедуры? Допустим, у меня есть процедура от нескольких параметров и переменной Func(a,l,x) и нужно посчитать Int(x^2*Func(a,l,x)^2, x=0..r) численно?

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 20:31 
Аватара пользователя


05/11/09
90
А какие сложности? Интегрируйте обычно, только сначала все параметры подставьте.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 21:13 


28/11/10
6
Дело в том, что этот интеграл берется внутри другой процедуры и дальше с ним производятся вычисления. Если присвоить параметрам значения и записать по-простому evalf(Int(Func()*........)) то на выходе получается не значение интеграла, а просто выражение с подставленными параметрами и maple даже не пытается что-то вычислять.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 21:55 
Заслуженный участник


12/07/07
4549
Приведите, пожалуйста, текст, который у Вас выполняется не так, как Вы хотите. Если текст довольно велик, то, пожалуйста, замените его на модельный, отражающий, по возможности правильно, исходную задачу.

На будущее, если что-то не работает, то сразу: подробно описывайте что не работает и приводите текст в теге code.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 22:10 


28/11/10
6
Код:
> Moment := proc (n1::integer, L1::integer, n2::integer, L2::integer, R::numeric, power::integer) local norm1, norm2; E1 := BracketRoot(n1-l1, l1, R) ; #некое значение norm1 := evalf(Int(x^(2*l1+2)*'Func(E1, l1, x)'^2, x = 0 .. R)) #тут проблема; E2 := BracketRoot(n2-l2, l2, R); #другое значение norm2 := evalf(Int(x^(2*l1+2)*'Func(E2, l2, x)'^2, x = 0 .. R));# и тут return evalf(Int(x^(l1+l2+power+2)*'Func(E1,l1,x)'*'Func(E2,l2,x)', x = 0 .. R)); # и тут end proc;

Вот так определена функция
Код:
> Func := proc (E::numeric, L::integer, R::numeric) local a0, a1, a2, S, n, Z; Z := 1; a0 := 1; a1 := -Z/(1+L); a2 := -(2*a1*Z+2*E*a0)/(4*L+6); S := a0+a1*R+a2*R^2; for n from 3 while 0.1e-19 < abs(a2*R^(n-1)) or 0.1e-19 < abs(a1*R^(n-2)) do a0 := a1; a1 := a2; a2 := -(2*a1*Z+2*E*a0)/((2*L+1+n)*n); S := S+a2*R^n end do; return evalf(S) end proc;

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 22:34 
Аватара пользователя


05/11/09
90
А что такое BracketRoot?

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 23:14 


28/11/10
6
Это еще одна процедура, она ищет k-й корень функции по параметру E, но здесь это не важно - она просто возвращает число.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение29.11.2010, 23:24 
Аватара пользователя


05/11/09
90
Как не важно? А мэпл ругается! ;-) Ладно, засуну что‐нибудь тривиальное.

-- Пн ноя 29, 2010 23:41:39 --

Короче, не считает он численно интегралы от процедур, вот что скажу.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение30.11.2010, 12:53 
Заслуженный участник


12/07/07
4549
При интегрировании можно использовать функцию с одним аргументом. Это можно выполнить, например, так (Maple 7.0)
Код:
> Moment := proc (n1::integer, L1::integer, n2::integer, L2::integer, R::numeric, power::integer) local norm1, norm2;
>   E1:= 1;
>   f := (x)-> x^(2*L1+2)*Func(E1, L1, x);
>   evalf(Int(f, 0..R)); #тут проблема
>  end proc;

> Moment(1, 1, 1, 1, 1, 1);
                 .1106449724
Я оставил только начальный кусок Moment, в котором начинаются проблемы. Остальное — аналогично. В зависимости от версии конструкции будут меняться. В следующий раз, указывайте версию пакета или укажите её в профиле.

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение30.11.2010, 18:44 
Аватара пользователя


05/11/09
90
GAA, :appl: !

 Профиль  
                  
 
 Re: Численное интегрирование в Maple
Сообщение02.12.2010, 01:13 


28/11/10
6
Большое спасибо, сам как-то не додумался!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group