Показаны сообщения с ярлыком maxima. Показать все сообщения
Показаны сообщения с ярлыком maxima. Показать все сообщения

четверг, 21 декабря 2017 г.

Онлайн расчёты

Мой интерес к десктопным математическим программам в эпоху развития интернет-сервисов выглядит немного архаично. Чтобы это исправить, приведу подборку ссылок на доступные онлайн ресурсы. 

пятница, 15 декабря 2017 г.

Maxima. Динамические системы

Для решения задач теории управления в Maxima имеется пакет coma, который содержит набор функций, упрощающих данную работу. Скачать руководство (на английском), а также сам пакет (при необходимости), можно по данной ссылке. 

Пакет использует ряд соглашений: параметр Лапласа всегда обозначается через s, время - t, частота - omega, если аргументом выражения является передаточная функция, то оно может обрабатывать и список функций.

пятница, 21 июля 2017 г.

Maxima. Ускорение

Каждый раз при вызове пользовательской функции Maxima выполняет её разбор, что не существенно для однократного вызова, но может сказаться при работе в цикле. Однако, есть возможность ускорить (теоретически) вычисления с помощью трансляции или компиляции функций.

среда, 19 июля 2017 г.

Maxima. Сохранение сессии

Maxima предоставляет ряд функций для сохранения как всей текущей сессии, так и отдельный выражений. Есть возможность даже использовать форматы TeX и Fortran, но мы рассмотрим только основные варианты, предназначенные для работы в самой системе Maxima.

суббота, 16 апреля 2016 г.

Maxima. Скрипты

Было бы странно, если б такая умная система, как Maxima, не умела работать со скриптами... К счастью, она это умеет. Всё что нужно сделать для запуска скрипта, это вызвать функцию batch(имя_файла). Если файл лежит не в стандартных папках программы, может помочь дополнительная функция: batch(file_search(имя_файла)).

пятница, 9 октября 2015 г.

Liber est mutus magister

Опыт работы с кроссплатформенными математическими программами, а также желание им поделиться, появились у меня достаточно давно, и первоначально приняли форму hand-made книги "Математика for free", которую я выложил в интернете. Раньше я не публиковал в этом блоге ссылку на неё, т.к. материал частично повторялся. Кроме того, блог содержит значительно больше информации, чем книга. Тем не менее, возможно, кому-то удобнее иметь справку под рукой, чем каждый раз заходить в интернет, если так, вы можете скачать книгу с моего диска. Я писал её как справочник и сам периодически пользуюсь им, особенно, после длительных перерывов в работе. Буду рад, если она пригодится кому-то ещё :)

суббота, 2 мая 2015 г.

Maxima. Алгоритмизация

Для построения алгоритмов в Maxima предусмотрен ряд операторов. Начнём с ветвления. Оно реализуется в виде
if условие then выражение1 else выражение2
Если условий несколько, используйте оператор elseif:
if условие1 then выражение1 elseif условие2 then выражение2 ... else выражениеN

суббота, 25 апреля 2015 г.

Maxima. Работа с данными

Для загрузки данных из файла в Maxima имеется семейство функций read_, в частности, прочитать матрицу позволяет read_matrix(файл, разделитель). Разделитель необязателен (по умолчанию это пробел), но может принимать значения coma (запятая), semicolon (точка с запятой), space (пробел). Вместо имени файла обычно используется функция file_search(файл), которая возвращает полный путь к файлу (или false, если результат поиска отрицательный). Записать данные X в файл позволяет функция write_data(X, файл, разделитель). По умолчанию, разделителем также является пробел.

воскресенье, 19 апреля 2015 г.

Maxima. Пределы и ряды

Найти предел функции (но не достичь предела возможностей Maxima) позволяет функция
limit(выражение, переменная, предел, знак)
где последний параметр означает левый (-) или правый (+) предел и является необязательным (как, в принципе, и всё остальное, кроме самого выражения). Как обычно, inf означает бесконечность положительную, minf - отрицательную.

пятница, 10 апреля 2015 г.

Maxima. Дифференциальные уравнения

Для решения обыкновенных дифференциальных уравнений в Maxima служит функция 
ode2(выражение, y, x),
где y - искомая функция, x - независимая переменная. Выражение может быть дифференциальным уравнением первого или второго порядка. Данная функция умеет находить решения для различных типов уравнений:
первого порядка
- линейные;
- с разделяющимися переменными;
- однородные;
- уравнения в полных дифференциалах;
- уравнения Бернулли;
- обобщённые однородные уравнения;
второго порядка
- с постоянными коэффициентами;
- в полных дифференциалах;
- однородные линейные с постоянными коэффициентами, которые могут быть сведены к уравнениям с постоянными коэффициентами;
- уравнения Эйлера;
- уравнения, разрешимые методом вариации постоянных;
- уравнения, свободные от независимой переменной, допускающие понижение порядка. [Е.А. Чичкарёв, "Компьютерная математика с Maxima"]

суббота, 4 апреля 2015 г.

Maxima. Интегрируем и дифференцируем

