Раздел «Язык Си».MaximaIntro:

Система алгебраических вычислений Maxima

Источники и общие замечания

Download

Максима как калькулятор

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 числа с плавающей точкой

Константы

Переменные Константа up
%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 ]

Операции над матрицами

Системы линейных уравнений

(%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

Attachment sort Action Size Date Who Comment
Task-day1.odt manage 27.3 K 30 Apr 2015 - 14:08 TatyanaDerbysheva Задачи (2 варианта) к 1 занятию
Task-day2_2.odt manage 408.7 K 10 May 2015 - 17:44 TatyanaDerbysheva Задачи (2 варианта) к 2 занятию (графики)
test1-razb.mac manage 4.8 K 27 May 2015 - 13:38 TatyanaDerbysheva batch(path to file)