Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Введение в пакет Maxima2

.pdf
Скачиваний:
37
Добавлен:
13.02.2015
Размер:
551.66 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Федеральное государственное образовательное учреждение высшего профессионального образования

«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

С.М. Кузьменко

Введение в систему аналитических вычислений 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