- •Работа с выражениями
- •Создание графических изображений
- •Решение уравнений, систем и неравенств
- •Пределы и ряды
- •Дифференцирование и интегрирование
- •Операции с матрицами
- •Логические выражения
- •Система символьной математики Maxima
- •Работа с выражениями
- •Алгебраические преобразования
- •Решение уравнений
- •Определение функций
- •Построение графиков
- •Операции математического анализа
- •Матричные вычисления
- •Программирование в системе Maxima
Определение функций
Для определения функции следует указать ее имя, аргумент (или аргументы), заключенный в круглые скобки, символы := и саму функцию, например,
C1) p(x):= x^2+3*x-8;
2
(D1) p(x) := x + 3 x - 8
(C2) p(2*x);
2
(D2) 4 x + 6 x - 8
(C3) factor(p(2*x-4));
2
(D3) 2 (2 x - 5 x - 2)
(C4) f(x):=sin(x);
(D4) f(x) := SIN(x)
(C5) g(x):=log(x);
(D5) g(x) := LOG(x)
(C6) f(g(x));
(D6) SIN(LOG(x))
(C7) g(f(x));
(D7) LOG(SIN(x))
(C8) dist(x,y):=sqrt(x^2+y^2);
2 2
(D8) dist(x, y) := SQRT(x + y )
(C9) dist(3,4);
(D9) 5
Функция может быть задана и подобным образом:
(C10) eta(x,y):= if x = y then x
else (if x > y then x-y else x+y);
(D10) eta(x, y) := IF x = y THEN x ELSE
(IF x > y THEN x - y ELSE x + y)
(C11) eta(5,6);
(D11) 11
(C12) eta(eta(7,7), eta(1,2));
(D12) 4
Построение графиков
Графики строятся при помощи функции plot2d, например,
(C1) plot2d([2*sin(x), cos(x)], [x, -2*%PI, 2*%PI]);
увеличить изображение
Для построения изображений трехмерных объектов используется функция plot3d. Вот как, например, запишется функция для рисования листа Мебиуса:
(C2) plot3d([cos(x)*(3+y*cos(x/2)),
sin(x)*(3+y*cos(x/2)), y*sin(x/2)],
[x,-%pi,%pi],[y,-1,1],['grid,40,15]);
В левом верхнем углу рисунка находится меню (появляющееся при подведении курсора). Оно содержит ряд опций для сохранения рисунка и его преобразований. Ниже приводятся два рисунка, соответствующие рассматриваемой с разных точек римановой поверхности.
(C3) Plot3d(r^.33*cos(th/3),[r,0,1],[th,0,6*%pi],
['grid,12,80],
['transform_xy,polar_to_xy],
['view_direction,1,1,1.4],
['colour_z,true]);
|
|
Операции математического анализа
Maxima может вычислять производные и интегралы, раскладывать функции в ряды Тейлора, вычислять пределы и находить точные решения обыкновенных дифференциальных уравнений.
Для нахождения производной используется функция diff, первым аргументом которой является функция, вторым - переменная, по которой производится дифференцирование, и третьим (необязательным) - порядок производной:
(C1) f:(x-2*sqrt(x))/x^2;
x - 2 SQRT(x)
(D1) -------------
2
x
(C2) diff(f, x);
1
1 - -------
SQRT(x) 2 (x - 2 SQRT(x))
(D2) ----------- - -----------------
2 3
x x
(C3) expand("c2);
3 1
(D3) ---- - --
5/2 2
x x
(C4) g:x^6;
6
(D4) x
(C5) diff(g, x, 1);
5
(D5) 6 x
(C6) diff(g, x, 4);
2
(D6) 360 x
При вычислении кратных производных по нескольким переменным после указания функции перечисляются переменные дифференцирования с указанием соответствующих кратностей, например,
(C7) diff(x^6*y^3, x, 4, y, 2);
2
(D7) 2160 x y
Функция integrate позволяет вычислять интегралы. Для нахождения неопределенного интеграла после функции указывается единственный аргумент - переменная интегрирования:
(C8) f:x^2/(4*x^6+1);
2
x
(D8) --------
6
4 x + 1
(C9) integrate(f, x);
3
ATAN(2 x )
(D9) ----------
6
Maxima в случае неоднозначного ответа может задавать дополнительные вопросы, как в следующем примере:
(C10) integrate(x^n,x);
Is n + 1 zero or nonzero?
nonzero;
n + 1
x
(D10) ------
n + 1
(C11) integrate(x^n,x);
Is n + 1 zero or nonzero?
zero;
(D11) LOG(x)
Можно использовать функцию assume для задания дополнительных условий (не забывайте затем удалить наложенные ограничения):
(C12) assume(notequal(n,-1));
(D12) [NOT EQUAL(n, - 1)]
(C13) integrate(x^n,x);
n + 1
x
(D13) ------
n + 1
(C14) forget(notequal(n,-1));
(D14) [NOT EQUAL(n, - 1)]
(C15) integrate(x^n,x);
Is n + 1 zero or nonzero?
zero;
(D15) LOG(x)
Для нахождения определенного интеграла следует указать дополнительные агрументы - пределы интегрирования:
(C16) integrate(x^2, x, 0, 6);
(D16) 72
(C17) integrate(sin(x), x, 0, %PI);
(D17) 2
(C18) integrate(integrate(x*y, x, 1, 3), y, 0, 4);
(D18) 32
Maxima допускает задание и бесконечных пределов интегрирования. Для обозначения бесконечности используется переменная INF (inf):
(C19) integrate(1/x^2, x, 1, inf);
(D19) 1
(C20) integrate(1/(1+x^2), x, -inf, inf);
(D20) %PI
(C21) integrate(1/x, x, 0, inf);
Integral is divergent - an error.
Quitting. To debug this try DEBUGMODE(TRUE);)
В последнем примере система сообщила о невозможности вычисления интеграла, т. к. он расходится (is divergent).
При вычислении достаточно сложных интегралов ответ не всегда будет представлен в наиболее простом виде. В следующем примере Maxima не может в символьном виде получить ответ, равный PI/4:
C22) g:1/sqrt(2-x^2);
1
(D22) ------------
2
SQRT(2 - x )
(C23) integrate(g,x, 0,1);
SQRT(2)
(D23) ASIN(-------)
2
Для вычисления конечных и бесконечных сумм следует записать сумму в символьном виде, после чего упростить полученное выражение:
(C24) sum(1/n^2,n,1,inf);
INF
====
\ 1
(D24) > --
/ 2
==== n
n = 1
(C25) %,simpsum;
2
%PI
(D25) ----
6
Maxima способна находить разложение функций в ряд Тейлора. Получим многочлен Тейлора порядка 4 для функции f(x)=ln x в точке x=1:
(C26) g:log(x);
(D26) LOG(x)
(C27) taylor(g,x,1,4);
2 3 4
(x - 1) (x - 1) (x - 1)
(D27)/T/ x - 1 - -------- + -------- - -------- + ...
2 3 4
Для вычисления пределов используется функция limit:
(C28) limit(1/x,x,inf);
(D28) 0
Для вычисления односторонних пределов используется дополнительный параметр, принимающий значение plus для вычисления предела справа и minus - слева.
Пример
Исследуем на непрерывность функцию arctg(1/(x-4)). Эта функция не определена в точке x = 4. Вычислим пределы справа и слева:
(C28) limit(atan(1/(x-4)), x, 4, plus);
%PI
(D28) ---
2
(C29) limit(atan(1/(x-4)), x, 4, minus);
%PI
(D29) - ---
2
Как видим, точка x = 4 является точкой разрыва I рода для данной функции, так как существуют пределы слева и справа, равные -PI/2 и PI/2 соответственно.
Задания
Вычислите первую производную функции tg2(x4 - 2)
Найдите предел при x -> 0 функции (3x - sin x)/tg 2x
Найдите одну из первообразных функции cos2 x
