Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634620)
Контекстум
.

Символьные вычисления в системе компьютерной математики Maxima (220,00 руб.)

0   0
АвторыТкачева Светлана Анатольевна, Безручкина Людмила Валентиновна, Садчиков Павел Валерьевич
ИздательствоВоронеж
Страниц63
ID590437
АннотацияУчебно-методическое пособие подготовлено на кафедре уравнений в частных производных и теории вероятностей математического факультета Воронежского государственного университета
Кому рекомендованоРекомендуется для студентов 2-5 курсов очной формы обучения математического факультета, обучающихся по направлениям 01.03.01 Математика, 02.03.01 Математика и компьютерные науки, 01.03.04 Прикладная математика и по специальности 01.05.01 Фундаментальная математика и механика
Символьные вычисления в системе компьютерной математики Maxima / С.А. Ткачева, Л.В. Безручкина, П.В. Садчиков .— : Воронеж, 2015 .— 63 с. — 63 с. — URL: https://rucont.ru/efd/590437 (дата обращения: 19.04.2024)

Предпросмотр (выдержки из произведения)

МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» (ФГБОУ ВО «ВГУ») Символьные вычисления в системе компьютерной математики Maxima Учебное пособие для вузов пособие для студентов, обучающихся по направлениям 01.03.01 Математика, 02.03.01 Математика и компьютерные науки, 01.03.04 Прикладная математика и по специальности 01.05.01 Фундаментальная математика и механика Воронеж 2015 1 Утверждено научно-методическим советом математического факультета 29 октября 2015 года Протокол № 0500-09 Составители: С.А. Ткачева, Л.В. Безручкина, П.В. Садчиков Рецензент: к.ф-м. н., доцент Бурлуцкая М.Ш. <...> Учебно-методическое пособие подготовлено на кафедре уравнений в частных производных и теории вероятностей математического факультета Воронежского государственного университета Рекомендуется для студентов 2-5 курсов очной формы обучения математического факультета, обучающихся по направлениям 01.03.01 Математика, 02.03.01 Математика и компьютерные науки, 01.03.04 Прикладная математика и по специальности 01.05.01 Фундаментальная математика и механика 2 Что такое символьные вычисления Что представляют эти самые символьные или, как их еще называют, аналитические вычисления, в отличие от численных расчетов. <...> Например, параметрические уравнения, где в виде решения нужно выразить неизвестное через параметр; или нахождение производной от функции; да практически любую достаточно общую задачу можно решить только в символьном виде. <...> История проекта, известного ныне под именем Maxima, началась еще в конце 60-х годов в легендарном MIT (Massachusetts Institute of Technology — Массачусетский Технологический институт), когда в рамках существовавшего в те годы большого проекта MAC началась работа над программой символьных вычислений, которая получила имя Macsyma (от MAC Symbolic MAnipulation). <...> Принципы, положенные в основу проекта, позднее были заимствованы наиболее активно развивающимися ныне <...>
Символьные_вычисления_в_системе_компьютерной_математики_Maxima.pdf
МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» (ФГБОУ ВО «ВГУ») Символьные вычисления в системе компьютерной математики Maxima Учебное пособие для вузов пособие для студентов, обучающихся по направлениям 01.03.01 Математика, 02.03.01 Математика и компьютерные науки, 01.03.04 Прикладная математика и по специальности 01.05.01 Фундаментальная математика и механика Воронеж 2015 1
Стр.1
Что такое символьные вычисления Что представляют эти самые символьные или, как их еще называют, аналитические вычисления, в отличие от численных расчетов. Компьютеры, как известно, оперируют с числами (целыми и с плавающей запятой). К примеру, решения уравнения x2 = 2x + 1 можно получить как −0.41421356 и 2.41421356, а 3x = 1 — как 0.33333333. А ведь хотелось бы увидеть не приближенную цифровую запись, а точную величину, т. е. 1±√2 в первом случае и 1/3 во втором. С этого простейшего примера и начинается разница между численными и символьными вычислениями. Но кроме этого, есть еще задачи, которые вообще невозможно решить численно. Например, параметрические уравнения, где в виде решения нужно выразить неизвестное через параметр; или нахождение производной от функции; да практически любую достаточно общую задачу можно решить только в символьном виде. Поэтому неудивительно, что и для такого класса задач появились компьютерные программы, оперирующие не только числами, а почти любыми математическими объектами, от векторов до тензоров, от функций до дифференциальных уравнений и т.д. Среди математического ПО для аналитических (символьных) вычислений наиболее широко известно коммерческое (Maple, Mathematica); это очень мощный инструмент для ученого или преподавателя, аспиранта или студента, позволяющий автоматизировать наиболее рутинную и требующую повышенного внимания часть работы, оперирующий при этом аналитической записью данных, т. е. фактически математическими формулами. Такую программу можно назвать средой программирования, с той разницей, что в качестве элементов языка программирования выступают привычные человеку математические обозначения. История проекта, известного ныне под именем Maxima, началась еще в конце 60-х годов в легендарном MIT (Massachusetts Institute of Technology — Массачусетский Технологический институт), когда в рамках существовавшего в те годы большого проекта MAC началась работа над программой символьных вычислений, которая получила имя Macsyma (от MAC Symbolic MAnipulation). Архитектура системы была разработана к июлю 1968 г., непосредственно программирование началось в июле 1969. в качестве языка для разработки системы был выбран Lisp, и история показала, насколько это был правильный выбор: из существующих в то время языков программирования он единственный продолжает развиваться и сейчас — спустя почти полвека после старта проекта. Принципы, положенные в основу проекта, позднее были заимствованы наиболее активно развивающимися ныне коммерческими программами — Mathematica и Maple; таким образом, Macsyma фактически стала родоначальником всего направления программ символьной математики. Естественно, Macsyma была закрытым коммерческим проектом; его финансировали государственные и частные организации, среди которых были вошедшее в историю ARPA (Advanced Research Projects Agency; помните ARPAnet — предок интернета?), Энергетический и Оборонный Департаменты США (Departments of Energy & Defence, DOE and DOD). Проект активно развивался, а организации, контролирующие его, менялись не раз, как это всегда бывает с долгоживущими закрытыми проектами. в 1982 году профессор Уильям Шелтер (William Schelter) начал разрабатывать свою версию на основе этого же кода, под названием Maxima. в 1998 году Шелтеру удалось получить от DOE права на публикацию кода по лицензии GPL. Первоначальный проект Macsyma прекратил свое существование в 1999 году. Уильям Шелтер продолжал заниматься разработкой Maxima вплоть до своей смерти в 2001 году. Но, что характерно для открытого ПО, проект не умер вместе со своим автором и куратором. Сейчас проект продолжает активно развиваться, и участие в нем является лучшей визитной карточкой для математиков и программистов всего мира. На данный момент Maxima выпускается под две платформы: Unix-совместимые системы, т. е. Linux и *BSD, и MS Windows. 3
Стр.3
команды. Команда в Максиме — это любая комбинация математических выражений и встроенных функций, завершенная, в простейшем случае, точкой с запятой. После ввода команды и нажатия «Enter» (в более поздних версиях, например 5.31.2, ввод данных осуществляется с помощью комбинации клавиш «Shift»+«Enter») Maxima выведет результат и будет ожидать следующей команды: (%i1) (1/2+1/3+1/4)/(1/5+1/6+1/8); (%o1) 130/59 Как видите, каждая ячейка имеет свою метку; эта метка — заключенное в скобки имя ячейки. Каждый ввод и вывод помечаются системой и затем могут быть использованы снова. Символ (%i1) используется для обозначения команд, введенных пользователем, а (%o1) - при выводе результатов вычислений. Ячейки ввода именуются как %i с номером (i от input — ввод), ячейки вывода — как %o с соответствующим номером (o от output — вывод). Со знака % начинаются все встроенные служебные имена: чтобы, с одной стороны сделать их достаточно короткими и удобными в использовании, а с другой — избежать возможных накладок с пользовательскими именами, которые тоже часто удобно делать короткими. Благодаря такому единообразию вам не придется запоминать, как часто бывает в других системах, какие из таких коротких и удобных имен зарезервированы программой, а какие вы можете использовать для своих нужд. К примеру, внутренними именами %e и %pi обозначены общеизвестные математические постоянные; а через %c с номером обозначаются константы, используемые при интегрировании, для которых использование буквы «c» традиционно в математике. При вводе мы можем обращаться к любой из предыдущих ячеек по ее имени, подставляя его в любые выражения. Кроме того последняя ячейка вывода обозначается через %, а последняя ячейка ввода — через _. Это позволяет обращаться к последнему результату, не отвлекаясь на то, каков его номер. (%i2) %+47/59; (%o2) 3 Здесь %+47/59 — то же самое, что %o1+47/59. Вывод результата вычисления не всегда нужен на экране; его можно заглушить, завершив команду символом $ вместо ;. Заглушенный результат при этом все равно вычисляется; как видите, в этом примере ячейки %o1 и %o2 доступны, хотя и не показаны (к ячейке %o2 обращение идет через символ %, смысл которого расшифрован выше): Каждую следующую команду не обязательно писать с новой строки; если ввести несколько команд в одну строчку, каждой из них все равно будет соответствовать свое имя ячейки. К примеру, здесь в строке после метки %i1 введены ячейки от %i1 до %i4; в ячейке %i3 используются %i1 и %i2 (обозначенная как _ — предыдущий ввод): 6
Стр.6
В wxMaxima и TeXmacs последнюю или единственную команду в строке можно не снабжать завершающим символом ; — это сработает так же, как если бы она была завершена ; т. е. вывод заглушен не будет. Если вы выберете другой интерфейс, не забывайте ее добавлять. Помимо использования имен ячеек, мы, естественно, можем и сами давать имена любым выражениям. По-другому можно сказать, что мы присваиваем значения переменным, с той разницей, что в виде значения такой переменной может выступать любое математическое выражение. Делается это с помощью двоеточия — знак равенства оставлен уравнениям, которые, учитывая общий математический контекст записи, проще и привычнее так читаются. И к тому же, так как основной конек Максимы — символьная запись и аналитические вычисления, уравнения достаточно часто используются. Например: В каком-то смысле двоеточие даже нагляднее в таком контексте, чем знак равенства: это можно понимать так, что мы задаем некое обозначение, а затем через двоеточие расшифровываем, что именно оно обозначает. После того, как выражение поименовано, мы в любой момент можем вызвать его по имени: (%i4) solve([x^2+6*x+9], [x]); (%o4) [x=-3] Таким образом: для инициализации процесса вычислений следует ввести команду, затем символ ; (точка с запятой) и нажать клавишу Enter ( или Shift + Enter ). Если не требуется вывод полученной информации на экран, то вместо точки с запятой используется символ $. Обратиться к результату последней команды можно с помощью 7
Стр.7
символа %. Для повтора ранее введенной команды, скажем (%i2), достаточно ввести два апострофа и затем метку требуемой команды, например, '(%i2) ' Система Maxima обращает внимание на регистр введенных символов в именах встроенных констант и функций. Регистр букв важен при использовании переменных, например, Maxima считает x и X разными переменными. Для стандартных математических констант используются следующие обозначения: %e для основания натуральных логарифмов, %i для мнимой единицы (квадратный корень из числа -1) и %pi для числа . Присваивание значения какой-либо переменной осуществляется с помощью знака : (двоеточие), а символ = (равно) используется при задании уравнений или подстановок. (%i1) x:2; (%o1) (%i2) y:3; (%o2) (%i3) x + y; (%o3) 2 3 5 Любое имя можно очистить от присвоенного ему выражения функцией kill(), и освободить занимаемую этим выражением память. Для этого нужно просто набрать kill(name), где name — имя уничтожаемого выражения; причем это может быть как имя, назначенное вами, так и любая ячейка ввода или вывода. Точно так же можно очистить разом всю память и освободить все имена, введя kill(all). В этом случае очистятся в том числе и все ячейки ввода-вывода, и их нумерация опять начнется с единицы. В дальнейшем, если по контексту будет иметься в виду логическое продолжение предыдущих строк ввода-вывода, я буду продолжать нумерацию (этим приемом я уже воспользовался выше). Когда же новый «сеанс» будет никак не связан с предыдущим, буду начинать нумерацию заново; это будет косвенным указанием сделать «kill(all)», если вы будете набирать примеры в Maxima, так как имена переменных и ячеек в таких «сеансах» могут повторяться. Для этого можно использовать основное меню. Кликаем ЛКМ по кнопке Maxima основного меню, переходим на строку Очистить память и еще раз кликнем ЛКМ. В этом меню можно также Прервать вычисления, Перезапустить Maxima и др. операции. Функция kill аннулирует присвоенные ранее значения переменных. Параметр all этой функции приводит к удалению значения всех переменных, включая метки (%i) и (%o). (%i4) kill(x); (%o4) (%i5) x + y; (%o5) (%i6) kill(all); (%o0) (%i2) x + y; (%o2) done x + 3 done y + x Для завершения работы с системой применяется функция quit();, а прерывание процесса вычислений осуществляется путем нажатия комбинации клавиш Ctrl- (после чего следует ввести :q для возврата в обычный режим работы), или команды в меню: Maxima ->Прервать. Можно использовать также команды: Очистить память, а также Перезапустить Maxima. 8
Стр.8
Работа с выражениями При записи математических выражений могут использоваться четыре стандартные арифметрические операции (+, -, *, /) и операция возведения в степень (^, ^^ или **). Приоритет этих операций традиционен, для изменения порядка вычислений следует использовать круглые скобки. Кроме чисел выражения могут содержать результаты вычислений математических функций. Аргументы функций указываются в круглых скобках, например, запись sqrt(5) означает корень квадратный из числа 5. Если в результате расчета получается дробное выражение, то оно и выводится в виде обыкновенной дроби. Иррациональные числа, входящие в выражение, представляются в символьном виде. Примеры работы программы с арифметическими операциями: Сложение и умножение коммутирующие операции. Вычитание а- b представлено в Максима как сложение а+ (-b). Деление а/ b представлено в Максима как умножение, а * b ^ (-1). (%i1) c + g + d + a + b + e + f; (%o1) (%i2) [op (%), args (%)]; (%o2) (%i4) [op (%), args (%)]; (%o4) (%i3) c * g * d * a * b * e * f; (%o3) g + f + e + d + c + b + a [+, [g, f, e, d, c, b, a]] a b c d e f g (%i5) apply ("+", [a, 8, x, 2, 9, x, x, a]); (%o5) (%i6) apply ("*", [a, 8, x, 2, 9, x, x, a]); 2 3 (%o6) 144 a x op (операция), args(аргументы), аpply(применить). Деление и возведение в степень не коммутирующие операции. Операции обозначаются как "/" и "^". (%i1) [a / b, a ^ b]; a b (%o1) [-, a ] b (%i2) [map (op, %), map (args, %)]; (%o2) (%o3) [[/, ^], [[a, b], [a, b]]] (%i3) [apply ("/", [a, b]), apply ("^", [a, b])]; a b [-, a ] b [*, [a, b, c, d, e, f, g]] 3 x + 2 a + 19 (%i1) 17 + b - (1/2)*29 + 11^(2/4); (%o1) 5 b + sqrt(11) + - 2 (%i2) [17 + 29, 17 + 29.0, 17 + 29b0]; (%o2) [46, 46.0, 4.6b1] 9
Стр.9
Для раскрытия скобок используется функция expand. Команда ev позволит получить численное значение выражения. Ее первый аргумент есть вычисляемое выражение, а второй - опция numer. Напомним, что символ % означает результат предыдущего вычисления. (%i3) 1/100+1/101; (%o3) 201/10100 (%i4) (1+sqrt(2))^5; (%o4) (sqrt(2)+1)^5 (%i5) expand(%i14); (%o5) 29*sqrt(2)+41 (%i6) ev(%i15,numer); (%o6) 82.01219330881975 Допускается более удобная форма функции ev, требующая указания только ее аргументов: (%i7) 29*sqrt(2) + 41, numer; (%o7) 82.01219330881976 По умолчанию результат содержит 16 значащих цифр. Для вывода числа в экспоненциальной форме используется функция bfloat: (%i8) bfloat(%i7); (%o8) Запись mbn есть сокращенная форма выражения m*10n ev(8.201219330881976b1,numer) . Количество значащих цифр в представлении числа определяется специальной переменной FPPREC. Увеличение ее значения приводит к возрастанию точности результата, например, (%i9) fpprec; (%o9) (%i10) fpprec:100; (%o10) (%i11) ''(%i7); (%o11) 16 100 8.20121933088197607657604923686248525# 030775305167218616484631047782707024434954# 8350683851114422615155B1 Символ # в конце выводимой строки означает, что число не уместилось на одной строке и его оставшаяся часть переносится на следующую. В последнем примере мы использовали повторение ранее введенной команды ''(%i7); Система Maxima может работать с числами произвольной длины и точности: (%i12) 100!; (%o12) 933262154439441526816992388562667004# 9071596826438162146859296389521759999322991# 5608941463976156518286253697920827223758251# 185210916864000000000000000000000000 10
Стр.10