<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF82%3AMaxima</id>
		<title>LXF82:Maxima - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki2.linuxformat.ru/index.php?action=history&amp;feed=atom&amp;title=LXF82%3AMaxima"/>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;action=history"/>
		<updated>2026-05-13T22:25:59Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.11.1</generator>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6334&amp;oldid=prev</id>
		<title>Yaleks: иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6334&amp;oldid=prev"/>
				<updated>2008-12-30T10:28:07Z</updated>
		
		<summary type="html">&lt;p&gt;иллюстрация&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;amp;diff=6334&amp;amp;oldid=6211&quot;&gt;(Различия между версиями)&lt;/a&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6211&amp;oldid=prev</id>
		<title>Yaleks: викификация</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6211&amp;oldid=prev"/>
				<updated>2008-12-25T15:18:09Z</updated>
		
		<summary type="html">&lt;p&gt;викификация&lt;/p&gt;
&lt;a href=&quot;http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;amp;diff=6211&amp;amp;oldid=6210&quot;&gt;(Различия между версиями)&lt;/a&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	<entry>
		<id>http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6210&amp;oldid=prev</id>
		<title>Yaleks: Новая: {{Цикл/Maxima}} == Maxima – функции и операторы == ''ЧАСТЬ 2 Понять философию сложного пакета – уже половина дел...</title>
		<link rel="alternate" type="text/html" href="http://wiki2.linuxformat.ru/index.php?title=LXF82:Maxima&amp;diff=6210&amp;oldid=prev"/>
				<updated>2008-12-25T15:17:05Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: {{Цикл/Maxima}} == Maxima – функции и операторы == ''ЧАСТЬ 2 Понять философию сложного пакета – уже половина дел...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Цикл/Maxima}}&lt;br /&gt;
