Опубликован: 03.12.2012 | Доступ: свободный | Студентов: 1143 / 280 | Длительность: 16:43:00
Лекция 1:

Предисловие

Лекция 1 || Лекция 2 >

Накопление и анализ данных лежат в основе становления современной человеческой цивилизации. Имея опыт предыдущих поколений, каждое новое поколение наших предков избавилось от необходимости познавать окружающий мир, основываясь исключительно на информации, получаемой от собственных органов чувств, на собственных удачах и ошибках. Информация оставалась от предшественников, и новым членам общества не требовалось тратить время и прилагать усилия для её повторного освоения. С течением времени увеличивался и объём накопленных данных, и скорость получения новой информации, для обработки и хранения которой человеческих чувств и памяти перестало хватать. Будучи к тому времени достаточно развитым, человеческое общество изыскивало пути для расширения собственных Богом заданных возможностей и придумывало технические средства, которые взяли на себя часть нагрузки по работе с информацией, на которую собственных человеческих сил оказывалось недостаточно. Увеличивалось количество информации, совершенствовались средства и методы работы с ней. От конкретных образов в виде рисунков грязью на стенах пещеры перешли к абстрактным символам на глиняных табличках, узорам на древесной коре, иероглифам и буквам на пергаменте, папирусе, бумаге. От счёта до десяти, по количеству пальцев на обеих руках, перешли к счёту до сотни, тысячи, миллиона, любого числа, какое только в голову пришло. Зарубкам на палочках, узелкам на верёвочках пришли на смену абаки, счёты, арифмометры, калькуляторы, компьютеры. По грандиозности эволюция технических средств для работы с информацией от первых мазков грязью по стене до современных суперкомпьютеров ничуть не уступает эволюции биологических видов от бездушных коацерватных капель до человека во всей его красе.

В последние десятилетия суммарное количество человеческих знаний удваивается каждые два-три года. Если бы речь шла лишь о том, чтобы только накапливать и хранить эти знания, никаких дополнительных проблем и вопросов в ближайшие годы не возникало бы. Человечеству достаточно было бы запастись жёсткими дисками пообъёмней да складами под них попросторней. Однако какой смысл накапливать информацию, которая лежит мёртвым грузом, никак и нигде не используется? Все новые знания нуждаются в обработке и систематизации, а старые — в проверке, переосмыслении и дополнении.

Ещё одна проблема заключается в том, что все накопленные данные имеют совершенно различный характер, способы представления — это текст, музыка, графика, видео, массивы чисел и т. д. Если воспринять человек всё это худо-бедно сможет, то досконально запомнить, нужным образом обработать и точно воспроизвести не сумеет при всём старании.

Таким образом, без дополнительных средств с таким объёмом разнотипных данных не смогут справиться и все умы человечества. Именно поэтому совершенно естественным образом возникает необходимость переложить рутину обработки информации на бездушные электронные машины: им безразлично содержание обрабатываемых данных и их количество, однако небезразличен тип этих данных; кроме того, сами они не в состоянии догадаться, что следует делать с поступающей информацией. Поэтому чтобы заставить машины корректно выполнять возложенные на них функции, следует, во-первых, формализовать поступающую на вход информацию, то есть, представить данные в удобном для машин виде, а во-вторых, разработать алгоритмы, по которым будет вестись обработка.

Безусловно, создать Единый Программный Продукт (да, именно так, с большой буквы!), который одинаково успешно работал бы со всеми типами данных, практически невозможно, да и не нужно. И стоил бы он баснословных денег.

Поэтому для обработки текстовых, графических, аудио- и видеоданных существуют специализированные текстовые, графические, звуковые и видеоредакторы как с широким функционалом, так и с узкими акцентированными возможностями. Свой инструментарий имеется и для обработки численных данных, решения статистических, математических и естественнонаучных (физических, химических и др.) задач. Именно их решению в широком смысле и посвящен настоящий курс лекций.

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

До недавнего времени качественные задачи, как то: рассмотрение аналитических зависимостей, решение уравнений с переменными параметрами, математический анализ алгебраических выражений, — оставались в ведении исследователей-людей. Однако настал момент, когда и эти задачи научился решать компьютер. К сожалению (а может быть и к счастью?), машины пока не умеют самостоятельно выбирать направление исследований, ставить промежуточные и конечные цели, оптимально подбирать алгоритмы решений. Именно в том, чтобы указать компьютеру путь, которому нужно следовать, определить задачи, которые необходимо решить, подсказать наиболее эффективный способ решения, и состоит роль человека в человеко-машинном взаимодействии, направленном на достижение требуемого результата.

