Страница сетевой поддержки учеников Тимура Юрьевича Альпина

04.12.2010

Скрипт для решения номеров типа №1944 из Демидовича

Filed under: Maxima — Shine @ 7:20 пп

Сгоряча я написал единый движок для взятия интегралов №1943, 1944 и 1946. Тут много автоматики и незнакомых команд, за подробностями обращайтесь в мануал максимы.

Задаём полином в числителе

(%i162) P:x^10;
Result

и корень в знаменателе:

(%i163) y:sqrt(1+x^2);
Result

Полюбуемся на полученный интеграл, заодно проверим, всё ли правильно набрали:

(%i164) int:'integrate(P/y,x);
Result

Назовём буквой n степень числителя:

(%i165) n:hipow(P,x);
Result

и создадим полином Q меньшего на единицу порядка:

(%i166) Q:sum(a[n]*x^n,n,0,n-1);
Result

Это формула, стоявшая перед этим блоком номеров в Демидовиче, её надо набрать, чтобы потом использовать. Заметьте, что в неё уже подставились наши обозначения:

(%i167) fla:'integrate(P/y,x)=Q*y+lambda*'integrate(1/y,x);
Result

Продифференцируем её

(%i168) diff(%,x);
Result

и умножим полученное на y:

(%i169) expand(%*y);
Result

Приравняем коеффициенты при равных степенях (это таки можно сделать автоматически), составим таким образом систему уравнений:

(%i170) sys:makelist(ratcoef(%,x,n-i),i,0,n);
Result

Создадим также список неизвестных коеффициентов,

(%i171) makelist(a[i],i,0,n);
Result

Добавим в него лямбду, обозначим,

(%i172) var:append(%,[lambda]);
Result

и решим систему, сразу обозначив её решение:

(%i173) coeffs:solve(sys,var)[1];
Result

Подставим теперь коеффициенты в общую формулу,

(%i174) fla,coeffs;
Result

и проинтегрируем правую её часть автоматически, чтобы было с чем сравнить ручную работу:

(%i175) rhs(%),integrate;
Result

Да, максима не ставит +С в конце. Но вы всё равно должны это делать.

Комментариев нет »

No comments yet.

RSS feed for comments on this post.

Leave a comment

Для отправки комментария вам необходимо авторизоваться.

Хостингом угостил Вадим "Moose" Калинников