На изучение основ Wolfram Language (тот, который используется в Mathematica) много времени не уйдёт. Вам ведь не нужно в дебри программирования лезть.
Насчет дебрей программирования - возможно этого не избежать. Времени может и немного уйдет, но я уже в цейтноте, и к тому же пока осталась надежда на maxim-у. С оболочкой wxMaxima решил разобраться позже, напишу про этот баг разработчикам. Сам язык Maxima мне нравится. То, что дистрибутив wxMaxima или Maxima мало (много меньше математики) весит, и ПО бесплатное - тоже в плюс.
Столкнулся пока со следующими чисто программистскими проблемами в maxima:
1) мне нужны интегралы от полиномов Гаусса-Лагерра
Код:
DL(n,l,x):=gen_laguerre(n,l,x)*exp(-x/2)*x^(l/2);
где gen_laguerre(n,l,x) - обобщенный полином лагерра.
Попробовал просто записать эти интегралы в список правил,
Код:
defrule(ruDL, integrate(DL(n,l,x)*DL(m,l,x), x,0,inf) , (n+l)!/n!*kron_delta(n,m) );
, а потом воспользоваться этим правилом
Код:
apply2(integrate(DL(n,l,x)*DL(m,l,x), x,0,inf),ruDL);
- ничего не получается, правило не работает. Аналогичный результат - с командами let и letsimp.
В чем тут дело и как можно ввести подобные интегралы в базу данных Maxima по интегралам?
(в руководствах долго рылся, но ничего не нашел в тему)
2) если объявить n,m,l - целыми и n>=0, m>=0, l>=0, то получаем
Код:
DL(n,l,x)*DL(m,l,x)= (pochhammer(l+1,m)*pochhammer(l+1,n)*x^l*%e^-x
*('sum((pochhammer(-n,i3)*x^i3)/(i3!*pochhammer(l+1,i3)),i3,0,n))
*'sum((pochhammer(-m,i4)*x^i4)/(i4!*pochhammer(l+1,i4)),i4,0,m)) /(m!*n!)
Казалось бы, это уже просто проинтегрировать от 0 до бесконечности, но нет:
а) суммы, которые дает программа - неактивны, и с этими выражениями ничего нельзя сделать, нужно сначала заменить 'sum на sum. Как это автоматически делать - непонятно.
б) не так то просто оказывается засунуть x^l*%e^-x перед внешней суммой и x^i3 под внешней суммой во внутреннюю сумму, чтобы там получилось выражение
Код:
x^(l+i14+i13)*%e^-x
,
которое просто интегрируется. Для этого приходится давать сначала команду
sumexpand:true; ,а затем несколько раз команду intosum , которая приводит заодно и к побочному эффекту: под суммами оказываются вообще все множители, а не только зависящие от x.
Но увы, после этого оказывается невозможным засунуть интеграл от 0 до бесконечности под знаки сумм! Странно, но в руководствах мне пока так и не удалось обнаружить, как это сделать...
Пытался выделить в этом выражении составляющую, зависящую от x, командой
Код:
isolate(%,x)
; - ничего не дает, т.к. выражение
Код:
x^(l+i14+i13)*%e^-x
так и оказывается под знаком сумм, а потому не интегрируется!