 
        
        Введение в пакет Maxima2
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное образовательное учреждение высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
С.М. Кузьменко
Введение в систему аналитических вычислений Maxima
Часть 2
Ростов-на-Дону
2007
 
Вычисление производных
Функция, которая используется в Maxima, для вычисления производных и дифференциалов уже упоминалась ранее: это функция diff. Рассмотрим ее под- робнее. Возможны четыре различных варианта вызова этой функции:
diff (expr)
diff (expr, x)
diff (expr, x, n)
diff (expr, x_1, n_1, ..., x_m, n_m)
Первый вариант – diff (expr) – вычисляет полный дифференциал выражения expr. При этом, для записи дифференциалов переменных используется функция
del(x).
Второй вариант – diff (expr, x), которым мы и пользовались ранее, вычисляет первую производную от выражения expr по переменной x.
В третьем варианте – diff (expr, x, n) – вычисляется n-я производная от выра- жения expr по переменной x.
1
 
И, наконец, четвертый вариант – diff (expr, x_1, n_1, ..., x_m, n_m) – позволяет вычислить смешанные частные производные порядков n_1,…, n_m, по перемен- ным x_1,… x_m, соответственно, от выражения expr.
В невычисляемой форме (с апострофом) функция diff используется при со- ставлении дифференциальных уравнений. Для того чтобы определить старший порядок производной от переменной y по независимой переменной x в выражении expr служит функция derivdegree (expr, y, x).
Для задания цепочки зависимостей функций и переменных друг от друга слу- жит функция depends (f_1, x_1, ..., f_n, x_n). В качестве аргументов функции depends могут передаваться имена переменных, массивы или списки. Все зависи- мости, устанавливаемые при вызовах функции depends накапливаются в систем- ной переменной dependencies, являющейся списком. Для удаления из списка за- висимостей функции f служит команда remove(f, dependency).
2
 
Следует отметить, что хранящиеся в переменной dependencies зависимости используются только функцией diff. Другие функции, такие как интегрирование или преобразования Лапласа учитывают только зависимости явно заданные в своих аргументах.
Вычисление интегралов
Для вычисления неопределенных и определенных интегралов в Maxima ис- пользуется функция integrate. Так же, как и функция diff, она может быть вызва- на с различными наборами параметров.
Очевидно, что в случае вызова integrate (expr, x), вычисляется неопределен- ный интеграл от выражения expr по переменной x а в случае вызова integrate
3
 
(expr, x, a, b) – определенный интеграл от выражения expr по переменной x в пре- делах от a до b.
При невозможности вычислить интеграл, он будет либо возвращен в неизмен- ном виде, либо частично упрощен.
Maxima может вычислять и несобственные интегралы, как первого (с беско- нечными пределами), так и второго (от функций с бесконечными разрывами) ро- да.
4
 
Если несобственный интеграл расходится, мы получим соответствующее со- общение об ошибке.
Единственное ограничение, накладываемое Maxima на пределы интегрирова- ния – они не должны зависеть от переменной, по которой интегрирование ведет- ся.
Для пользователей, считающих, что команду integrate (expr, x, a, b) набирать слишком долго, существует альтернативный способ вызова команды вычисления определенного интеграла: defint (expr, x, a, b). Никаких различий между результа- тами выполнения этих команд не существует.
Чтобы провести замену переменной необходимо воспользоваться функцией changevar (expr, f(x,y),y,x), которая заменяет переменную x на y во всех интегра- лах, входящих в выражение expr, руководствуясь равенством f(x,y)=0.
В Maxima определено, также, большое количество разнообразных функций численного интегрирования, обзор которых выходит за пределы данного пособия, но, при необходимости, может быть найден в руководстве пользователя.
5
 
Решение алгебраических уравнений
Для аналитического решения алгебраических уравнений и их систем можно воспользоваться функцией solve. как и многие другие функции Maxima, функция solve может быть вызвана с различными наборами аргументов. Кроме того, как обычно бывает в Maxima, ее поведение регулируется значениями системных пе- ременных. Рассмотрим возможные варианты вызова функции solve.
solve (expr, x) решает алгебраическое уравнение expr относительно перемен- ной x. В качестве результата выдается список корней уравнения. В случае, если выражение expr уравнением не является, то Maxima автоматически дополняет его введением нулевой правой части expr=0.
Если expr зависит только от одной переменной, то возможен вызов функции solve с одним аргументом: solve (expr).
Для решения системы n уравнений с n неизвестными используется вызов solve
([eqn_1,…,eqn_n ], [x_1,…,x_n ])
6
 
