Система алгебраических вычислений Maxima
Источники и общие замечания
- Существует как оконная, так и строго консольная версия продукта. В оконной вместо Enter нужно нажимать Ctrl+Enter для выполнения выражения.
- ; - показать результаты
- $ - молчать (в случае длинного ненужного вывода)
- http://srv6.crec.mipt.ru/drupal/?q=node/126 - Описание ресурса на кафедре Вычислительной математики
- Intoduction to Maxima - на английском
- 10 minute (wx)Maxima tutorial_cp1251.wxm - (wx)Maxima за 10 минут (русский, cp1251)
- 10 minute (wx)Maxima tutorial_utf8.wxm - (wx)Maxima за 10 минут (русский, utf8)
Download
- maxima-sbcl-5.35.1.2.exe - Windows
- maxima-5.35.1-1.i386.rpm - Linux
- Maxima-5.30.0.dmg - Mac
- https://play.google.com/store/apps/details?id=jp.yhonda - Android
Максима как калькулятор
Input | Output | Описание |
---|---|---|
1+1; | 2 | посчитать значение выражение 1+1 в численном виде |
2**3 | 8 | 2 в степени 3 |
5!; | 120 | вычисляет факториал |
% * 10; | 1200 | предыдущее значение % умножает на 10 |
%o1 * 100; | 12000 | значение %o1 (результат первого вычисления) |
1 / 3; | 1/3 | пытаемся сохранить точность, не приводя результат к числовой форме |
1.0 / 3.0; | 0.3333333333333333 | числа с плавающей точкой |
- В случае "1.0/3.0" мы используем числа с плавающей точкой, соответственно и результат получается в форме с плавающей точкой.
Константы
Переменные | Константа ![]() |
---|---|
%pi | пи |
%i | мнимая единица |
%e | e |
Определения переменных и функций
y:sin(x);
sin(x)
Сохранили выражение под именем y.
cos(3+4);
cos(7)
Храним точность
cos(3+4),numer;
0.7539022543433046
Посчитали значение выражения
f(x):=sin(x);
f(x):=sin(x)
Создали функцию с именем f.
f(a+b);
sin(a+b)
Значением аргумента может быть выражение.
Производные
y:sin(x); diff(y,x)
sin(x)
cos(x)
Значением аргумента может быть выражение.
Input | Output |
---|---|
f(x) := x^2; | x2 |
diff(f(x), x); | 2x |
g(y) := sin(y); | sin(y) |
g(f(x)); | sin(x2) |
diff( g(f(x)) , x); | 2x cos(x2) |
Интегралы
integrate(z*z+1/(z*z), z);
z^3/3-1/z
Посчитаем его на [1, 2] integrate(z*z+1/(z*z), z, 1, 2);
17/6
Работа с выражениями
Привести к общему знаменателю
factor(1/x + 1/(x+1));
(2*x+1)/(x*(x+1))
Раскрыть степень
expand((x+z)^4);
z^4+4*x*z^3+6*x^2*z^2+4*x^3*z+x^4
Как разумнее писать:
b:expand((x+z)^4);
z^4+4*x*z^3+6*x^2*z^2+4*x^3*z+x^4
b, x=1;
z^4+4*z^3+6*z^2+4*z+1
b, x=1, z=3;
256
Упросить выражение
((x - 1)^(3/2) - (x + 1)*sqrt(x - 1))/sqrt((x - 1)*(x + 1));
ratsimp(%);
(2*sqrt(x-1))/sqrt(x^2-1)
Раскрыть, свернуть или упростить тригонометрическое выражение
trigexpand(sin(x+z));
cos(x)*sin(z)+sin(x)*cos(z)
trigreduce( cos(x)*sin(z)+sin(x)*cos(z) )
=sin(z+x)=
=trigsimp(); =
==
Упрощает, учитывая, что sin^2 + cos^2 = 1
Решить уравнение
solve(a*x^2 + b*x + c = 0, x);
[x=-(sqrt(b^2-4*a*c)+b)/(2*a),x=sqrt(b^2-4*a*c)-b/(2*a)]
Систему нелинейных уравнений
EQ:[4*x^2-y^2=12, x*y-x=2];
[4*x^2-y^2=12,x*y-x=2]
solve (EQ, [x,y]);
[[x=2,y=2],[x=0.5202594388652008*%i-0.1331240357358706,y
0.07678378523787788-3.608003221870287*%i],[x=-0.5202594388652008*%i-
0.1331240357358706,y=3.608003221870287*%i+0.07678378523787788],[x=-
1.733751846381093,y=-0.1535675710019696]]= Проверим второе уравнение, подставив в его левую часть первое решение
ev(x*y-x, %[1])
2
Решение нелинейного уравнения пакетом minpack_solve
Сначала загружаем нужные пакетыload(basic)$
load(linearalgebra)$
load(minpack)$
Потом описываем уравнение в виде E=0 и задаем E. Проверяем, что записали его правильно.
E:1-x-sin(x)/3;
Вызываем метод и сохраняем решение в S
S:minpack_solve([E], [x], [0]);
[[.7579081525367539], 2.775557561562891E-17, 1]
Проверяем, что решение верное, подставляя найденный корень S[1] в уравнение E:
E, x=S[1];
[0.0]
Решение верное.
Матрицы
Создание матрицы
(%i1) X:matrix([17, 3], [-8, 11]); [ 17 3 ] (%o1) [ ] [ - 8 11 ] (%i2) Y:matrix ([1,2], [2,1]); [ 1 2 ] (%o2) [ ] [ 2 1 ]
Операции над матрицами
- A: X + Y; // A[i][j] = X[i][j] + Y[i][j]
- A: X - Y; // A[i][j] = X[i][j] - Y[i][j]
- A: X * Y; // A[i][j] = X[i][j] * Y[i][j]
- Xi : X^^(-1) // Обратная матрица
- Xt :
transpose
(X); // Транспонированная матрица -
determinant
(X); // Детерминант матрицы -
rank
(X); // Ранг матрицы -
minor
(M, row, col); // минор матрицы, удаляем из матрицы строку row и столбец col
Системы линейных уравнений
(%i7) A.X=C; [ x2 + 2 x1 ] [ 3 ] (%o7) [ ] = [ ] [ 2 x2 + x1 ] [ 7 ]Обратная матрица А-1.A=E (единичная матрица). Значит решение уравнения A.X=C будет А-1.A.X = А-1.C. Найдем решение:
(%i8) A^^(-1).C; [ 1 ] [ - - ] [ 3 ] (%o8) [ ] [ 11 ] [ -- ] [ 3 ]
Построение графиков plot2d и plot3d
Рисуем функции
plot2d (sin(x), [x, -%pi, %pi]); plot2d ([sin(x), cos(x)], [x, -%pi, %pi]); plot2d ( x^2-1, [x, -3, 3], [y, -2, 10], [box, false], [plot_format, xmaxima])
Логарифмическая шкала
plot2d (exp(3*s), [s, -2, 2], [logy]);
Параметрически заданные кривые
r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5); plot2d([parametric, r*sin(t), r*cos(t),[t, -8*%pi, 8*%pi], [nticks, 2000]]); plot2d([[parametric, cos(t), sin(t),[t,0,2*%pi], [nticks, 80]], abs(x)], [x,-2,2], [y, -1.5, 1.5])
Дискретный набор точек
Список по оси Х и по оси У, по умолчанию точки соединяем линией.plot2d ([discrete, [10, 20, 30, 40, 50], [.6, .9, 1.1, 1.3, 1.4]])Список точек, линией НЕ соединяем.
plot2d([discrete, [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]], [style, points])
Много разных графиков
xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]] plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50], [style, points, lines], [color, red, blue], [point_type, asterisk], [legend, "experiment", "theory"], [xlabel, "pendulum's length (cm)"], [ylabel, "period (s)"])
Метод наименьших квадратов
Сначала нужно загрузить модульlsquares
load (lsquares)$Зададим набор точек (x, y) матрицей
M : matrix ([1, 1], [2, 7/4], [3, 11/4], [4, 13/4]);Проводим через точки функцию y=a*x^b+c и подбираем коэффициенты a, b, c так, чтобы отклонение от точек было минимальным:
lsquares_estimates (M, [x,y], y=a*x^b+c, [a,b,c], initial=[3,3,3], iprint=[-1,0]);M - матрица точек, по которой строим,
[x, y] - какие координаты заданы в матрице М,
y=a*x^b+c - функция, которую пытаемся провести через точки матрицы М
[a,b,c] - список неизвестных коэффициентов, которые ищем
initial=[3,3,3] - с каких значений коэффициентов [a,b,c] начинаем искать наилучшую функцию -- TatyanaDerbysheva - 30 Apr 2015
- Task-day1.odt: Задачи (2 варианта) к 1 занятию
- Task-day2_2.odt: Задачи (2 варианта) к 2 занятию (графики)
- test1-razb.mac: batch(path to file)