Основы работы в системе компьютерной алгебры Mathematica
Покупка
Тематика:
Математическое программное обеспечение
Издательство:
ИНТУИТ
Автор:
Седов Е. С.
Год издания: 2016
Кол-во страниц: 269
Дополнительно
В курсе рассмотрены вопросы использования пакета Mathematica для осуществления символьных вычислений, численных расчётов различной сложности и визуализации результатов. Также уделено внимание использованию пакета Mathematica в качестве языка программирования высокого уровня для упрощения и автоматизации вычислений.
Система компьютерной алгебры Mathematica — одно из наиболее распространённых в мире программных средств для осуществления численных и символьных компьютерных вычислений, которое, кроме того, обладает широкими возможностями для визуализации результатов. Mathematica позволяет осуществлять широкий спектр символьных преобразований, в том числе и операции математического анализа: дифференцирование, интегрирование, разложение в ряд и др. Помимо аналитических расчётов программа обеспечивает возможность применения разнообразных численных методов. Mathematica обладает развитой двух- и трёхмерной графикой, позволяющей как нельзя более наглядно для пользователя представить результаты расчётов. По сущности своей Mathematica представляет собой язык программирования высокого уровня, который позволяет реализовать различные стили программирования. В своей совокупности перечисленные возможности превращают в удобный и мощный инструмент физических и математических исследований. В
настоящем курсе лекций мы в равной мере уделим внимание всем означенным выше возможностям Mathematica: дадим общую характеристику пакета, в теории и примерах рассмотрим основные встроенные функции, научимся создавать собственные функции и процедуры.
Тематика:
ББК:
УДК:
ОКСО:
- 00.00.00: ОБЩИЕ ДИСЦИПЛИНЫ ДЛЯ ВСЕХ СПЕЦИАЛЬНОСТЕЙ
- ВО - Бакалавриат
- 01.03.01: Математика
- 01.03.02: Прикладная математика и информатика
- 01.03.03: Механика и математическое моделирование
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Основы работы в системе компьютерной алгебры Mathematica 2-е издание, исправленное Седов Е.С. Национальный Открытый Университет “ИНТУИТ” 2016 2
Основы работы в системе компьютерной алгебры Mathematica/ Е.С. Седов - М.: Национальный Открытый Университет “ИНТУИТ”, 2016 В курсе рассмотрены вопросы использования пакета Mathematica для осуществления символьных вычислений, численных расчётов различной сложности и визуализации результатов. Также уделено внимание использованию пакета Mathematica в качестве языка программирования высокого уровня для упрощения и автоматизации вычислений. Система компьютерной алгебры Mathematica — одно из наиболее распространённых в мире программных средств для осуществления численных и символьных компьютерных вычислений, которое, кроме того, обладает широкими возможностями для визуализации результатов. Mathematica позволяет осуществлять широкий спектр символьных преобразований, в том числе и операции математического анализа: дифференцирование, интегрирование, разложение в ряд и др. Помимо аналитических расчётов программа обеспечивает возможность применения разнообразных численных методов. Mathematica обладает развитой двух- и трёхмерной графикой, позволяющей как нельзя более наглядно для пользователя представить результаты расчётов. По сущности своей Mathematica представляет собой язык программирования высокого уровня, который позволяет реализовать различные стили программирования. В своей совокупности перечисленные возможности превращают в удобный и мощный инструмент физических и математических исследований. В настоящем курсе лекций мы в равной мере уделим внимание всем означенным выше возможностям Mathematica: дадим общую характеристику пакета, в теории и примерах рассмотрим основные встроенные функции, научимся создавать собственные функции и процедуры. (c) ООО “ИНТУИТ.РУ”, 2012-2016 (c) Седов Е.С., 2012-2016 3
Предисловие Накопление и анализ данных лежат в основе становления современной человеческой цивилизации. Имея опыт предыдущих поколений, каждое новое поколение наших предков избавилось от необходимости познавать окружающий мир, основываясь исключительно на информации, получаемой от собственных органов чувств, на собственных удачах и ошибках. Информация оставалась от предшественников, и новым членам общества не требовалось тратить время и прилагать усилия для её повторного освоения. С течением времени увеличивался и объём накопленных данных, и скорость получения новой информации, для обработки и хранения которой человеческих чувств и памяти перестало хватать. Будучи к тому времени достаточно развитым, человеческое общество изыскивало пути для расширения собственных Богом заданных возможностей и придумывало технические средства, которые взяли на себя часть нагрузки по работе с информацией, на которую собственных человеческих сил оказывалось недостаточно. Увеличивалось количество информации, совершенствовались средства и методы работы с ней. От конкретных образов в виде рисунков грязью на стенах пещеры перешли к абстрактным символам на глиняных табличках, узорам на древесной коре, иероглифам и буквам на пергаменте, папирусе, бумаге. От счёта до десяти, по количеству пальцев на обеих руках, перешли к счёту до сотни, тысячи, миллиона, любого числа, какое только в голову пришло. Зарубкам на палочках, узелкам на верёвочках пришли на смену абаки, счёты, арифмометры, калькуляторы, компьютеры. По грандиозности эволюция технических средств для работы с информацией от первых мазков грязью по стене до современных суперкомпьютеров ничуть не уступает эволюции биологических видов от бездушных коацерватных капель до человека во всей его красе. В последние десятилетия суммарное количество человеческих знаний удваивается каждые два-три года. Если бы речь шла лишь о том, чтобы только накапливать и хранить эти знания, никаких дополнительных проблем и вопросов в ближайшие годы не возникало бы. Человечеству достаточно было бы запастись жёсткими дисками пообъёмней да складами под них попросторней. Однако какой смысл накапливать информацию, которая лежит мёртвым грузом, никак и нигде не используется? Все новые знания нуждаются в обработке и систематизации, а старые — в проверке, переосмыслении и дополнении. Ещё одна проблема заключается в том, что все накопленные данные имеют совершенно различный характер, способы представления — это текст, музыка, графика, видео, массивы чисел и т. д. Если воспринять человек всё это худо-бедно сможет, то досконально запомнить, нужным образом обработать и точно воспроизвести не сумеет при всём старании. Таким образом, без дополнительных средств с таким объёмом разнотипных данных не смогут справиться и все умы человечества. Именно поэтому совершенно естественным образом возникает необходимость переложить рутину обработки информации на бездушные электронные машины: им безразлично содержание обрабатываемых данных и их количество, однако небезразличен тип этих данных; кроме того, сами они не в состоянии догадаться, что следует делать с поступающей информацией. Поэтому чтобы заставить машины корректно выполнять возложенные на них функции, следует, 4
во-первых, формализовать поступающую на вход информацию, то есть, представить данные в удобном для машин виде, а во-вторых, разработать алгоритмы, по которым будет вестись обработка. Безусловно, создать Единый Программный Продукт (да, именно так, с большой буквы!), который одинаково успешно работал бы со всеми типами данных, практически невозможно, да и не нужно. И стоил бы он баснословных денег. Поэтому для обработки текстовых, графических, аудио- и видеоданных существуют специализированные текстовые, графические, звуковые и видеоредакторы как с широким функционалом, так и с узкими акцентированными возможностями. Свой инструментарий имеется и для обработки численных данных, решения статистических, математических и естественнонаучных (физических, химических и др.) задач. Именно их решению в широком смысле и посвящен настоящий курс лекций. Из указанных исторически именно математические (а точнее, арифметические) задачи технические средства научились решать первыми. Простейшие калькуляторы значительно упростили работу тем, кто регулярно имел дело с несложными математическими расчётами. Однако время шло, расчёты усложнялись, объём данных рос. В ответ на это появились технические и программные средства, оперирующие значительными по объёму массивами чисел. В конце концов, математические операции над численными данными стали полновластной епархией электронных вычислительных машин. До недавнего времени качественные задачи, как то: рассмотрение аналитических зависимостей, решение уравнений с переменными параметрами, математический анализ алгебраических выражений, — оставались в ведении исследователей-людей. Однако настал момент, когда и эти задачи научился решать компьютер. К сожалению (а может быть и к счастью?), машины пока не умеют самостоятельно выбирать направление исследований, ставить промежуточные и конечные цели, оптимально подбирать алгоритмы решений. Именно в том, чтобы указать компьютеру путь, которому нужно следовать, определить задачи, которые необходимо решить, подсказать наиболее эффективный способ решения, и состоит роль человека в человеко-машинном взаимодействии, направленном на достижение требуемого результата. Посредником между человеческим интеллектом и вычислительными мощностями компьютеров выступает программное обеспечение. Пользуясь тем или иным программным средством, человек может доступно объяснить компьютеру то, чего хочет от него добиться. Для выполнения численных расчётов и символьных вычислений такими программными средствами являются системы компьютерной алгебры (СКА). Ныне используются такие СКА как Sage, Maxima, Maple. Однако, несмотря на все их возможности и достоинства, эти программы мы оставим за пределами рассмотрения в рамках данного курса, а настоящий курс всецело посвятим системе компьютерной алгебры Mathematica. Mathematica — это детище американской компании Wolfram Research. Её основатель и идейный вдохновитель — британский физик, математик, программист Стивен 5
Вольфрам. Только человек, по роду своей деятельности имеющий дело с математическими расчётами, глубоко понимающий их специфику и потребности, мог создать подобный программный продукт. До Mathematica было создано большое количество прикладных программ для компьютерных вычислений, обработки массивов численных данных. Mathematica с не меньшим, чем её предшественники и современники, успехом справляется с подобными задачами. Но не это ставит Mathematica на голову выше всех разработанных ранее программных средств. Важнейшее преимущество Mathematica заключается в умении выполнять символьные преобразования, в том числе операции математического анализа. Теперь та рутина, которая занимала у исследователей часы и дни, выполняется компьютером за считанные минуты (а то и секунды, для несложных с точки зрения Mathematica задач). Полученные результаты Mathematica позволяет наглядно отображать на экране: для этих целей она имеет мощную двух- и трёхмерную графику. Динамические процессы могут быть визуализированы в виде анимационных роликов. С такими возможностями СКА Mathematica бесспорно достойна занять почётное место в инструментарии всех серьёзных (и не очень) исследователей. По своей сути Mathematica является языком программирования высокого уровня и поддерживает традиционные стили программирования: процедурный и функциональный. Ещё один стиль, основанный на правилах преобразований, непосредственно присущ системе, поскольку именно он лежит в основе возможности выполнения алгебраических преобразований. Mathematica не появилась раз и на века! Она является динамично развивающимся программным средством. Регулярно выходят обновления, новые версии, пакеты расширений. Совершенствуется Mathematica по принципу дополнения новых возможностей и исправления неудачных решений, а не перерабатывается кардинально с каждой новой версией. Поэтому бОльшая часть того, что говорится о возможностях старых версий, справедлива и для новых. Так от версии к версии не меняется синтаксис команд, не удаляются функции, не снижается эффективность работы. Поэтому если вы освоили старую версию Mathematica, вы с не меньшим успехом сумеете работать и в новой. Хотя предисловие написано в неформальном и ироничном стиле, курс, который вы будете стараться освоить, весьма серьёзен, и изложение лекций в нём достаточное сухое и официальное. В процессе обучения вы в той или иной мере познакомитесь со всеми упомянутыми в предисловии возможностями Mathematica. В частности вы познакомитесь с особенностями представления численных данных в Mathematica и работы с ними, выполнением символьных вычислений, с принципами создания двух- и трёхмерных графических объектов, возможностями Mathematica как языка программирования. Первая версия СКА Mathematica появилась в 1988 году, больше двадцати лет назад. Безусловно, за это время появилось огромное количество литературы на многих языках, содержащей те или иные сведения о пакете. Для того чтобы в должной мере овладеть Mathematica, совершенно нет необходимости знакомиться со всей официально изданной литературой, тем более что часть сведений уже потеряла 6
актуальность, а содержание одних изданий значительно перекрывается с содержанием других. Стартовой точкой в освоении Mathematica может стать настоящий курс. Он создавался на основе ряда литературных источников. Ключевые моменты в той или иной области выбирались из тех источников, где эта область наиболее доступно, с нужной степенью достаточности изложена, и по необходимости дополнялись сведениями из других источников. Логика изложения некоторых моментов, определения, примеры заимствовалась у авторов используемых произведений, и в тексте курса имеются полные ссылки на первоисточник, чтобы читатель при необходимости мог с наименьшими затратами времени к ним обратиться. Среди прочих необходимо отдельно отметить те издания, которые дали для курса наибольшее количество информации и сделали его настолько ёмким, полным и полезным, насколько он является таковым сейчас. Начальные сведения о СКА Mathematica, о классах и типах данных и способах их представления, синтаксисе почерпнуты из книги В. П. Дьяконова “Mathematica 5.1/5.2/6. Программирование и математические вычисления”. Компетентность автора не вызывает никаких сомнений, поскольку эта книга стала результатом многолетних трудов автора по освоению современных СКА, его собственных наработок в области компьютерных вычислений и плодотворного сотрудничества с корпорацией Wolfram Research, Inc. Знакомство с интерфейсом программы проводилось по книге А. П Мостовского “Информационные технологии в математике”. Книга знакомит читателя с двумя программными средствами, которые могут значительно облегчить трудовые будни исследователей физиков и математиков. Одна часть книги посвящена издательским системам LaTeX и AMS-LaTeX, знакомство с которыми, конечно же, осталось за рамками рассмотрения в настоящем курсе. Другая часть книги содержит ключевые сведения о СКА Mathematica. Очевидно, что именно второй части в данном курсе и уделено пристальное внимание. Основную информацию об умении Mathematica выполнять символьные преобразования, об использовании Mathematica как языка программирования высокого уровня и о реализации в программе трёх наиболее популярных стилей программирования в большинстве своём мы получили из двух изданий. Первое — книга нашего соотечественника Е. М. Воробьёва “Введение в систему “Математика””, второе — книга П. Веллина, С. Камина и Р. Гейлорда (P. Wellin, S. Kamin, and R. Gaylord) “An Introduction to Programming with Mathematica”. В них содержится хорошо структурированная информация по многим возможностям СКА Mathematica и большое количество ёмких примеров. К большому сожалению для большого числа слушателей данного курса, книга П. Веллина написана на английском языке. Книга П. Веллина и др. оказалась незаменимой и при получении информации о работе с числами, их типами, способами представления, о понятиях точности и разрядности и их важности в вычислениях. Общие сведения о графических возможностях Mathematica мы почерпнули из уже упомянутой книги Е. М. Воробьёва, а подробности, детали и хитрости из книги Ч. Гетца и Дж. Хелмстедт (Ch. Getz and J. Helmstedt) “Graphics with Mathematica. Fractals, 7
Julia Sets, Patterns and Natural Forms”. Последняя книга также написана на английском языке. Всей информации, почерпнутой из указанных источников, автор настоящего курса находил подтверждение в “библии” пользователей Mathematica — книге Стивена Вольфрама (Stephen Wolfram) “The Mathematica Book”. Иные источники, использованные при создании данного курса, которые автор обошёл вниманием в предисловии, являются не менее ценными и все они указаны в списке использованной литературы. Данный курс будет служить прекрасной отправной точкой для освоения СКА Mathematica. Имеющейся в нём информации достаточно для комфортного выполнения большинства математических расчётов, и у многих читателей может не возникнуть необходимости в получении информации сверх содержащейся здесь. Однако для лучшего освоения материала, более глубокого его понимания, получения более полных, подробных данных автор настоятельно рекомендует во время или по изучении курса ознакомиться с указанными выше источниками. 8
Первое знакомство с Mathematica В настоящей лекции мы впервые познакомимся с пакетом Mathematica, её возможностями при выполнении вычислений, узнаем некоторые встроенные функции. Мы научимся осуществлять элементарные математические операции, “задавать вопросы” Mathematica (вводить данные) и “получать ответы” (получать результат вычислений), а также пользоваться встроенной документацией, расширяющей возможности пользователя при работе пакетом. Цель лекции: познакомиться с основными возможностями пакета и базовыми принципами работы в системе компьютерной алгебры Mathematica. 1.0. Введение: Основные возможности системы компьютерной алгебры Mathematica Пакет Mathematica совершенствуется и развивается уже не одно десятилетие, начиная с конца восьмидесятых годов прошлого века. За эти годы Mathematica из программируемого калькулятора, однако, уже тогда способного на многое в математике, выросла в полноценную систему компьютерной алгебры. Все возможности Mathematica можно разделить на 4 больших категории: численные расчёты, символьные вычисления, визуализация и программирование. Краткую обобщённую классификацию возможностей Mathematica приводят А.Н. Прокопеня и А.В. Чичурин в книге [5, с. 6–7]. В редуцированном виде приведём её в нашем курсе. 1. Численные расчеты 2. Mathematica позволяет производить вычисления с любой точностью. Это отличает её от обычного калькулятора, для которого точность вычислений фиксирована. Также Mathematica может производить расчеты с использованием специальных функций. Mathematica умеет вычислять интегралы, численно решать алгебраические и дифференциальные уравнения и системы уравнений. Mathematica позволяет производить статистический анализ численных данных, производить Фурье-анализ, интерполяцию и аппроксимацию данных с помощью метода наименьших квадратов. Mathematica прекрасно работает не только с числами, но и с матрицами, обеспечивая выполнение всех операций линейной алгебры. 3. Символьные вычисления 4. Mathematica позволяет оперировать алгебраическими формулами: разлагать на множители, раскрывать скобки или напротив, производить упрощение многочленов и т.д. Mathematica позволяет находить решения дифференциальных уравнений, находить интегралы и производные в символьном виде. Mathematica может разлагать функцию в ряд, вычислять пределы. 5. Визуализация или графика 9
6. Mathematica умеет строить двух- и трехмерные графики аналитических функций, заданных явно или параметрически, а также контурные и плотностные графики. Помимо функциональных зависимостей Mathematica умеет визуализировать дискретные наборы данных. Mathematica обладает значительным набором инструментов, опций, позволяющих контролировать оформление изображений, графиков. Так, например, можно изменять цвет графиков, управлять тенями, освещением и яркостью и т.д. Mathematica позволяет строить изображения, используя элементарные графические объекты, стандартные фигуры. В двумерной графике это — многоугольники, окружности, дуги и т.д., в трёхмерной графике — параллелепипеды, сферы, цилиндры, конусы и т.д. Также Mathematica позволяет добавлять текстовые комментарии в любое место двумерного или трехмерного графического объекта. 7. Программирование 8. Mathematica позволяет создавать дополнительные функции под нужды пользователя. Использование именно этой возможности подразумевает функциональный стиль программирования. Mathematica обладает таким инструментом, как правила преобразований, которые позволяют одним символьным выражениям ставить в соответствие другие символьные выражения и численные значения. На этой возможности базируется так называемый стиль программирования, основанный на правилах преобразования. В Mathematica содержится большое количество встроенных функций, позволяющих разветвлять вычисления в зависимости от выполнения определённых условий, многократно выполнять тот или иной алгоритм действий, реализуя тем самым процедурный стиль программирования. Mathematica сама по себе представляет собой язык программирования высокого уровня, на котором можно писать как малые, так и большие программы. 1.1. Начало работы в Mathematica. Интерфейс программы 1.1.1.Главное меню программы Mathematica, как и всякая программа, предназначенная для выполнения под Windows, запускается после двойного щелчка кнопкой мыши на соответствующей пиктограмме. На рис. 1.1 приведён снимок экрана с запущенной программой Mathematica. Основные элементы интерфейса программы следующие: в самом верху экрана располагается строка главного меню, белая прямоугольная область в средней части экрана — окно редактирования или окно ввода; тяготеющие к правой части экрана окна — палитры. Начнём описание интерфейса программы с главного меню. 10