Посредником между человеческим интеллектом и вычислительными мощностями компьютеров выступает программное обеспечение. Пользуясь тем или иным программным средством, человек может доступно объяснить компьютеру то, чего хочет от него добиться. Для выполнения численных расчётов и символьных вычислений такими программными средствами являются системы компьютерной алгебры (СКА). Ныне используются такие СКА как Sage, Maxima, Maple. Однако, несмотря на все их возможности и достоинства, эти программы мы оставим за пределами рассмотрения в рамках данного курса, а настоящий курс всецело посвятим системе компьютерной алгебры Mathematica.

Mathematica — это детище американской компании Wolfram Research. Её основатель и идейный вдохновитель — британский физик, математик, программист Стивен Вольфрам. Только человек, по роду своей деятельности имеющий дело с математическими расчётами, глубоко понимающий их специфику и потребности, мог создать подобный программный продукт.

До Mathematica было создано большое количество прикладных программ для компьютерных вычислений, обработки массивов численных данных. Mathematica с не меньшим, чем её предшественники и современники, успехом справляется с подобными задачами. Но не это ставит Mathematica на голову выше всех разработанных ранее программных средств. Важнейшее преимущество Mathematica заключается в умении выполнять символьные преобразования, в том числе операции математического анализа. Теперь та рутина, которая занимала у исследователей часы и дни, выполняется компьютером за считанные минуты (а то и секунды, для несложных с точки зрения Mathematica задач). Полученные результаты Mathematica позволяет наглядно отображать на экране: для этих целей она имеет мощную двух- и трёхмерную графику. Динамические процессы могут быть визуализированы в виде анимационных роликов. С такими возможностями СКА Mathematica бесспорно достойна занять почётное место в инструментарии всех серьёзных (и не очень) исследователей.

По своей сути Mathematica является языком программирования высокого уровня и поддерживает традиционные стили программирования: процедурный и функциональный. Ещё один стиль, основанный на правилах преобразований, непосредственно присущ системе, поскольку именно он лежит в основе возможности выполнения алгебраических преобразований.

Mathematica не появилась раз и на века! Она является динамично развивающимся программным средством. Регулярно выходят обновления, новые версии, пакеты расширений. Совершенствуется Mathematica по принципу дополнения новых возможностей и исправления неудачных решений, а не перерабатывается кардинально с каждой новой версией. Поэтому бОльшая часть того, что говорится о возможностях старых версий, справедлива и для новых. Так от версии к версии не меняется синтаксис команд, не удаляются функции, не снижается эффективность работы. Поэтому если вы освоили старую версию Mathematica, вы с не меньшим успехом сумеете работать и в новой.

Хотя предисловие написано в неформальном и ироничном стиле, курс, который вы будете стараться освоить, весьма серьёзен, и изложение лекций в нём достаточное сухое и официальное. В процессе обучения вы в той или иной мере познакомитесь со всеми упомянутыми в предисловии возможностями Mathematica. В частности вы познакомитесь с особенностями представления численных данных в Mathematica и работы с ними, выполнением символьных вычислений, с принципами создания двух- и трёхмерных графических объектов, возможностями Mathematica как языка программирования.

Первая версия СКА Mathematica появилась в 1988 году, больше двадцати лет назад. Безусловно, за это время появилось огромное количество литературы на многих языках, содержащей те или иные сведения о пакете. Для того чтобы в должной мере овладеть Mathematica, совершенно нет необходимости знакомиться со всей официально изданной литературой, тем более что часть сведений уже потеряла актуальность, а содержание одних изданий значительно перекрывается с содержанием других. Стартовой точкой в освоении 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, Julia Sets, Patterns and Natural Forms". Последняя книга также написана на английском языке.

Всей информации, почерпнутой из указанных источников, автор настоящего курса находил подтверждение в "библии" пользователей Mathematica — книге Стивена Вольфрама (Stephen Wolfram) "The Mathematica Book".

Иные источники, использованные при создании данного курса, которые автор обошёл вниманием в предисловии, являются не менее ценными и все они указаны в списке использованной литературы.

Данный курс будет служить прекрасной отправной точкой для освоения СКА Mathematica. Имеющейся в нём информации достаточно для комфортного выполнения большинства математических расчётов, и у многих читателей может не возникнуть необходимости в получении информации сверх содержащейся здесь. Однако для лучшего освоения материала, более глубокого его понимания, получения более полных, подробных данных автор настоятельно рекомендует во время или по изучении курса ознакомиться с указанными выше источниками.

Лекция 1 || Лекция 2 >