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
4452
В 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
4452
Приведите, пожалуйста, текст, который у Вас выполняется не так, как Вы хотите. Если текст довольно велик, то, пожалуйста, замените его на модельный, отражающий, по возможности правильно, исходную задачу.

На будущее, если что-то не работает, то сразу: подробно описывайте что не работает и приводите текст в теге 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
4452
При интегрировании можно использовать функцию с одним аргументом. Это можно выполнить, например, так (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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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