Дифференцирование в Maxima можно выполнить с помощью функции
diff(выражение, x1, n1, x2, n2, ...),
где n - порядок производной по соответствующему аргументу x. 
Если ни одной переменной не указано, будет найден дифференциал. Для производной первого порядка n можно не писать.

пятница, 27 марта 2015 г.

Maxima. Символьные преобразования

Большинство рассмотренных ранее возможностей Maxima не являются чем-то уникальным и могут быть с той или иной степенью удобства повторены в других математических программах. В этом посте я хочу кратко осветить то, что является "коньком" программы, а именно, упрощение символьных выражений.

суббота, 21 марта 2015 г.

Maxima. Списки

В наследство от функционального программирования, и Lisp в частности, Maxima получила списки как базовую форму представления данных. Списком является группа элементов, разделённых запятыми и заключённых в квадратные скобки (совсем как в Python). Список может быть пустым или содержать любые другие элементы, в том числе вложенные списки. Запись
   list:[1,a,[x,y]]
определяет список list, состоящий из 3-х элементов, последний из который сам является списком. Обратиться к определённому элементу можно по индексу (начиная с 1):
   list[2] - a
   list[3] - [x,y]
   list[3][1] - x
Возможно, вы не планируете использовать в работе списки, но многие функции в Maxima возвращают результат именно в виде списков, поэтому нужно иметь представление о том, как с ними обращаться.

пятница, 20 марта 2015 г.

Maxima. Графики

Построить простейший график в Maxima не трудно, достаточно записать plot2d(функция, интервал), где интервал задаётся в виде [переменная, начало, конец]. Если нужно задать дополнительные параметры, имеет смысл воспользоваться инструментом для построения из меню "Графики - Plot 2d". 
Однако мы, как истинные джедаи, воспользуемся аутентичными средствами, т.е. будем вводить команды вручную.

суббота, 7 марта 2015 г.

Maxima. Уравнения

Корни алгебраических уравнений и систем в Maxima могут быть найдены с помощью функции
solve([ур-е1, ур-у2, ... ур-еN],[x1,x2,...xN])
где в левой части перечисляются уравнения, а в правой - переменные. Функция solve() также может быть использована и для поиска решений тригонометрических уравнений, но программа возвратит только один корень.

суббота, 28 февраля 2015 г.

Maxima. Матрицы

Работать с матрицами в Maxima хоть и не так удобно, как, скажем, в Freemat, но вполне возможно. Матрица задаётся с помощью выражения
matrix(стр1, стр2, ... стрN), 
где стр1 - стрN - списки элементов каждой из строк. В wxMaxima также можно воспользоваться меню "Алгебра" - "Enter matrix", затем указать имя, размер, тип матрицы и заполнить её элементы. Кстати, элементами могут быть не только числа, но и символьные переменные. Получить элемент (i,j) матрицы M можно с помощью выражений M[i,j] или M[i][j]. При этом индексация начинается с 1, т.е. M[1,1] - левый верхний угол.

суббота, 21 февраля 2015 г.

Maxima. Функции

Вот запись наиболее распространённых матиматических функций в версии Maxima.

abs(a) - модуль числа a.
sqrt(a) - квадратный корень из a.
exp(a) - экспоненциальная функция.
log(a) - натуральный логарифм.

random(t) - случайное число. Если t целое, вернёт целое число в интервале от 0 до t-1, если же t дробь, результатом также будет дробь из отрезка от 0 до t.

realpart(z) - действительная часть комплексного числа z.
imagpart(z) - мнимая часть комплексного числа z.

sin(a), cos(a), tan(a), cot(a) - синус, косинус, тангенс и котангенс числа a.
asin(a), acos(a), atan(a) - арксинус, арккосинус, арктангенс числа.

sinh(a), cosh(a), tanh(a), coth(a) - гиперболические синус, косинус, тангенс, котангенс.
asinh(a), acosh(a), atanh(a) - обратные тригонометрические функции.

суббота, 14 февраля 2015 г.

Maxima. Калькулятор

Конечно, Maxima умеет выполнять многие хитроумные операции, но ничто человеческое ей не чуждо. Поэтому, если вы просто хотите сосчитать, сколько будет шестью восемь, программа с лёгкостью это сделает. 

суббота, 7 февраля 2015 г.

Maxima. Скажи рутине "нет"

Во время учёбы больше всего мне нравилось заниматься преобразованием математических выражений. Я мог часами раскрывать скобки, домножать, сокращать, перегруппировывать и т.д., чтобы получить в конце "красивую" и удобную формулу. Процесс это в достаточной степени творческий, а творчество, как известно, состоит из вдохновения и рутины. Причём, последней значительно больше. 

Так вот, Maxima врядли поможет вам найти вдохновение, но точно избавит от рутины. Эта программа содержит инструменты для упрощения выражений, поиска корней, взятия интегралов и производных, работы с матрицами и ещё много чего другого... Maxima написана на Lisp и находится в родстве с такими монстрами, как Maple и Mathematica.