== Maxima – функции и операторы ==&lt;br /&gt;
''ЧАСТЬ 2 Понять философию сложного пакета – уже половина дела, однако, для того, чтобы уметь читать, надо хотя бы освоить азбуку. Сегодня '''Тихон Тарнавский''' расскажет вам об операторах (или функциях?) Maxima.''&lt;br /&gt;
&lt;br /&gt;
=== Операторы Максимы ===&lt;br /&gt;
Продолжаю знакомить вас с возможностями свободной программы символьных вычислений Maxima. Начну в этот раз с&lt;br /&gt;
краткого рассказа об основных операторах Maxima и некоторых их&lt;br /&gt;
свойствах.&lt;br /&gt;
&lt;br /&gt;
На самом деле в Максиме нет чёткого разграничения между операторами и функциями. Более того, каждый оператор – это на самом деле&lt;br /&gt;
функция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Здесь имена функций-операторов берутся в кавычки лишь потому,&lt;br /&gt;
что содержат символы, нестандартные для имён функций. Это похоже на&lt;br /&gt;
работу в командной оболочке Unix, где, если в имя файла входят управляющие символы, вы можете либо взять это имя в кавычки, либо экранировать каждый такой символ обратным слэшем. В Maxima допустимы те же&lt;br /&gt;
два варианта: например, вместо “+” можно было бы написать \+.&lt;br /&gt;
&lt;br /&gt;
Итак, все встроенные операторы максимы являются функциями;&lt;br /&gt;
более того, вы можете наделить любую (в том числе свою собственную)&lt;br /&gt;
функцию определёнными свойствами, которые фактически превратят её&lt;br /&gt;
в оператор. Подробнее об этом я расскажу в следующих выпусках.&lt;br /&gt;
&lt;br /&gt;
Таким образом, разделение на функции и операторы в Maxima&lt;br /&gt;
достаточно условно. Посему в этом разделе речь пойдёт не только о&lt;br /&gt;
некоторых операторах, но и о нескольких функциях, которые по природе&lt;br /&gt;
своих действий сходны с операторами. Наиболее привычные операторы&lt;br /&gt;
уже упоминались в предыдущей статье: +, –, *, /, ^ или ** (возведение&lt;br /&gt;
в степень) и функцию sqrt(x) (квадратный корень). Сегодня мы поговорим ещё о нескольких достаточно распространённых.&lt;br /&gt;
&lt;br /&gt;
Точкой обозначается матричное произведение. В документации&lt;br /&gt;
утверждается, что сама точка при этом должна быть отделена пробелами от обоих своих операндов – дабы не спутать её с точкой десятичной.&lt;br /&gt;
На самом деле мне не удалось добиться от Максимы неадекватной реакции и в «беспробельном» варианте; что и логично, так как всё равно эти&lt;br /&gt;
две разные ипостаси точки можно различить по контексту: ведь цифры&lt;br /&gt;
именами матриц быть не могут. Так что, думаю, можете смело писать и&lt;br /&gt;
без пробелов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В случае, если заданные матрицы не могут быть перемножены из-за&lt;br /&gt;
несовпадающих размерностей, Maxima выдаст сообщение об ошибке:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Восклицательный знак, стоящий после своего аргумента (т.е. постфиксный оператор), традиционно обозначает факториал. Не менее традиционно, двумя восклицательными знаками обозначен полуфакториал&lt;br /&gt;
[произведение всех четных (для четного операнда) или нечетных чисел,&lt;br /&gt;
меньших либо равных данному, – прим. ред.]. Функции abs(x) и&lt;br /&gt;
signum(x) возвращают, как опять же нетрудно догадаться, модуль и&lt;br /&gt;
знак числа. А функции max(x1,...,xn) и min(x1,...,xn) – соответственно максимальное и минимальное из заданных чисел.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тут стоит остановиться на нескольких моментах. Во-первых, все&lt;br /&gt;
функции и операторы Maxima работают не только с действительными,&lt;br /&gt;
но и комплексными числами. Сами комплексные числа записываются в&lt;br /&gt;
Максиме в алгебраической форме, с мнимой единицей, обозначенной&lt;br /&gt;
через %i; то есть в виде a+b*%i, где a и b – соответственно действительная и мнимая части числа.&lt;br /&gt;
&lt;br /&gt;
Так, факториал задан в наиболее общем виде и представляет собой,&lt;br /&gt;
по сути, гамма-функцию (точнее, x! = gamma(x+1)), то есть определён&lt;br /&gt;
на множестве всех комплексных чисел, кроме отрицательных целых.&lt;br /&gt;
При этом факториал от натурального числа (и нуля) автоматически&lt;br /&gt;
упрощается до натурального же числа:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Точно так же и модуль определён для всех комплексных чисел&lt;br /&gt;
(напомню, что |a+b*i|=sqrt(a2+b2)). Минимум, максимум и знак определены, естественным образом, только для действительных чисел, так как&lt;br /&gt;
комплексные числа общего вида, как известно, между собой&lt;br /&gt;
несравнимы.&lt;br /&gt;
&lt;br /&gt;
Второй важный момент: когда некоторая встроенная функция или&lt;br /&gt;
оператор Maxima не может получить для переданного выражения однозначный результат (ввиду недостаточности данных) – она пытается максимально упростить это выражение. (Для некоторых функций такое&lt;br /&gt;
автоупрощение регулируется специальными параметрами.) Например,&lt;br /&gt;
если x не задан:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Подобные упрощения, равно как и «раскрытие» факториалов и&lt;br /&gt;
арифметических операторов, не считаются вычислениями, а следовательно оператор блокировки вычислений их не предотвращает:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как вы, вероятно, помните, в прошлый раз кроме упомянутого только что оператора блокировки вычислений мы познакомились с оператором присвоения значений, или, иначе, именования выражений, : . В&lt;br /&gt;
Maxima существуют и другие операторы именования, из которых нам на&lt;br /&gt;
данный момент интересен один – оператор задания функции.&lt;br /&gt;
Обозначается он через :=, и аналогии здесь прослеживаются не с языками Pascal или Algol, как может показаться на первый взгляд, а с другими обозначениями самой Максимы: с одной стороны определение&lt;br /&gt;
функции можно воспринимать как уравнение (которое обозначается знаком =), а с другой – оно родственно назначению имени некоторому&lt;br /&gt;
выражению (то есть :). То есть определение функции можно в какой-то&lt;br /&gt;
мере считать симбиозом этих двух выражений – и оттого вполне логично, что оно обозначается обоими их символами. (В продолжение этой&lt;br /&gt;
аналогии могу добавить, что в Maxima есть и расширенные варианты&lt;br /&gt;
операторов присвоения и назначения функции, обозначаемые соответственно через :: и ::=.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Думаю, основы работы с функциями самоочевидны по аналогии с&lt;br /&gt;
приведенным примером, а подробнее об этом мы поговорим в следующих выпусках.&lt;br /&gt;
&lt;br /&gt;
=== Функция вычисления всего ===&lt;br /&gt;
А сейчас я расскажу о том, что было обещано в прошлый раз: о возможностях управлять процессом вычислений вводимых вами выражений. В&lt;br /&gt;
прошлый раз, о чём я уже вспоминал, было упомянуто только одно такое&lt;br /&gt;
средство – блокировка вычислений. Здесь всё достаточно просто и дополнительно стоит остановиться только на одном моменте. Если апострофом&lt;br /&gt;
предварён вызов функции (встроенной ли, пользовательской – несущественно), то блокируется вычисление самой функции, но не её аргументов.&lt;br /&gt;
Если же поставить апостроф перед выражением, заключённым в скобки,&lt;br /&gt;
то невычисленными останется всё это выражение целиком, т.е. и все входящие в него функции, и все аргументы этих функций. Например:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В противовес блокировке вычислений, можно также принудительно&lt;br /&gt;
вычислить любое выражение – для этого тоже существует оператор,&lt;br /&gt;
состоящий из двух апострофов:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В терминологии Maxima невычисленная форма выражения называется «noun form», вычисленная – «verb form». Сохраняя лингвистические параллели, на русский я бы это перевёл как «несовершённая форма» и «совершённая форма».&lt;br /&gt;
&lt;br /&gt;
Если говорить о ячейках ввода-вывода, то значение ячейки ввода в&lt;br /&gt;
Maxima закономерно сохраняется до его вычисления (т.е. в несовершённой форме), а значение ячейки вывода – после (т.е. в совершённой);&lt;br /&gt;
другими словами, тут сохраняется естественный порядок «ввод –&amp;gt;&lt;br /&gt;
вычисление –&amp;gt; вывод».&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как видите, операторы вычисления и блокировки вычислений имеют накопительный эффект. О другой стороне этого эффекта мы поговорим чуть ниже.&lt;br /&gt;
&lt;br /&gt;
Оператор, обозначенный двумя апострофами, является синонимом&lt;br /&gt;
к функции ev(выражение). Сама функция ev предоставляет гораздо&lt;br /&gt;
более широкие возможности, нежели простое принудительное вычисление заданного выражения: она может принимать произвольное число&lt;br /&gt;
аргументов, первый из которых – вычисляемое выражение, а остальные&lt;br /&gt;
– специальные опции, которые как раз и влияют на то, как именно будет&lt;br /&gt;
производиться вычисление. Точно так же, как двойной апостроф –&lt;br /&gt;
сокращение для ev без дополнительных опций, есть ещё более упрощённая запись функции ev с опциями: в этом случае вместо имени функции&lt;br /&gt;
и скобок вообще ничего писать не нужно; т.е. «ev(выражение, опц1,опц2, ...)» можно записать просто как «выражение, опц1, опц2,&lt;br /&gt;
...».&lt;br /&gt;
&lt;br /&gt;
Первая из таких опций связана с автоупрощением. Глобально автоупрощение регулируется переключателем simp (от «simplification» –&lt;br /&gt;
упрощение), и по умолчанию оно включено; в любой момент его можно&lt;br /&gt;
выключить, установив значение переключателя в false. Опция функции&lt;br /&gt;
ev, одноимённая этому переключателю, позволяет включить упрощение&lt;br /&gt;
для данного конкретного вычисления – вне зависимости от того, включено или выключено оно глобально:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тут нужно отметить ещё, что вызов kill(all) не восстанавливает&lt;br /&gt;
умолчательные значения переключателей; т.е. если мы, к примеру,&lt;br /&gt;
изменили значение переключателя simp, как в примере выше, то для&lt;br /&gt;
того, чтобы вернуться к изначальному порядку вещей, установленному&lt;br /&gt;
сразу после запуска Maxima, нам нужно не только сделать kill(all), но&lt;br /&gt;
и вручную назначить simp:true.&lt;br /&gt;
&lt;br /&gt;
Опция diff принудительно раскрывает все производные и полные&lt;br /&gt;
дифференциалы; а опция derivlist(x, y, ..., v) – производные относительно переменных, заданных в качестве её аргументов, а также полные&lt;br /&gt;
дифференциалы (так как они не зависят ни от каких переменных):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Как видите, если из нескольких переменных из diff в derivlist()&lt;br /&gt;
заданы не все, то раскрывается производная только по заданным переменным; это и понятно, так как выражения diff(f, x, 1, y, 1), diff(diff(f,x), y) и diff(diff(f, y), x) математически эквивалентны [по крайней&lt;br /&gt;
мере, для «хороших» функций, – прим.ред]. Если же аргумент опции&lt;br /&gt;
derivlist() вообще не является переменной дифференцирования, он&lt;br /&gt;
просто игнорируется.&lt;br /&gt;
&lt;br /&gt;
Опция nouns раскрывает вообще все несовершённые формы – и&lt;br /&gt;
производные в том числе:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опция float преобразовывает все рациональные числа в конечную&lt;br /&gt;
десятичную запись; опция numer включает опцию float и, кроме того,&lt;br /&gt;
приводит к десятичному виду многие математические функции от числовых аргументов:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Опция noeval блокирует сам этап вычисления как таковой; т.е. её&lt;br /&gt;
можно использовать для того, чтобы применить к выражению другие&lt;br /&gt;
опции функции ev, не перевычисляя его. При этом опять-таки нужно&lt;br /&gt;
понимать разницу между вычислением и упрощением:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Таким образом, мы можем принудительно упростить выражение, не&lt;br /&gt;
перевычисляя его.&lt;br /&gt;
&lt;br /&gt;
Опция eval – напротив, проводит дополнительно ещё один процесс&lt;br /&gt;
вычисления. Здесь стоит поговорить подробнее о накопительном&lt;br /&gt;
эффекте вычисления, который я уже демонстрировал выше. Так как в&lt;br /&gt;
Максиме значениями символов могут выступать самые разнообразные&lt;br /&gt;
выражения, то в эти выражения тоже могут входить некоторые символы,&lt;br /&gt;
которые тоже могут иметь свои значения; и такая цепочка «вложенных&lt;br /&gt;
значений» может продолжаться сколь угодно глубоко. Один вызов функции ev (без опции eval) опускается по этой цепочке в глубину на один&lt;br /&gt;
уровень:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Напомню, что здесь ev(y), eval является сокращённой записью от&lt;br /&gt;
ev(ev(y), eval), таким образом вычисление в этом выражении проводится трижды. Кроме того, хочу обратить ваше внимание на порядок&lt;br /&gt;
назначения выражений символам; здесь существенно, что на момент&lt;br /&gt;
задания каждого выражения входящий в него символ ещё не был определён – иначе в выражение автоматически подставлялся не сам символ,&lt;br /&gt;
а его значение. Таким образом, если бы мы произвели эти же назначения в обратном порядке, то значением символа y стало бы xm+6 – безо&lt;br /&gt;
всяких принудительных вычислений.&lt;br /&gt;
&lt;br /&gt;
В продолжение разговора о накопительном эффекте и «цепочных»&lt;br /&gt;
вычислениях придётся кстати переключатель infeval. Он заставляет ev&lt;br /&gt;
перевычислять выражение до тех пор, пока оно не перестанет изменяться при последующих вычислениях. В частности, этот переключатель&lt;br /&gt;
можно использовать и для того, чтобы разблокировать блокировку&lt;br /&gt;
вычислений любой глубины вложения:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В других ситуациях использовать этот переключатель следует с&lt;br /&gt;
осторожностью: не забывайте, что он может привести к зацикливанию.&lt;br /&gt;
&lt;br /&gt;
О других константных опциях и переключателях функции ev можно&lt;br /&gt;
узнать из ? ev и ? evflag, а мы наверняка ещё рассмотрим многие из&lt;br /&gt;
них позже, когда они будут более актуальны в контексте повествования.&lt;br /&gt;
&lt;br /&gt;
Кроме константных значений есть ещё несколько видов опций.&lt;br /&gt;
Первый из них – это имена специальных функций, которые занимаются&lt;br /&gt;
упрощением или преобразованием математических выражений. Будучи&lt;br /&gt;
упомянута по имени в качестве опции, такая функция просто применяется к вычисляемому выражению. Например, выражение, fullratsimp –&lt;br /&gt;
это то же самое, что и fullratsimp(ev(выражение)). Полный список&lt;br /&gt;
таких функций вы можете найти в ? evfun.&lt;br /&gt;
&lt;br /&gt;
Если в качестве опции ввести имя любой другой функции, не имеющей свойства evfun, то все несовершённые вхождения этой функции&lt;br /&gt;
будут заменены совершёнными, т.е. принудительно вычислены.&lt;br /&gt;
&lt;br /&gt;
{{Врезка&lt;br /&gt;
|Заголовок=АДРЕСА В ИНТЕРНЕТЕ&lt;br /&gt;
|Содержание=&lt;br /&gt;
; Сайт проекта Maxima: http://maxima.sourceforge.net/&lt;br /&gt;
; Сайт iMaxima: http://members3.jcom.home.ne.jp/imaxima/&lt;br /&gt;
; Сайт Kayali: http://kayali.sf.net/&lt;br /&gt;
; Сайт Symaxx: http://symaxx.sf.net/&lt;br /&gt;
; Web-интерфейс к Максиме: http://www.et.byu.edu/~koj/maxima.html&lt;br /&gt;
|Ширина=250px}}&lt;br /&gt;
Также в качестве опции можно задать назначение символа или функции; все такие назначения действуют локально в пределах вычисляемого выражения, и все подстановки производятся параллельно:&lt;br /&gt;
&lt;br /&gt;
Опция подстановки символа допустима не только в виде оператора&lt;br /&gt;
присвоения, но и в виде равенства; сделано это, в частности, для того,&lt;br /&gt;
чтобы в качестве подстановок можно было использовать решения, найденные функцией solve:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вот и всё на сегодня. В следующий раз мы начнём с уже упомянутых вскользь функций по упрощению и преобразованию выражений.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|center|&lt;br /&gt;
|Заголовок=О РАБОТЕ В МАТЕМАТИЧЕСКОМ РЕЖИМЕ ВВОДА РЕДАКТОРА TEXMACS&lt;br /&gt;
|Содержание=Первое слово – про апостроф, который используется в Maxima для блокировки вычислений. В математическом режиме привычной клавишей&lt;br /&gt;
вводится несколько другой «апостроф», обозначающий производную.&lt;br /&gt;
Поэтому для ввода апострофа, блокирующего вычисления, нужно внутри математического режима ввода создать поле текстового ввода – и уже&lt;br /&gt;
в нём ввести обычный текстовый апостроф. По умолчанию это делается&lt;br /&gt;
комбинацией клавиш A-$, что в зависимости от настроек TeXmacs может&lt;br /&gt;
расшифровываться как Alt+Shift+4 или Win+Shift+4. После ввода апострофа можно с помощью стрелки влево выйти из поля текстового ввода и&lt;br /&gt;
продолжать пользоваться всеми прелестями ввода математического.&lt;br /&gt;
&lt;br /&gt;
И второе слово – насчёт ввода различных символов, к которым в математическом режиме либо в самом TeXmacs привязаны некоторые клавиатурные сокращения, т.е. при простом нажатии на клавишу обычные&lt;br /&gt;
символы не вводятся, а вместо этого происходит некое другое привязанное к этой клавише действие. Среди таких переназначенных символов, к&lt;br /&gt;
примеру, – «$» и «\». Для того, чтобы отменить специальное действие и&lt;br /&gt;
вместо него просто ввести обозначенный на клавише символ, нужно&lt;br /&gt;
непосредственно перед этой клавишей нажать Shift+F5.&lt;br /&gt;
&lt;br /&gt;
То же самое можно сказать и про кавычку, к которой уже глобально в&lt;br /&gt;
TeXmacs привязан по умолчанию ввод «фигурных» кавычек. Здесь есть&lt;br /&gt;
два варианта: либо предварить ввод кавычки нажатием той же самой&lt;br /&gt;
комбинации Shift+F5; либо поменять умолчательное поведение редактора с помощью пункта меню Редактировать –&amp;gt; Предпочтения –&amp;gt;&lt;br /&gt;
Клавиатура –&amp;gt; Автоматические кавычки –&amp;gt; Никаких – правда, тогда перед&lt;br /&gt;
вводом кавычки придётся, так же как и для апострофа, переходить внутри математического режима в текстовый.&lt;br /&gt;
|Ширина=}}&lt;br /&gt;
&lt;br /&gt;
{{Врезка|center|&lt;br /&gt;
|Заголовок=ИНТЕРФЕЙСЫ К MAXIMA&lt;br /&gt;
|Содержание=Кроме двух описанных в прошлый раз интерфейсов к Максиме –&lt;br /&gt;
wxMaxima и TeXmacs, – есть, как уже говорилось, и другие варианты, о&lt;br /&gt;
которых я сейчас и расскажу.&lt;br /&gt;
&lt;br /&gt;
Начнём с консольного интерфейса, доступного по команде Maxima;&lt;br /&gt;
он выполнен в традиционном стиле командной строки: на экране чередуются вводимые вами команды и ответы системы на них (рис. 1).&lt;br /&gt;
Интерфейс, как видите, достаточно незамысловат, но тем не менее все&lt;br /&gt;
формулы, даже достаточно сложные, вполне читабельны. Графические&lt;br /&gt;
возможности в чистой консоли недоступны совсем: графики функций,&lt;br /&gt;
к примеру, могут быть изображены только всё теми же текстовыми&lt;br /&gt;
символами. Если же запустить консольную Максиму в X-терминале, то&lt;br /&gt;
графики могут отображаться в отдельных окнах – так же, как и в любом&lt;br /&gt;
из графических интерфейсов. Единственный реальный плюс консольного интерфейса – это минимальные требования к ресурсам. В остальном всё, как видите, довольно аскетично.&lt;br /&gt;
&lt;br /&gt;
Самый примитивный из графических интерфейсов, – XMaxima&lt;br /&gt;
(рис. 2). На иллюстрации верхняя половина окна – это собственно рабочая область, нижняя – помощь. Кроме этого отдельного окна помощи&lt;br /&gt;
XMaxima практически ничем не отличается от консольного собрата,&lt;br /&gt;
если тот запущен в X. Посему и тут долго задерживаться не будем.&lt;br /&gt;
&lt;br /&gt;
А рассмотрим следующий интерфейс – Maxima-Emacs. Он, как&lt;br /&gt;
нетрудно догадаться, запускает сессию Максимы в буфере широко&lt;br /&gt;
известного редактора Emacs. В результате вызова в редакторе команды&lt;br /&gt;
Maxima (M-x Maxima) создаётся новый буфер по имени *Maxima*, в&lt;br /&gt;
котором и запускается сессия. После этого становятся доступными&lt;br /&gt;
довольно многочисленные команды взаимодействия с Maxima (рис. 3).&lt;br /&gt;
Привязав эти команды к клавишам на свой вкус, приверженцы этого&lt;br /&gt;
мега-редактора смогут получить внутри него довольно-таки удобный и&lt;br /&gt;
богатый возможностями интерфейс (надо сказать, многие команды&lt;br /&gt;
привязаны к определённым клавишам сразу, но не факт, что умолчательная привязка всем понравится, тем более, что речь о таких любителях настройки всего и вся под свой комфорт, как пользователи Emacs).&lt;br /&gt;
К примеру, на клавишу «Tab», которая в режиме Maxima не задействована, можно повесить команду Maxima-complete – и получить на привычном месте полноценное автодополнение (по умолчанию эта команда подвешена на M-Tab (Alt-Tab), что многим может быть неудобно, так&lt;br /&gt;
как эта комбинация, как известно, часто бывает назначена на переключение между окнами). Правда, этот интерфейс также лишён графической отрисовки формул, но все графические возможности самой&lt;br /&gt;
Maxima в нём, в случае запуска в X-версии редактора, естественно,&lt;br /&gt;
доступны. Кроме того, интересен он не столько сам по себе, сколько во&lt;br /&gt;
взаимодействии ещё с одним интерфейсом, о котором чуть ниже.&lt;br /&gt;
&lt;br /&gt;
Следующие два интерфейса – EMaxima и iMaxima – также являются режимами редактора Emacs. Первый – скорее не самостоятельный&lt;br /&gt;
режим, а надстройка над режимом LaTeX, которая наверняка понравится тем, кто использует Emacs для редактирования LaTeX-документов. В отличие от режима Maxima, который предназначен для обычного изолированного запуска полноценной Maxima-сессии, здесь речь&lt;br /&gt;
идёт о возможности вставлять отдельные команды Maxima и, естественно, результаты их вычислений, прямо в редактируемый LaTeX-документ. Для работы этого режима понадобится также расширение&lt;br /&gt;
tex-site; для Emacs оно входит в пакет auctex, для XEmacs21 – в пакет&lt;br /&gt;
xEmacs21-basesupport. Вызывается режим, как обычно, соответственно его названию – командой EMaxima-mode (M-x EMaxima-mode).&lt;br /&gt;
Возможности этого режима достаточно богаты, прочитать о них (точно так же как и о режиме Maxima) можно в Maxima-book, которая&lt;br /&gt;
входит в состав стандартной документации, находящейся, в зависимости от дистрибутива, в пакете Maxima или Maxima-doc. Эта часть&lt;br /&gt;
может быть также доступна в виде отдельного файла; например, в&lt;br /&gt;
Debian это /usr/share/doc/Maxima-doc/EMaximaIntro.ps.gz. Остальную&lt;br /&gt;
информацию в Maxima-book я вам читать не советую – она всё-таки&lt;br /&gt;
очень устарела (обновлена 19 сентября 2004 года); лучше обратиться&lt;br /&gt;
к info-страницам или html-документации, которые доступны всё в том&lt;br /&gt;
же пакете Maxima либо Maxima-doc, а последняя ещё и на сайте проекта. К примеру, в простейшем случае вы можете создать ячейку&lt;br /&gt;
Maxima комбинацией C-c C-o («o» от фразы «open cell»), ввести в ней&lt;br /&gt;
любую команду или набор команд Максимы в простой текстовой&lt;br /&gt;
нотации и получить результат вычисления этой команды либо в обычном текстовом виде нажатием C-c C-u c, либо в LaTeX-виде с помощью C-c C-u C (т.е. Ctrl-c Ctrl-u Shift-c). Здесь «u c» происходит от&lt;br /&gt;
«update cell»; а смежные команды, генерирующие вывод в простой&lt;br /&gt;
текстовой форме и в форме LaTeX, всегда привязаны в Emaxim’е к&lt;br /&gt;
одинаковым строчной и заглавной буквам соответственно.&lt;br /&gt;
&lt;br /&gt;
Последний Emacs-интерфейс к Maxima – iMaxima – отличается от&lt;br /&gt;
остальных рассмотренных в этот раз самостоятельным (а не посредством LaTeX-документа, как в EMaxima) графическим представлением&lt;br /&gt;
математических формул. Собственно, именно для этого он и создан, и&lt;br /&gt;
единственная его функциональность заключается именно в отображении в графическом виде TeX-кода, генерируемого Maxima. Этот режим&lt;br /&gt;
можно настроить таким образом, чтобы внутри него запускался режим&lt;br /&gt;
Maxima (т.е. Maxima-Emacs), и пользоваться всеми командами последнего и их клавиатурными привязками. Т.е. фактически режим iMaxima&lt;br /&gt;
в таком варианте можно рассматривать как графический интерфейс&lt;br /&gt;
уже над Maxima-Emacs; именно это может добавить дополнительной&lt;br /&gt;
привлекательности последнему. В отличие от всех рассмотренных&lt;br /&gt;
выше интерфейсов, iMaxima – сторонний проект, разрабатываемый&lt;br /&gt;
отдельно; начиная со второй половины прошлого года iMaxim’ой занимается новый автор, и на данный момент проект активно развивается.&lt;br /&gt;
Для его установки вам понадобится дополнительно установить пакет&lt;br /&gt;
breqn, отвечающий за перенос строк в математических формулах в&lt;br /&gt;
формате LaTeX. Инструкцию по установке самой iMaxima и breqn вы&lt;br /&gt;
можете найти на сайте проекта (адрес см. во врезке).&lt;br /&gt;
&lt;br /&gt;
Кроме всех рассмотренных, существуют ещё два интерфейса к&lt;br /&gt;
Максиме: Symaxx и Kayali. Но учитывая, что оба проекта довольно давно не подают признаков жизни (Kayali находится на стадии альфа-версии, последнее обновление которой вышло 6 июня 2005 года; а Symaxx&lt;br /&gt;
не обновлялся с 17 декабря 2001 года), то они не достойны большего,&lt;br /&gt;
чем просто упоминание. Кроме того, существуют полноценные web- и&lt;br /&gt;
telnet-интерфейсы к Maxima, благодаря которым вы можете поработать&lt;br /&gt;
с нею, не имея даже её у себя на компьютере, прямо через Интернет.&lt;br /&gt;
&lt;br /&gt;
Как видите, способность Maxima взаимодействовать с внешними&lt;br /&gt;
интерфейсами используется достаточно широко – есть из чего выбрать&lt;br /&gt;
тот интерфейс, который лучше всего подойдёт именно вам.&lt;br /&gt;
|Ширина=}}&lt;/div&gt;</summary>
		<author><name>Yaleks</name></author>	</entry>

	</feed>