Главная страница
Навигация по странице:

  • 3.1. Обозначение команд и результатов вычислений

  • 3.3. Константы

  • 3.4. Арифметические операции

  • Пример: sin(x);integrate(sin(x),x,-5,5); plot2d([sin(x)+3,cos(x)],[x,-%pi, %pi],[y,-5,5]); 3.8. Пользовательские функции

  • 3.9. Перевод сложных выражений в линейную форму записи

  • Примеры: Математическая запись

  • 4.2. Раскрытие скобок

  • 4.3. Снова раскрытие скобок

  • Учебное пособие Москва 2008


    Скачать 3.68 Mb.
    НазваниеУчебное пособие Москва 2008
    АнкорMaxima
    Дата27.10.2019
    Размер3.68 Mb.
    Формат файлаpdf
    Имя файлаMaxima.pdf
    ТипУчебное пособие
    #91989
    страница2 из 7
    1   2   3   4   5   6   7
    | Математика, Прочие | Научные и математические, Образование | Разработка, входит Графическая оболочка wxMaxima, которую мы и рассмотрим подробнее.
    Рис. 3. Запуск Maxima в редакторе Графическая оболочка wxMaxima (входящая в комплект поставки дистрибутива Alt-Linux) предоставляет пользователю удобный и понятный интерфейс на русском языке и графическое окно для результатов расчета рис. 5). И, хотя в русскоязычной версии
    wxMaxima
    встроенной справки на русском языке пока нет, в сети Интернет непрерывно растет количество статей с примерами использования
    Maxima
    9

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Рис. 4. Maxima не интегрирована в На рис. 5 на аналогичный запрос вида (%i1)
    ' integrate (графический интерфейс wxMaxima выводит красивый и привычный вид интеграла, правильное положение дробной черты, да и величина символов, используемых при записи показателя степени, явно меньше (то есть, величина символов масштабируется) по
    Рис. 5. Графический интерфейс wxMaxima сравнению с величиной символов обычного текста 3. Ввод простейших команд в После запуска
    wxMaxima
    появляется окно программы, показанное на рис. 6. Рис. 6. Запуск графического интерфейса В верхней графической части окна интерфейса
    Maxima
    рассказывает, что загружена версия 5.14.0, что она распространяется по лицензии GNU, с какого сайта доступна и кто её родитель. В нижнем окне в поле ВВОД
    Maxima
    10

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima приготовилась воспринимать команды. Разделителем команд является символ ; точка с запятой. После ввода команды необходимо нажать клавишу Enter для ее обработки и вывода результата. В ранних версиях Maxima и некоторых ее оболочках (например, xMaxima), ив консольной версии наличие точки с запятой после каждой команды строго обязательно. Поэтому настоятельно рекомендуем при использовании Максимы не забывать добавлять точку с запятой ; после каждой команды.
    В случае, когда выражение надо отобразить, а не вычислить, передним необходимо поставить знак (одинарная кавычка. Но этот метод не работает, когда выражение имеет явное значение, например, выражение sin(π) Максима рассматривает как нуль и при наличии апострофа.
    Трудно предусмотреть многообразие возможных вариантов использования Максимы для расчета или преобразования выражений. В сложных случаях, можно попытаться получить справку на английском языке. Для вызова справки достаточно в поле ВВОД написать ? и нажать Enter.
    3.1. Обозначение команд и результатов вычислений
    После ввода каждой команде присваивается порядковый номер. На приведенном ниже рисунке введенные команды имеют номера 1–3 и обозначаются соответственно (%i1), (%i2), (%i3). Результаты вычислений имеют соответственно порядковый номер (%o1), (%o2) и т. д. Где "i" – сокращение от англ. input ввода англ. output (вывод

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Этот механизм позволяет при дальнейшей записи команд сослаться на ранее записанные, например (%i1)+(%i2) будет означать добавление к выражению первой команды выражения второй с последующим вычислением результата. Также можно использовать и номера результатов вычислений, например, таким образом (Для последней выполненной команды весть специальное обозначение – Пример Вычислить значение производной функции в точке х=1.
    Команда (%i9) была выполнена, и был получен результат (о. Поэтому следующая команда (%i10) сослалась на уже полученный результат, но уточнила значение переменной х, поэтому команда получала вид (%i10) ох. Ввод числовой информации

    Правила ввода чисел в Maxima точно такие, как и для многих других подобных программ. Целая и дробная часть десятичных дробей разделяются символом точка. Перед отрицательными числами ставится знак минус. Числитель и знаменатель обыкновенных дробей разделяется при помощи символа / (прямой слэш).
    Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение оператора numer. В частности он позволяет перейти от обыкновенных дробей к десятичным

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Здесь Maxima прежде всего действовала по умолчанию. Она сложила дроби
    3/7 и 5/3 по правилам арифметики точно нашла общий знаменатель, привела дроби к общему знаменателю и сложила числители. В итоге она получила
    44/21. Лишь после того, как мы попросили её получить численный ответ, она вывела приближенный, с точностью 16 знаков численный ответ
    2,095238095238095.
    3.3. Константы
    В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице (табл. Таблица Названия констант и их обозначение в Maxima
    3.4. Арифметические операции
    Обозначения арифметических операций в Maxima ничем не отличаются от классического представления, используются математические знаки + – * /.
    13

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Возведение в степень можно обозначать тремя способами
    ^
    ,
    ^^
    , **. Извлечение корня степени n записывают, как степень ^^(1/n). Напомним еще одну встроенную в Maxima полезную операцию – нахождение факториала числа. Эта операция обозначается восклицательным знаком. Например, 6!=1

    2

    3

    4

    5

    6=120. Для увеличения приоритета операции, как ив математике, при записи команд для Maxima используют круглые () скобки 3.5. Переменные

    Для хранения результатов промежуточных расчетов применяются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв, так переменные x и X – это две разные переменные.
    Присваивание значения переменной осуществляется с использованием символа (двоеточие, например x: Если необходимо удалить значение переменной (очистить ее, то применяется метод kill: kill(x) – удалить значение переменной x;
    kill(all) – удалить значения всех используемых ранее переменных.
    И кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i3), приведенную выше, оказался ответ с номером ноль (%o0) done, и далее нумерация команд продолжилась с единицы 3.6. Математические функции
    В Maxima имеется достаточно большой набор встроенных математических функций. Вот некоторые из них (табл. Следует иметь ввиду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе Вместо tg – tan, вместо ctg – cot, вместо arcsin – asin, вместо arccos
    – acos, вместо arctg – atan, вместо arcctg – acot, вместо ln – log, вместо cosec – csc.
    14

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Таблица Встроенные математические функции Maxima и примеры их использования 3.7. Правило записи функций
    Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов. Если значением аргумента является список, то он заключается в квадратные скобки, а элементы списка также разделяются запятыми.
    Пример:
    sin(x);
    integrate(sin(x),x,-5,5); plot2d([sin(x)+3,cos(x)],[x,-%pi, %pi],[y,-5,5]);
    3.8. Пользовательские функции
    Пользователь может задать собственные функции. Для этого сначала указывается название функции, в скобках перечисляются названия аргументов,
    15

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima после знаков := (двоеточие и равно) следует описание функции. После задания пользовательская функция вызывается точно так, как и встроенные функции
    Maxima.
    Пример:
    Нужно помнить, что не следует использовать для функций названия, зарезервированные для встроенных функций Maxima (записанные выше в табл. 2).
    3.9. Перевод сложных выражений в линейную форму записи
    Одним из самых сложных занятий для начинающих пользователей системы
    Maxima является запись сложных выражений, содержащих степени, дроби и другие конструкции, в линейной форме (в текстовой форме записи, при помощи ASCII символов, в одну строку).
    Для облегчения данного процесса нелишне дать несколько рекомендаций. Не забывайте ставить знак умножения В графическом окне Maxima по правилам математики удвоенное значение переменной х записывает в виде 2x, нов окне ВВОД команда для Maxima должна выглядеть как 2*x.
    2. В случае сомнения всегда лучше поставить лишние, дополнительные скобки (). Числитель и знаменатель выражения всегда необходимо заключать в скобки. А также при возведении в степень основание и степень лучше всегда брать в скобки.
    Примеры:
    Математическая запись
    Команда для Максимы. Функция не существует отдельно от своих аргументов (если таковые имеются. Поэтому, например, при возведении в степень можно взять всю функцию с аргументами в скобки, а потом уже возводить полученную конструкцию в нужную степень (sin(x))**2; Очень часто начинающие пользователи пытаются возвестив степень только название функции, забывая про аргументы sin**2(x) – это неправильно

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima
    4. Также помните, что несколько аргументов функции записываются в скобках, через запятую, например min(x1,x2,x3,xN);
    5. Недопустима запись функции sin(2*x) в виде sin*2*x или sin2x. Запомните, как действует Maxima при записи скобок как только вы пытаетесь написать открывающую скобку, она тут же пишет вторую – парную ей – закрывающую скобку. Поэтому при записи функций напишите название функции, затем поставьте после нее пустые скобки и только потом в этих скобках напишите все ее аргументы, разделяя их запятыми. Никаких конструкций между названием функции и открывающейся скобкой быть не должно
    6. В случае записи сложного выражения разбейте его на несколько простых составляющих, введите их по отдельности, а затем объедините, используя рассмотренные ранее обозначения введенных команд.
    Пример: необходимо ввести следующее выражение Разделим это выражение натри составные части числитель, выражение в скобках и степень. Запишем каждую составную часть и объединим их в выражение. Отметим, что строку с ошибочной записью команды для Максимы можно удалить с графического экрана (клавишей Del), если выделить целиком и команду, и соответствующий ответ (строк с командой (%i4) и с ответом (%o4) здесь нет – они удалены. Отметим также, что запись команды для Максимы (%o1)/(%o2)**(%o3) в строке (%i5) мы могли написать "более точно, если бы поставили дополнительные скобки для знаменателя (%o1)/((%o2)**(%o3)). Но Maxima и
    17

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima без этих "лишних скобок" правильно нас поняла и написала правильно, так как понимает принятое в математике старшинство операций сначала вычисляются функции, потом выполняется возведение в степень, затем операции деление и умножение и только потом сложение и вычитание 4. Решение задач элементарной математики К таким задачам можно отнести вычисление и преобразование арифметических выражений, построение графиков функций, решение уравнений и систем алгебраических уравнений 4.1. Maxima упростит выражение

    Рассмотрим возможности Maxima по упрощению и прочим преобразованиям выражений. В частности, речь пойдет об автоматическом раскрытии скобок и вынесении за скобки об упрощении как арифметических действий над некоторыми элементами, таки выражений с участием степенных, показательных и логарифмических функций а также об обработке тригонометрических выражений. Все эти функции призваны облегчать читаемость математических формул и повышать простоту их восприятия, а посему стоит уделить этому уроку достаточно внимания при верном использовании данные манипуляции позволят сэкономить в процессе работы значительное количество времени.
    Существенная часть интересующих нас прежде всего функций предназначена для преобразования рациональных выражений. Математики рациональным называют выражение, состоящее только из арифметических операторов и возведения в натуральную степень естественно, элементы такого выражения могут содержать и неарифметические и нестепенные функции — тогда такие элементы сточки зрения рационального выражения считаются атомарными, те. неделимыми и непреобразуемыми.
    Функции, работающие с рациональными выражениями, описаны в разделе документации «Polynomials»; потому как рациональные функции с математической точки зрения рассматриваются как расширение многочленов полиномов) — примерно также, как рациональные числа считаются расширением целых (многочлены, кстати, тоже иногда называют целыми функциями хотя общий математический смысл этого термина несколько шире).
    Имена всех функций Максимы по обработке рациональных выражений содержат буквосочетание rat, ноне от слова крыса, а от слова rational. И начнем мы знакомство сними с функции, которая таки называется выражение. Эта функция преобразовывает рациональное выражение к так называемой канонической форме (Canonical Rational Expression, CRE). То есть раскрывает все скобки, затем приводит все к общему знаменателю, суммирует и сокращает кроме того, приводит все числа в конечной десятичной записи к рациональным

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Тут надо заметить, что атомарные элементы, те. символы и числа, в канонической форме рационального выражения в Maxima имеют другое внутреннее представление. Следует иметь ввиду, что если каноническая форма рационального выражения используется в других рациональных выражениях, то последние также автоматически приводятся к канонической форме:
    Это может быть достаточно удобно, если вам нужно пошагово проделать большое количество рациональных преобразований вы можете, один раз вызвав rat(); ссылаться на предыдущие ячейки и, благодаря этому, далее автоматически видеть на каждом шаге итоговое выражение в канонической, а значит, достаточно компактной и удобной к восприятию форме. Здесь, хотя (%11) и было выражением в канонической форме, выражение
    (%26) уже не находится в канонической форме ввиду того, что были преобразования log(exp()). Bыражение (%27) получило каноническую форму в результате воздействия функции rat(); а выражение (%28) после применения функции ratdisrep( ); имеет общий вид.
    Во многих случаях для получения наиболее простого результата требуется записать выражение в виде суммы простейших дробей. Такую задачу решает
    19

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima функция partfrac(),
    ей только нужно указать имя переменной, относительно которой она сделает таки преобразования.
    Несколько слово приведении конечной десятичной записи чисел к рациональной. Конечная десятичная запись считается по определению приблизительной, что и понятно, т.к. при вычислениях самой Maxima такая запись может возникнуть исключительно при применении приближенных методов либо при ручном указании о переводе числа в десятичную запись из математической, в результате чего результат тоже, вероятнее всего, окажется приблизительным. Эта приблизительность учитывается и при переводе в рациональные числа, а ее уровень, то есть мера, на которую рациональное число при переводе может отклониться от конечной десятичной записи, регулируется переменной ratepsilon
    , равной по умолчанию
    2.0e-8
    , те. Если такое положение вещей вас не устраивает, вы можете убедить Maxima оставлять десятичную запись чисел как есть, установив в true значение флага keepfloat
    (по умолчанию он равен false
    ).
    4.2. Раскрытие скобок
    Следующая функция раскрывает скобки в рациональном выражении и называется ratexpand(); (одно из значений слова expand и есть раскрыть скобки. Здесь также действует опция Кроме нее, есть еще одна опция — ratdenomdivide
    ; по умолчанию она установлена в true, это приводит к тому, что каждая дробь, в которой числитель является суммой, распадается на сумму дробей с одинаковым знаменателем. Если же сбросить эту опцию в false, тогда все дроби с одинаковым знаменателем будут, напротив, объединены в одну дробь с числителем в виде суммы числителей изначальных дробей. То есть внешне результат будет в этом случае выглядеть почти также, как и у функции rat(); к тому же единственная видимая пользователю разница проявляется только в рациональных выражениях от нескольких переменных (или различных иррациональных выражений. Заключается эта разница в том, что после ratexpand(); ив числителе, ив знаменателе дроби все скобки будут раскрыты, в случае же rat(); слагаемые, где присутствуют, скажем, две переменных, будут сгруппированы,
    20

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima и одна из них будет вынесена за скобки (в документации такая форма записи называется рекурсивной (Кроме того, разница, конечно, заключается и во внутреннем представлении сточки зрения программы, после ratexpand(); выражение будет по-прежнему общего вида. Соответственно и все результаты дальнейших рациональных действий с выражением не будут автоматически
    «канонизироваться».
    Следующая функция, собирает воедино дроби с одинаковыми знаменателями зовут ее combine()
    ;
    4.3. Снова раскрытие скобок
    Помимо ratexpand();
    есть также и функция просто expand();. Различий между ними несколько, наиболее принципиальные таковы. Во- первых, ratexpand();
    раскрывает только рациональное выражение верхнего уровня, все же подвыражения, не являющиеся рациональными, обрабатываются как атомарные, то есть внутрь них она не залезает expand(); же раскрывает скобки на всех уровнях вложенности.
    На этом примере видно функция ratexpand();
    "не знает" о том, что показатель степени равен 4 (если раскрыть скобки, а функция expand();
    не
    21

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima только "знает" об этом, но и не желает записывать результат в виде (b+a)
    4
    , а максимально раскрывает скобки:
    Во-вторых, ratexpand();
    приводит дроби-слагаемые к общему знаменателю, а expand();
    этого не делает в-третьих, на функцию expand не действует переключатель ratdenomdivide.
    И в-четвертых, expand();
    не преобразовывает к рациональным числам конечную десятичную запись — опять-таки, вне зависимости от флага keepfloat
    . Кроме всего сказанного функция expand();,
    в отличие от своего рационального сородича, имеет несколько вариаций — в виде отдельных функций с похожими названиями
    *expand*();,
    которые раскрывают скобки несколько по-разному.
    В противоположность функциям
    *expand*();,
    раскрывающим скобки, можно также записать анализируемое выражение как произведение сомножителей, то есть максимально повыносить все за скобки. Делается это с помощью функции Если функции factor();
    передать целое число, она разложит его на простые множители если же передать рациональное число, на множители будут разложены его числитель и знаменатель:
    Если многочлен не может быть представлен в виде произведения нескольких сомножителей, его можно попытаться преобразовать в сумму таких произведений с помощью функции В следующем примере используется много переменных x, y, z, v, u, t, w и не удается вынести за скобки общий множитель, поэтому функция factor(); с поставленной ей задачей — записать результат в виде сомножителей — не справилась, но функция factorsum(); решила задачу и записала выражение в виде суммы произведений.
    Функция factorsum(); умеет раскладывать на множители только независимые слагаемые, то есть такие, которые не содержат одинаковых переменных. Если мы раскроем скобки в выражении, содержащем в двух разных местах один и тот же символ, то так как коэффициенты при этом символе после раскрытия сгруппируются, factorsum(); не сможет понять

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Maxima каким именно образом разгруппировать их обратно. Нужно заметить, что функции factor();
    и factorsum();
    хотя и не имеют в имени приставки rat, все же ведут себя в смысле разбора передаваемых им выражений не как expand();
    и сопутствующие, а как ratexpand();
    то есть на любой нерациональной функции останавливаются и внутрь не идут 4.4. А если нужно сделать еще проще
    Функция выражение упрощает выражение за счет рациональных преобразований, нов отличие от остальных функций по обработке рациональных выражений, работает в том числе и вглубь, то есть иррациональные части выражения не рассматриваются как атомарные, а упрощаются, в том числе и все рациональные элементы внутри них:
    На ratsimp();
    действуют те же флаги, что и на rat();
    , и ratexpand,
    и keepfloat
    , и ratfac
    . Но отличается она от rat()
    или ratexpand()
    не только умением работать в глубину, но и некоторыми дополнительными рациональными преобразованиями, которые не поддерживаются этими двумя функциями.
    Функция ratsimp(); — это уже достаточно мощный ив тоже время весьма быстрый механизм упрощения но, конечно, недостаточный ведь те действия, которые можно упростить в разнообразных математических выражениях, не ограничиваются рациональными. Поэтому все же основной плюс этой функции — это скорость

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений А для более серьезных упрощений существует расширенный вариант — fullratsimp(выражение).
    Эта функция последовательно применяет к переданному выражению функцию ratsimp();, а также некоторые нерациональные преобразования — и повторяет эти действия в цикле до тех пор, пока выражение не перестанет в процессе них изменяться. За счет этого функция работает несколько медленнее, чем ratsimp(); зато дает более надежный результат — к некоторым выражениям, которые она может упростить сходу пришлось бы применять несколько раза иногда таи вообще не справилась бы с задачей.
    И третья основная функция упрощения выражений — уже никак с предыдущими двумя не соотносящаяся — выражение Если ratsimp();
    и fullratsimp()
    ориентированы на упрощение рациональных действий, то radcan();
    занимается упрощением логарифмических, экспоненциальных функций и степенных с нецелыми рациональными показателями, то есть корней (радикалов. Например, выражение (%o11) из предыдущего примера в этом разделе radcan();
    сможет упростить сильнее, чем ratsimp();
    или fullratsimp();
    24

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений В некоторых случаях наилучшего результата можно добиться, комбинируя radcan();
    с ratsimp();
    или С функцией radcan()
    ; смежны по действию еще два управляющих ключа. Один из них называется %e_to_numlog. Влияет он не на саму функцию, а на автоматическое упрощение. Если выставить его в true, то выражения вида выражение, где r — рациональное число, будут автоматически раскрываться в выражение r. Функция radcan(); делает такие преобразования независимо от значения ключа. Второй ключ — radexpand от radical, не путать с ratexpand) — влияет на упрощение квадратного корня из четной степени какого-либо выражения. Он, в отличие от большинства переключателей, имеет не два, а три значения при значении all, sqrt(x
    2
    ) будет раскрываться в x — как для действительных, таки для комплексных чисел при значении true (по умолчанию, sqrt(x
    2
    ) для действительных чисел превращается в |x|, а для комплексных не преобразуется а при значении false, sqrt(x
    2
    ) не будет упрощаться вообще.
    Следующие две функции относятся к упрощению факториалов. Функция выражение проводит упрощения вида n!*(n+1) = (n+1)! и тому подобные. Функция minfactorial, напротив, сокращает факториалы, то есть действует по принципу n!/(n–1)! = n. Отметим, что интерфейс wxMaxima позволяет набирать имя функций ratsimp(); radcan(); factor(); expand(); водно касание" щелчком мыши.
    25

    Стахин НА, Основы работы с системой аналитических (символьных) вычислений Рис. 7. Функции и соответствующие им кнопки интерфейса Если после записи в поле ВВОД какого-либо выражения щелкнуть мышью по соответствующей кнопке Упростить, Упростить (рац), Факторизовать, Раскрыть, то введенное выражение будет рассматриваться как аргумент функции, математические названия которых показанные в виде второй строки на рис. 7, спрятаны" под кнопками. Если поле ВВОД было не заполнено, тов качестве аргумента функции будет использоваться результат последней выполненной команды (%). В примерена рис. 7 поле ВВОД было пустое, после щелчка по кнопке Раскрыть Maxima выполнила команду
    (%i4) expand(%)
    и записала в ответ ссылку на предыдущий результат
    (%о4) %
    , которого в данном случае не было.
    Аналогично под кнопками Упростить (триг), Раскрыть (триг), Привести (триг) прячутся" функции trigsimp(); trigexpand(); trigreduce();
    , которые работают с тригонометрическими выражениями и о которых говорится в следующем разделе.
    1   2   3   4   5   6   7


    написать администратору сайта