Механизм поиска решений систем уравнений имеет некоторые особенности. Сначала функция solve анализирует переданную ей в качестве аргумента систему уравнений, а затем, в зависимости от ее вида (линейная или нелинейная) обраща- ется к одной из двух функций linsolve или algsys, которые, впрочем, могут быть вызваны пользователем и самостоятельно.
Функция linsolve ([eqn_1,…,eqn_m ], [x_1,…,x_n ]) решает систему m линейных уравнений с n неизвестными.
Вприведенном примере Maxima исключила из системы третье уравнение, как зависимое, выбрала x1 и x2 за базисные, а x3 и x4 за независимые переменные, и корректно нашла решение.
Вслучае несовместности системы выдается сообщение об ошибке:
7
 
Что же касается функции algsys ([eqn_1,…,eqn_m ], [x_1,…,x_n ]), то она пыта- ется решить произвольную алгебраическую систему.
Как и функция solve, две последние функции, в случае, когда eqn_i не являют- ся уравнениями, дополняют их правой частью, равной нулю.
Если решение системы найти не удается, возвращается пустой список []. Приведем краткий список системных переменных, влияющих на работу с
уравнениями.
| 
 | Флаг | 
 | Возможные | Значение | 
 | 
 | Описание | 
 | ||
| 
 | 
 | 
 | значения | по умолча- | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | нию | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | Если true, то после решения сис- | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | темы двух и более линейных урав- | ||||
| 
 | globalsolve | 
 | true | false | 
 | нений | найденные значения при- | |||
| 
 | 
 | false | 
 | сваиваются переменным. При ре- | ||||||
| 
 | 
 | 
 | 
 | 
 | ||||||
| 
 | 
 | 
 | 
 | 
 | 
 | шении | любых | других | уравнений | |
| 
 | 
 | 
 | 
 | 
 | 
 | (систем) игнорируется | 
 | |||
| 
 | 
 | 
 | true | 
 | 
 | Управляет | выводом | функцией | ||
| 
 | linsolvewarn | 
 | true | 
 | linsolve | сообщения об исключении | ||||
| 
 | 
 | false | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | зависимого уравнения из системы | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | 
 | true | 
 | 
 | Если true – | функцией algsys воз- | |||
| 
 | realonly | 
 | false | 
 | вращаются только действительные | |||||
| 
 | 
 | false | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | корни | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | Управляет | выводом | сообщения | ||
| 
 | solvetrigwarn | 
 | true | true | 
 | об использовании обратных триго- | ||||
| 
 | 
 | false | 
 | нометрических функций и возмож- | ||||||
| 
 | 
 | 
 | 
 | 
 | ||||||
| 
 | 
 | 
 | 
 | 
 | 
 | ной потере корней | 
 | |||
| 
 | 
 | 
 | true | 
 | 
 | Управляет выводом сообщения о | ||||
| 
 | solve_inconsistent_error | 
 | true | 
 | несовместности | системы уравне- | ||||
| 
 | 
 | false | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | ний. | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
8
 
Решение дифференциальных уравнений
Возможности Maxima по решению дифференциальных уравнений большим разнообразием не отличаются. Но все же, Maxima умеет находить частные реше- ния линейных дифференциальных уравнений и их систем, а также общие и част- ные решения обыкновенных дифференциальных уравнений первого и второго по- рядков. Необходимо учитывать, что при работе с линейными дифференциальны- ми уравнениями Maxima требует задания функциональных зависимостей в явном виде, как для функций, так и для их производных, соответственно не f и `diff(f,x) а f(x) и `diff(f(x),x).
Для задания начальных условий служит функция atvalue (expr, x=a, c), кото- рая задает значение с выражению expr в точке x=a.
Итак, для решения линейных дифференциальных уравнений и их систем слу- жит функция desolve. В первом случае она вызывается desolve (eqn, f)
а во втором – desolve ([eqn_1,…, eqn_n], [f_1,…, f_n] )
9
