<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=Maxima</id>
		<title>Maxima - История изменений</title>
		<link rel="self" type="application/atom+xml" href="https://discopal.ispras.ru/index.php?action=history&amp;feed=atom&amp;title=Maxima"/>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Maxima&amp;action=history"/>
		<updated>2026-04-26T18:46:59Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.26.4</generator>

	<entry>
		<id>https://discopal.ispras.ru/index.php?title=Maxima&amp;diff=793&amp;oldid=prev</id>
		<title>WikiSysop: 1 версия</title>
		<link rel="alternate" type="text/html" href="https://discopal.ispras.ru/index.php?title=Maxima&amp;diff=793&amp;oldid=prev"/>
				<updated>2008-10-23T16:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Maxima''' — система компьютерной алгебры, реализованная на языке [[RuPedia:Лисп|Lisp]].&lt;br /&gt;
&lt;br /&gt;
Maxima имеет широчайший набор средств для проведения аналитических вычислений, численных вычислений и построения графиков. По набору возможностей система близка к таким коммерческим системам как [[RuPedia:Maple|Maple]] и [[RuPedia:Mathematica|Mathematica]]. В то же время она обладает высочайшей степенью переносимости. Это единственная из существующих систем аналитических вычислений, которая может работать на всех современных операционных системах, на компьютерах, начиная от самых мощных, заканчивая наладонниками.&lt;br /&gt;
&lt;br /&gt;
= История =&lt;br /&gt;
[http://maxima.sf.net Maxima] произошла от системы «Macsyma», разрабатывавшейся в MIT (Massachusetts Institute of Technology) с 1968 по 1982. &lt;br /&gt;
&lt;br /&gt;
Вариант продукта (известный как DOE Macsyma) сопровождался профессором  [[EnPedia:Bill Schelter|Уильямом Шелтером]] в Техасском Университете с 1982 до своей смерти в 2001. &lt;br /&gt;
&lt;br /&gt;
В 1998, Шелтер получил от Департамента энергии разрешение опубликовать исходный код DOE Macsyma под лицензией [[RuPedia:GPL|GPL]], и в 2000 он создал проект «Maxima» на [[RuPedia:SourceForge|SourceForge]] для поддержания и развития «DOE Macsyma», переименованного в Maxima.&lt;br /&gt;
&lt;br /&gt;
= Введение =&lt;br /&gt;
==Обзор==&lt;br /&gt;
&lt;br /&gt;
[[Maxima]] может использоваться как мощный калькулятор:&lt;br /&gt;
 (%i13) 144*17 - 9;&lt;br /&gt;
 (%o13) 2439&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Maxima]] поддерживает точные вычисления с большими числами, &lt;br /&gt;
размер которых ограничен только ресурсами вашего компьютера.&lt;br /&gt;
&lt;br /&gt;
Например, вычислим &amp;lt;m&amp;gt;144^{25}&amp;lt;/m&amp;gt;, а затем возьмем корень ''25''-степени из результата:&lt;br /&gt;
&lt;br /&gt;
 (%i14) 144^25;&lt;br /&gt;
 (%o14) 910043815000214977332758527534256632492715260325658624&lt;br /&gt;
 (%i15) %^(1/25);&lt;br /&gt;
 (%o15) 144&lt;br /&gt;
&lt;br /&gt;
Знак «%» ссылается на специльную переменную, хранящую результат последней операции. Знак «^» — оператор возведения в степень.&lt;br /&gt;
&lt;br /&gt;
Однако основное назначение компьютерной алгебры — не численные вычисления, а скорее, символьные операции. Поиграем с полиномом &amp;lt;m&amp;gt;(x+2y)^4&amp;lt;/m&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 expand((x + 2*y)^4); &amp;amp;rarr; &amp;lt;m&amp;gt;16\,y^4+32\,x\,y^3+24\,x^2\,y^2+8\,x^3\,y+x^4&amp;lt;/m&amp;gt;&lt;br /&gt;
 factor(%);           &amp;amp;rarr; &amp;lt;m&amp;gt;\left(2\,y+x\right)^4&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вычисление производных:&lt;br /&gt;
 diff(sin(x)*cos(x), x);     &amp;amp;rarr; &amp;lt;m&amp;gt;\cos ^2x-\sin ^2x&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigsimp(%);                &amp;amp;rarr; &amp;lt;m&amp;gt;2\,\cos ^2x-1&amp;lt;/m&amp;gt;&lt;br /&gt;
 diff(%, x);                 &amp;amp;rarr; &amp;lt;m&amp;gt;-4\,\cos x\,\sin x&amp;lt;/m&amp;gt;&lt;br /&gt;
 diff( sin(x)*cos(x), x, 2); &amp;amp;rarr; &amp;lt;m&amp;gt;-4\,\cos x\,\sin x&amp;lt;/m&amp;gt;&lt;br /&gt;
и первообразных (неопределенных интегралов):&lt;br /&gt;
 integrate((x + 1)/(x^3 - 8), x); &amp;amp;rarr; &amp;lt;m&amp;gt;-{{\log \left(x^2+2\,x+4\right)}\over{8}}+{{\arctan \left({{2\,x+2&lt;br /&gt;
 }\over{2\,\sqrt{3}}}\right)}\over{4\,\sqrt{3}}}+{{\log \left(x-2&lt;br /&gt;
 \right)}\over{4}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Maxima]] может преобразовывать тригонометрические выражения в канонические конечные тригонометрические ряды (''Fourier sums''):&lt;br /&gt;
 trigreduce (sin(x)^5); &amp;amp;rarr; &amp;lt;m&amp;gt;{{\sin \left(5\,x\right)-5\,\sin \left(3\,x\right)+10\,\sin x&lt;br /&gt;
 }\over{16}}&amp;lt;/m&amp;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;
 (%i1) 14*(7 + 3);&lt;br /&gt;
будет получен ответ:&lt;br /&gt;
 (%o1)  140&lt;br /&gt;
&lt;br /&gt;
{{note}}Если вы забудете ввести «;» — [[Maxima]] будет терпеливо (т. е. без каких-либо сообщений об ошибках) продолжать ввод ввод, пока вы ее не введете «;».&lt;br /&gt;
&lt;br /&gt;
{{tip}} Можно вместо точки с запятой завершить команду знаком доллара «$», тогда вывод этой команды будет заглушён, то есть, команда будет обработана и результат будет вычислен, но не выведен на экран.&lt;br /&gt;
&lt;br /&gt;
Введем какое-нибудь выражение с переменной:&lt;br /&gt;
 (%i2) (x + 2)*(x - 3);&lt;br /&gt;
Ответ [[Maxima]] содержит то же выражение, в неупрощенной форме:&lt;br /&gt;
 (%o2)  (x - 3) (x + 2)&lt;br /&gt;
{{note}} [[Maxima]] выдает выражение-результаты, используя минималистические средства — текстовую отрисовку формул. Так в ответе «(%o2)» мы видим, &lt;br /&gt;
что за счет исключения «*» из ответа, выражение выглядит «математическим», а не программистким.&lt;br /&gt;
&lt;br /&gt;
Теперь раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
 (%i3) expand(%);&lt;br /&gt;
 				   2&lt;br /&gt;
 (%o3) 				  x  - x - 6&lt;br /&gt;
&lt;br /&gt;
Т.е. человек вполне способен прочесть эту ASCII-формулу, однако,&lt;br /&gt;
есть возможность получить эту формулу (c помощью функции «tex») в формате [[TeX]]:&lt;br /&gt;
 (%i38) tex( expand( (x + 2)*(x - 3) ) );&lt;br /&gt;
 $x^2-x-6$&lt;br /&gt;
 (%o38) false &lt;br /&gt;
Что, если отрисовать через [[TeX]] будет выглядеть так: &amp;lt;m&amp;gt;x^2-x-6&amp;lt;/m&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{note}} Пользуясь этой возможностью, далее в этом введении, все математические формулы, получаемые от [[Maxima]] мы будем отрисовывать через [[TeX]], что будет гораздо удобней для чтения, чем [[ASCII]]-графика, особенно в случае «многоэтажных» формул.&lt;br /&gt;
&lt;br /&gt;
Итак, возведение в степень:&lt;br /&gt;
 x^3^4;        &amp;amp;rarr; &amp;lt;m&amp;gt;x^{81}&amp;lt;/m&amp;gt;&lt;br /&gt;
Обратите внимание на приоритет операций:&lt;br /&gt;
&amp;lt;tt&amp;gt;x^3^4&amp;lt;/tt&amp;gt; есть &amp;lt;m&amp;gt;x^{3^4}=x^{81} \ne (x^3)^4 = x^{3\cdot 4}= x^{12} &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Дифференцирование и интегрирование==&lt;br /&gt;
&lt;br /&gt;
Возьмем неопределенный интеграл для &amp;lt;m&amp;gt;{{x}\over{x^3+1}}&amp;lt;/m&amp;gt;:&lt;br /&gt;
 integrate(x/(x^3 + 1), x);  &amp;amp;rarr; &amp;lt;m&amp;gt;{{\log \left(x^2-x+1\right)}\over{6}}+{{\arctan \left({{2\,x-1&lt;br /&gt;
 }\over{\sqrt{3}}}\right)}\over{\sqrt{3}}}-{{\log \left(x+1\right)&lt;br /&gt;
 }\over{3}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Продифференцируем результат для проверки:&lt;br /&gt;
 diff(%, x); &amp;amp;rarr; &amp;lt;m&amp;gt;{{2}\over{3\,\left({{\left(2\,x-1\right)^2}\over{3}}+1\right)}}+{{2&lt;br /&gt;
 \,x-1}\over{6\,\left(x^2-x+1\right)}}-{{1}\over{3\,\left(x+1\right)&lt;br /&gt;
 }}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И чтобы, не пугаться, упростим сумму рациональных выражений:&lt;br /&gt;
 ratsimp(%); &amp;amp;rarr; &amp;lt;m&amp;gt;{{x}\over{x^3+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Повторим тоже самое для &amp;lt;m&amp;gt;e^{a\,x}\,\cos x\,\sin x&amp;lt;/m&amp;gt;:&lt;br /&gt;
 integrate(exp(a*x)*sin(x)*cos(x), x); &amp;amp;rarr; &amp;lt;m&amp;gt;{{e^{a\,x}\,\left(a\,\sin \left(2\,x\right)-2\,\cos \left(2\,x&lt;br /&gt;
 \right)\right)}\over{2\,\left(a^2+4\right)}}&amp;lt;/m&amp;gt;&lt;br /&gt;
  diff(%, x); &amp;amp;rarr; &amp;lt;m&amp;gt;{{a\,e^{a\,x}\,\left(a\,\sin \left(2\,x\right)-2\,\cos \left(2\,x&lt;br /&gt;
 \right)\right)}\over{2\,\left(a^2+4\right)}}+{{e^{a\,x}\,\left(4\,&lt;br /&gt;
 \sin \left(2\,x\right)+2\,a\,\cos \left(2\,x\right)\right)}\over{2\,&lt;br /&gt;
 \left(a^2+4\right)}}&amp;lt;/m&amp;gt;&lt;br /&gt;
  ratsimp(%); &amp;amp;rarr; &amp;lt;m&amp;gt;{{e^{a\,x}\,\sin \left(2\,x\right)}\over{2}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigexpand(%); &amp;amp;rarr; &amp;lt;m&amp;gt;e^{a\,x}\,\cos x\,\sin x&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если [[Maxima]] не смогла взять интеграл — она возвращает интеграл в «исходной форме»:&lt;br /&gt;
 (%i4) integrate(1/((x-3)^4+1/2), x);&lt;br /&gt;
                         /&lt;br /&gt;
                         [      1&lt;br /&gt;
 (%o4)                   I ------------ dx&lt;br /&gt;
                         ]        4   1&lt;br /&gt;
                         / (x — 3)  + -&lt;br /&gt;
                                      2&lt;br /&gt;
{{tip}} Разумеется, в [[TeX]]-форматировании интеграл будет выглядеть красивее: &amp;lt;m&amp;gt;\int {{{1}\over{\left(x-3\right)^4+{{1}\over{2}}}}}{\;dx}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В таком случае, можно помочь системе, выполнив замену переменных:&lt;br /&gt;
 changevar (%, x - 3 - y ,y ,x); &amp;amp;rarr; &amp;lt;m&amp;gt;2\,\int {{{1}\over{2\,y^4+1}}}{\;dy}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а затем проинтегрировав:&lt;br /&gt;
 ev (%, integrate) &lt;br /&gt;
&amp;lt;m&amp;gt;2\,\left({{\log \left(\sqrt{2}\,y^2+2^{{{3}\over{4}}}\,y+1\right)&lt;br /&gt;
 }\over{4\,2^{{{3}\over{4}}}}}-{{\log \left(\sqrt{2}\,y^2-2^{{{3&lt;br /&gt;
 }\over{4}}}\,y+1\right)}\over{4\,2^{{{3}\over{4}}}}}+{{\arctan &lt;br /&gt;
 \left({{2\,\sqrt{2}\,y+2^{{{3}\over{4}}}}\over{2^{{{3}\over{4}}}}}&lt;br /&gt;
 \right)}\over{2\,2^{{{3}\over{4}}}}}+{{\arctan \left({{2\,\sqrt{2}\,&lt;br /&gt;
 y-2^{{{3}\over{4}}}}\over{2^{{{3}\over{4}}}}}\right)}\over{2\,2^{{{3&lt;br /&gt;
 }\over{4}}}}}\right)&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
выполним обратную подстановку&lt;br /&gt;
 sfx: %, y=x-3;&lt;br /&gt;
&amp;lt;m&amp;gt;2\,\left({{\log \left(\sqrt{2}\,\left(x-3\right)^2+2^{{{3}\over{4}}&lt;br /&gt;
 }\,\left(x-3\right)+1\right)}\over{4\,2^{{{3}\over{4}}}}}-{{\log &lt;br /&gt;
 \left(\sqrt{2}\,\left(x-3\right)^2-2^{{{3}\over{4}}}\,\left(x-3&lt;br /&gt;
 \right)+1\right)}\over{4\,2^{{{3}\over{4}}}}}+{{\arctan \left({{2\,&lt;br /&gt;
 \sqrt{2}\,\left(x-3\right)+2^{{{3}\over{4}}}}\over{2^{{{3}\over{4}}}&lt;br /&gt;
 }}\right)}\over{2\,2^{{{3}\over{4}}}}}+{{\arctan \left({{2\,\sqrt{2}&lt;br /&gt;
 \,\left(x-3\right)-2^{{{3}\over{4}}}}\over{2^{{{3}\over{4}}}}}&lt;br /&gt;
 \right)}\over{2\,2^{{{3}\over{4}}}}}\right)&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Т.к. подынтегральное выражение — всюду определенная положительная функция, мы можем вычислить определенный интеграл &amp;lt;m&amp;gt;$$\int_{0}^{1}{{{1}\over{\left(x-3\right)^4+{{1}\over{2}}}}\;dx}$$&amp;lt;/m&amp;gt;, используя вычисленную первообразную «sfx»:&lt;br /&gt;
 ratsimp(subst (1, x, sfx) - subst(0, x, sfx));&lt;br /&gt;
&amp;lt;m&amp;gt;{{2\,2^{{{1}\over{4}}}\,\arctan \left({{2^{{{3}\over{4}}}+6\,\sqrt{&lt;br /&gt;
 2}}\over{2^{{{3}\over{4}}}}}\right)-2\,2^{{{1}\over{4}}}\,\arctan &lt;br /&gt;
 \left({{2^{{{3}\over{4}}}+4\,\sqrt{2}}\over{2^{{{3}\over{4}}}}}&lt;br /&gt;
 \right)+2^{{{1}\over{4}}}\,\log \left(3\,2^{{{3}\over{4}}}+9\,\sqrt{&lt;br /&gt;
 2}+1\right)-2^{{{1}\over{4}}}\,\log \left(2\,2^{{{3}\over{4}}}+4\,&lt;br /&gt;
 \sqrt{2}+1\right)+2^{{{1}\over{4}}}\,\log \left(-2\,2^{{{3}\over{4}}&lt;br /&gt;
 }+4\,\sqrt{2}+1\right)-2^{{{1}\over{4}}}\,\log \left(-3\,2^{{{3&lt;br /&gt;
 }\over{4}}}+9\,\sqrt{2}+1\right)+2\,2^{{{1}\over{4}}}\,\arctan &lt;br /&gt;
 \left({{6\,\sqrt{2}-2^{{{3}\over{4}}}}\over{2^{{{3}\over{4}}}}}&lt;br /&gt;
 \right)-2\,2^{{{1}\over{4}}}\,\arctan \left({{4\,\sqrt{2}-2^{{{3&lt;br /&gt;
 }\over{4}}}}\over{2^{{{3}\over{4}}}}}\right)}\over{4}}&amp;lt;/m&amp;gt;&lt;br /&gt;
или переходя к значениям в плавающей арифметике:&lt;br /&gt;
 float(ratsimp(subst (1, x, sfx) - subst(0, x, sfx))); &amp;amp;rarr; 0.028806333852738&lt;br /&gt;
&lt;br /&gt;
Для проверки выполним численное интегрирование методом Ромберга:&lt;br /&gt;
 romberg(1/((x-3)^4+1/2), x,0, 1); &amp;amp;rarr; 0.028806333924554&lt;br /&gt;
&lt;br /&gt;
Результаты аналитического и численного интегрирования совпадают с точностью &amp;lt;tt&amp;gt;1e-10&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Проинтегрируем &amp;lt;m&amp;gt;\left(x^4+1\right)^{{{2}\over{3}}}\,\left(6\,x^5+7\,x^4-36\,x^3+18&lt;br /&gt;
 \,x-21\right)&amp;lt;/m&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 integrate(((6*x^5 + 7*x^4 - 36*x^3 + 18*x - 21)*(x^4 + 1)^(2/3)&lt;br /&gt;
        + (2*x^6 - 20*x^4 - 40*x^3 + 18*x^2 + 12)*(x^4 + 1)^(1/3))&lt;br /&gt;
         /(3*x^8 +6*x^4 + 3), x);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;m&amp;gt;{{\left(3\,x^2-7\,x+9\right)\,e^{{{2\,\log \left(x^4+1\right)&lt;br /&gt;
 }\over{3}}}+\left(2\,x^3+4\,x+5\right)\,e^{{{\log \left(x^4+1\right)&lt;br /&gt;
 }\over{3}}}}\over{x^4+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Осталось «сократить» экспоненты с логарифмами, перейдя к каноническому радикалу:&lt;br /&gt;
 radcan(%);&lt;br /&gt;
&amp;lt;m&amp;gt;&lt;br /&gt;
 {{\left(3\,x^2-7\,x+9\right)\,\left(x^4+1\right)^{{{2}\over{3}}}+&lt;br /&gt;
 \left(2\,x^3+4\,x+5\right)\,\left(x^4+1\right)^{{{1}\over{3}}}&lt;br /&gt;
 }\over{x^4+1}}&lt;br /&gt;
&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Решение полиномов==&lt;br /&gt;
Нахождение нулей у полиномов от одной переменной — задача известная со школы. Поиграем с ней для демонстрации некоторых возможностей [[Maxima]].&lt;br /&gt;
Определим переменную &amp;lt;tt&amp;gt;poly&amp;lt;/tt&amp;gt;: &lt;br /&gt;
 poly: x^2 - x - 12; &amp;amp;rarr; &amp;lt;m&amp;gt;x^2-x-12&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вычислим нули, используя функцию «solve»:&lt;br /&gt;
 solutions: solve (poly=0, x); &amp;amp;rarr; [ x=-3, x=4 ]&lt;br /&gt;
&lt;br /&gt;
Мы получили ответ в виде двух равенств (с левыми и правыми частями) — если их преобразовать в множители, то мы должны получить исходный полином, в виде их произведения. &lt;br /&gt;
&lt;br /&gt;
Воспользуемся механизмом лямбда-функций (по сути, безымянных функций).&lt;br /&gt;
Лямбда функция &lt;br /&gt;
 lambda ([eq], lhs(eq) - rhs(eq))&lt;br /&gt;
очевидным образом преобразует выражение-равенство, в множитель, равный нулю в точке равенства.&lt;br /&gt;
Итак, применим функцию «map», применяющую нашу лямбда-функцию для всех элементов нашего списка уравнений:&lt;br /&gt;
 map( lambda( [eq], lhs(eq) - rhs(eq)), solutions); &amp;amp;rarr; [x+3,x-4]&lt;br /&gt;
&lt;br /&gt;
Перемножим этот список:&lt;br /&gt;
 apply(&amp;quot;*&amp;quot;, %); &amp;amp;rarr; (x-4)(x+3)&lt;br /&gt;
&lt;br /&gt;
И, раскрыв скобки, получаем исходный полином:&lt;br /&gt;
 expand(%); &amp;amp;rarr; &amp;lt;m&amp;gt;x^2-x-12&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Тригонометрические преобразования ==&lt;br /&gt;
Чтобы преобразовать произведения синусов-косинусов, в триногометрический ряд Фурье, используется функция «trigreduce»:&lt;br /&gt;
&lt;br /&gt;
 trigreduce(sin(x)^3*cos(x)); &amp;amp;rarr; &amp;lt;m&amp;gt;{{2\,\sin \left(2\,x\right)-\sin \left(4\,x\right)}\over{8}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь избавимся от произведений в аргументах тригонометрических функций:&lt;br /&gt;
 trigexpand(%); &amp;amp;rarr; &amp;lt;m&amp;gt;{{4\,\cos x\,\sin ^3x-4\,\cos ^3x\,\sin x+4\,\cos x\,\sin x}\over{8}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И наконец, упрощаем выражение, используя функцию «trigsimp»,&lt;br /&gt;
знающую тождество &amp;lt;m&amp;gt;sin^2x + cos^2y = 1&amp;lt;/m&amp;gt;:&lt;br /&gt;
 trigsimp(%); &amp;amp;rarr; &amp;lt;m&amp;gt;\cos x\,\sin ^3x&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Упрощение тригонометрических выражений не всегда получается просто и быстро, &lt;br /&gt;
как в приведенном примере, и в почтовых рассылках часто раздаются вопросы,&lt;br /&gt;
«как мне упростить XXX?» или «почему Maxima не упрощает YYY?».&lt;br /&gt;
&lt;br /&gt;
Рассмотрим пример:&lt;br /&gt;
 result:integrate(9/cos(7*x)^2, x); &amp;amp;rarr; &amp;lt;m&amp;gt;{{18\,\sin \left(14\,x\right)}\over{7\,\sin ^2\left(14\,x\right)+7&lt;br /&gt;
 \,\cos ^2\left(14\,x\right)+14\,\cos \left(14\,x\right)+7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А пользуясь любым матсправочником с таблицей основных первообразных (например, справочником Бронштейна-Семендяева), легко получить более красивый результат:&lt;br /&gt;
&amp;lt;m&amp;gt;\frac{9\tan(7x)}{7}&amp;lt;/m&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Попробуем упростить «влоб»:&lt;br /&gt;
 simp1: trigsimp(result); &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\sin \left(14\,x\right)}\over{7\,\cos \left(14\,x\right)+7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но применять дальше «trigexpand», для раскрытия &amp;lt;tt&amp;gt;sin(14*x)&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;cos(14*x)&amp;lt;/tt&amp;gt; через &amp;lt;tt&amp;gt;sin(x)&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;cos(x)&amp;lt;/tt&amp;gt; бесполезно — выражение сильно усложнится. Надо бы выразить &amp;lt;tt&amp;gt;sin(14*x)&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;cos(14*x)&amp;lt;/tt&amp;gt;&lt;br /&gt;
через &amp;lt;tt&amp;gt;sin(7*x)&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;cos(7*x)&amp;lt;/tt&amp;gt;, а для этого надо сделать подстановку, заменив &amp;lt;tt&amp;gt;14*x&amp;lt;/tt&amp;gt; на &amp;lt;tt&amp;gt;2*y&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 simp2: simp1, 14*x=2*y; &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\sin \left(2\,y\right)}\over{7\,\cos \left(2\,y\right)+7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И далее:&lt;br /&gt;
 trigexpand(simp2); &amp;amp;rarr; &amp;lt;m&amp;gt;{{18\,\cos y\,\sin y}\over{7\,\left(\cos ^2y-\sin ^2y\right)+7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigsimp(%);       &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\sin y}\over{7\,\cos y}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и наконец:&lt;br /&gt;
 trigreduce(%);     &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\tan y}\over{7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
возвращаемся к исходным переменным:&lt;br /&gt;
 %, y = 7*x;        &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\tan \left(7\,x\right)}\over{7}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, мы показали на примере этой задачки, как важно использовать подстановки переменных при упрощении через «trigexpand».&lt;br /&gt;
А вообще, это выражение можно было упростить одним действием:&lt;br /&gt;
 trigrat(result);   &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\sin \left(7\,x\right)}\over{7\,\cos \left(7\,x\right)}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigreduce(%);     &amp;amp;rarr; &amp;lt;m&amp;gt;{{9\,\tan \left(7\,x\right)}\over{7}}&amp;lt;/m&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Проверим результат интегрирования:&lt;br /&gt;
 deriv: diff(result, x);&lt;br /&gt;
 trigrat(deriv);    &amp;amp;rarr; &amp;lt;m&amp;gt;{{18}\over{\cos \left(14\,x\right)+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выглядит просто, но чтобы сравнить с исходным выражением, надо выразить всю &lt;br /&gt;
«тригонометрию» через &amp;lt;tt&amp;gt;7x&amp;lt;/tt&amp;gt;.&lt;br /&gt;
 %, 14*x = 2*y;   &amp;amp;rarr; &amp;lt;m&amp;gt;{{18}\over{\cos \left(2\,y\right)+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigexpand(%);   &amp;amp;rarr; &amp;lt;m&amp;gt;{{18}\over{-\sin ^2y+\cos ^2y+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 trigsimp(%);     &amp;amp;rarr; &amp;lt;m&amp;gt;{{9}\over{\cos ^2y}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 %, y = 7*x;      &amp;amp;rarr; &amp;lt;m&amp;gt;{{9}\over{\cos ^2\left(7\,x\right)}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Итак, напомним еще раз назначение рассмотренных функций:&lt;br /&gt;
;trigreduce: преобразует тригонометрическое выражение как сумма слагаемых, каждое из которых содержит один синус или косинус.&lt;br /&gt;
;trigexpand: «раскрывает» аргументы тригонометрических функций, согласно правилам тригонометрических функций от суммы углов.&lt;br /&gt;
;trigsimp: упрощает тригонометрическое выражение, используя тождество &amp;lt;m&amp;gt;sin^2x+cos^2x=1&amp;lt;/m&amp;gt;.&lt;br /&gt;
;trigrat: мощная функция — упрощение рационального тригонометрического выражения.&lt;br /&gt;
&lt;br /&gt;
==Разложение на простые дроби: шаг за шагом==&lt;br /&gt;
&lt;br /&gt;
Ответы [[Maxima]] всегда показывают готовый результат (если, конечно, системе удалось его получить), но не путь его вычисления.&lt;br /&gt;
&lt;br /&gt;
Например, разложение на простые дроби выполняется функцией «partfrac»:&lt;br /&gt;
&lt;br /&gt;
 partfrac ( 1/(x^2*(x^2 + 1)), x); &amp;amp;rarr; &amp;lt;m&amp;gt;{{1}\over{x^2}}-{{1}\over{x^2+1}}&amp;lt;/m&amp;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;
 p1: a/x;                  &amp;amp;rarr;&amp;amp;nbsp;  &amp;lt;m&amp;gt;{{a}\over{x}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 p2: b/x^2;                   &amp;amp;rarr;&amp;amp;nbsp;  &amp;lt;m&amp;gt;{{b}\over{x^2}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 p3: (c*x + d)/(x^2 + 1);        &amp;amp;rarr;&amp;amp;nbsp;  &amp;lt;m&amp;gt;{{c\,x+d}\over{x^2+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
т. е.&lt;br /&gt;
 p1 + p2 + p3;        &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;{{c\,x+d}\over{x^2+1}}+{{a}\over{x}}+{{b}\over{x^2}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Приводим к общему знаменателю, и поименуем числитель этой дроби, как «n»:&lt;br /&gt;
 ratsimp(p1 + p2 + p3); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;{{\left(c+a\right)\,x^3+\left(d+b\right)\,x^2+a\,x+b}\over{x^4+x^2&lt;br /&gt;
 }}&amp;lt;/m&amp;gt;&lt;br /&gt;
 n: num(%);             &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\left(c+a\right)\,x^3+\left(d+b\right)\,x^2+a\,x+b&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь осталось решить уравнение, «приравняв» числитель исходной дроби и числитель «n»:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 solve ([coeff (n, x, 3) = 0,&lt;br /&gt;
         coeff (n, x, 2) = 0,&lt;br /&gt;
         coeff (n, x, 1) = 0,      &amp;amp;rarr;     [[a=0,b=1,c=0,d=-1]]&lt;br /&gt;
         coeff (n, x, 0) = 1],&lt;br /&gt;
         [a, b, c, d]);&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наконец, подставляем полученные коэффициенты:&lt;br /&gt;
 at(p1 + p2 + p3, first(%));       &amp;amp;rarr;     &amp;lt;m&amp;gt;{{1}\over{x^2}}-{{1}\over{x^2+1}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Напомним, мы использовали следующие функции:&lt;br /&gt;
;num: возвращает числитель дроби.&lt;br /&gt;
;coeff: возвращает коэффициент при переменной в заданной степени.&lt;br /&gt;
;solve: решает систему линейных уравнений.&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;
 limit ((x^2 - 1)/(x^2 + 1), x, inf); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\lim_{x\rightarrow \infty }{{{x^2-1}\over{x^2+1}}} \rightarrow 1 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Можно раскрыть и предел типа «0/0»:&lt;br /&gt;
 limit ((x^2 + x - 6)/(x^4 + x^3 - 19*x^2 + 11*x + 30), x, 2); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\lim_{x\rightarrow 2}{{{x^2+x-6}\over{x^4+x^3-19\,x^2+11\,x+30}}} &lt;br /&gt;
\rightarrow -{{5}\over{21}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Maxima]] умеет вычислять пределы «справа» и «слева», и честно сообщает,&lt;br /&gt;
когда предел в заданной точке не определен:&lt;br /&gt;
 limit (tan(x), x, %pi/2, plus);   &amp;amp;rarr;&amp;amp;nbsp; minf  &amp;amp;nbsp;   &amp;lt;m&amp;gt;\lim_{x\rightarrow {{\pi}\over{2}}+0}{\tan x} \rightarrow -\infty&amp;lt;/m&amp;gt;&lt;br /&gt;
 limit (tan(x), x, %pi/2, minus);  &amp;amp;rarr;&amp;amp;nbsp; inf   &amp;amp;nbsp;   &amp;lt;m&amp;gt;\lim_{x\rightarrow {{\pi}\over{2}}-0}{\tan x} \rightarrow \infty&amp;lt;/m&amp;gt;&lt;br /&gt;
 limit (tan(x), x, %pi/2); &amp;amp;rarr; und&lt;br /&gt;
&lt;br /&gt;
== Вычисление рядов — конечных и бесконечных ==&lt;br /&gt;
Конечные суммы считаются сразу:&lt;br /&gt;
 sum(i, i, 1, 100); &amp;amp;rarr; 5050  &lt;br /&gt;
&lt;br /&gt;
Но бесконечные ряды, по умолчанию не суммируются, выражение остается в исходном символьном виде:&lt;br /&gt;
 sum1:sum(1/x^2, x, 1, inf); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\sum_{x=1}^{\infty }{{{1}\over{x^2}}}&amp;lt;/m&amp;gt;&lt;br /&gt;
 sum2:sum(1/x^2, x, 1, inf); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\sum_{x=1}^{\infty }{{{1}\over{x^3}}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чтобы выполнить суммирование, нужно указать опцию «simpsum=true»:&lt;br /&gt;
 sum(1/x^2, x, 1, inf), simpsum=true; &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;{{\pi^2}\over{6}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Впрочем, над «непросуммированными суммами» можно выполнять операции, только операторы суммирования не будут сокращаться:&lt;br /&gt;
 sum1+sum2; &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\sum_{x=1}^{\infty }{{{1}\over{x^2}}}+\sum_{x=1}^{\infty }{{{1&lt;br /&gt;
 }\over{x^3}}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для сокращения сумм, нужно использовать функцию «sumcontract»:&lt;br /&gt;
 sc:sumcontract(sum1+sum2); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\sum_{x=1}^{\infty }{{{1}\over{x^2}}+{{1}\over{x^3}}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{caution}} Версия 5.9.3. содержит баг [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=1517061&amp;amp;group_id=4933&amp;amp;atid=104933  1517061]&lt;br /&gt;
&lt;br /&gt;
Далее, можно просуммировать, как мы уже делали выше:&lt;br /&gt;
 ev (sc, simpsum=true); &amp;amp;rarr;&amp;amp;nbsp; &amp;lt;m&amp;gt;\zeta\left(3\right)+{{\pi^2}\over{6}}&amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Внешние ссылки =&lt;br /&gt;
&lt;br /&gt;
* [http://maxima.sf.net Домашняя страница Maxima]&lt;br /&gt;
* [[RuPedia:Maxima|Maxima в Википедии]].&lt;br /&gt;
* [http://www.computerra.ru/gid/266002/ Вадим Житников-Компьютеры, математика и свобода]&lt;br /&gt;
* [http://unix.ginras.ru/apps/sci001.html Maxima – максимум свободы символьных вычислений]&lt;br /&gt;
* [http://www.itc.ua/print.phtml?ID=17065 Maxima: максимум удобства и функциональности]&lt;br /&gt;
* [http://wxmaxima.sf.net WxMaxima] — оконный интерфейс к [[Maxima]].&lt;br /&gt;
* [http://www.texmacs.org/ GNU TeXmacs] - набор маттекстов в TeX, с плагинами доступа к различным CAS-системам, типа Axiom, Reduce, и в частности [[Maxima]].&lt;br /&gt;
&lt;br /&gt;
{{replicate-from-custiswiki-to-lib}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Программирование]]&lt;br /&gt;
[[Category:Алгоритмы]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>	</entry>

	</feed>