Данная книга посвящена открытым программным средствам, позволяющим провести весь цикл разработки какой-либо математической модели: от поиска и просмотра необходимой литературы до непосредственного решения задачи (аналитического и/или численного) и подготовки отчёта или статьи к печати. В ней предпринята попытка объяснить, что система аналитических вычислений Maxima и (если необходимо) вычислительная среда Octave — хороший выбор для проведения любой учебной задачи или серьёзного исследования, где требуется математика — от курсовой работы до научной или инженерной разработки высокого класса. С помощью этих пакетов проще готовить и выполнять задания, устраивать демонстрации и гораздо быстрее решать исследовательские и инженерные задачи.
В настоящее время компьютерные программы этого класса (проприетарные — Maple, Mathematica, MATLAB, MathCad и др., или с открытым кодом) находят самое широкое применение в научных исследованиях, становятся одним из обязательных компонентов компьютерных технологий, используемых в образовании.
Эти системы имеют дружественный интерфейс, реализуют множество стандартных и специальных математических операций, снабжены мощными графическими средствами и обладают собственными языками программирования. Всё это предоставляет широкие возможности для эффективной работы специалистов разных профилей, о чём говорит активное применение математических пакетов в научных исследованиях и преподавании.
Для школьников системы компьютерной математики (СКМ) являются незаменимым помощником в изучении математики, физики, информатики, освобождая их от рутинных расчётов и сосредотачивая их внимание на сущности метода решения той или иной задачи. Применение СКМ позволяет решать целый спектр новых трудоёмких, но интересных задач: от упрощения громоздких алгебраических выражений, аналитического решения уравнений и систем с параметрами, графических построений, до анимации графиков и пошаговой визуализации самого процесса решения. Учащимся предоставляется возможность выполнять более содержательные задания и получать наглядные результаты. Это способствует закреплению знаний и умений, приобретённых ими при изучении других школьных дисциплин, помогает в полной мере проявлять свои творческие и исследовательские способности.
Для студентов СКМ удобное средство решения всевозможных задач, связанных с символьными преобразованиями (математический анализ, высшая математика, линейная алгебра и аналитическая геометрия и т.п.), а также средство решения задач моделирования статических (описываемых алгебраическими уравнениями) и динамических (описываемых дифференциальными уравнениями) систем. Кроме того, добротная СКМ — хорошее средство создания графических иллюстраций и документов, содержащих математические формулы и выкладки. В настоящее время для проведения расчётов по всевозможным техническим дисциплинам студентами-нематематиками широко используется пакет MatCad, в основе которого лежит ядро Maple. При некотором навыке и наличии документации связка Maxima+TexMacs или ядро Maxima+интерфейс wxMaxima вполне разумная замена MathCad в Unix-среде. А наличие универсального интерфейса в виде TexMacs или Emacs позволяет объединять в одном документе расчёты, выполненные в Maxima, Octave, Axiom и т.п.
Для научных работников и инженеров СКМ незаменимое средство анализа постановки всевозможных задач моделирования. Под системами компьютерной математики понимают программное обеспечение, которое позволяет не только выполнять численные расчёты на компьютере, но и производить аналитические (символьные) преобразования различных математических и графических объектов. Все широко известные математические пакеты: Maple, Matlab, Matematica, позволяют проводить как символьные вычисления, так и использовать численные методы. В настоящее время такие системы являются одним из основных вычислительных инструментов компьютерного моделирования в реальном времени и находят применение в различных областях науки. Они открывают также новые возможности для преподавания многих учебных дисциплин, таких как алгебра и геометрия, физика и информатика, экономика и статистика, экология. Применение СКМ существенно повышает производительность труда научного работника, преподавателя вуза, учителя.
Конечным продуктом исследования выступают публикации, подготовка, распространение и использование которых в настоящее время требует квалифицированного применения компьютера. Это касается редактирования текста, изготовления графических материалов, ведения библиографии, размещения электронных версий в Интернете, поиска статей и их просмотра. Де-факто сейчас стандартными системами подготовки научно-технических публикаций являются различные реализации пакета ТеХ и текстовый редактор Word. Кроме того, необходимы минимальные знания о стандартных форматах файлов, конверторах, программах и утилитах, используемых при подготовке публикаций.
История математики насчитывает около трёх тысячелетий и условно может быть разделена на несколько периодов. Первый — становление и развитие понятия числа, решение простейших геометрических задач. Второй период связан с появлением "Начал" Евклида и утверждением хорошо знакомого нам способа доказательства математических утверждений с помощью цепочек логических умозаключений.
Следующий этап берёт своё начало с развития дифференциального и интегрального исчисления. Наконец, последний период сопровождается появлением и распространением понятий и методов теории множеств и математической логики, на прочном фундаменте которых возвышается всё здание современной математики.
Мы живём во время начала нового периода развития математики, который связан с изобретением и применением компьютеров. Прежде всего, компьютер предоставил возможность производить сложнейшие численные расчёты для решения тех задач, которые невозможно (по крайней мере, на данный момент) решить аналитически. Появилось так называемое "компьютерное моделирование" — целая отрасль прикладной математики, в которой с помощью самых современных вычислительных средств изучается поведение многих сложных экономических, социальных, экологических и других динамических систем.
Изучение математики даёт в распоряжение будущего инженера, экономиста, научного работника не только определённую сумму знаний, но и развивает в нём способность ставить, исследовать и решать самые разнообразные задачи. Иными словами, математика развивает мышление будущего специалиста и закладывает прочный понятийный фундамент для освоения многих специальных дисциплин. Кроме того, именно с её помощью лучше всего развиваются способности логического мышления, концентрации внимания, аккуратности и усидчивости.
Компьютерная алгебра — область математики, лежащая на стыке алгебры и вычислительных методов. Для неё, как и для любой области, лежащей на стыке различных наук, трудно определить чёткие границы. Часто говорят, что к компьютерной алгебре относятся вопросы слишком алгебраические, чтобы содержаться в учебниках по вычислительной математике, и слишком вычислительные, чтобы содержаться в учебниках по алгебре. При этом ответ на вопрос о том, относится ли конкретная задача к компьютерной алгебре, часто зависит от склонностей специалиста.
Большинство первых систем компьютерной математики (Eureka, Mercury, Excel, Lotus-123, MathCad для MS-DOS, PC MatLab и др.) предназначались для численных расчётов. Они как бы превращали компьютер в большой программируемый калькулятор, способный быстро и автоматически (по введённой программе) выполнять арифметические и логические операции над числами или массивами чисел. Их результат всегда конкретен — это или число, или набор чисел, представляющих таблицы, матрицы или точки графиков. Разумеется, компьютер позволяет выполнять такие вычисления с немыслимой ранее скоростью, педантичностью и даже точностью, выводя результаты в виде хорошо оформленных таблиц или графиков.
Однако результаты вычислений редко бывают абсолютно точными в математическом смысле: как правило, при операциях с вещественными числами происходит их округление, обусловленное принципиальным ограничением разрядной сетки компьютера при хранении чисел в памяти. Реализация большинства численных методов (например, решения нелинейных или дифференциальных уравнений) также базируется на заведомо приближённых алгоритмах. Часто из-за накопления погрешностей эти методы теряют вычислительную устойчивость и расходятся, давая неверные решения или даже ведя к полному краху работы вычислительной системы — вплоть до злополучного "зависания".
Условия появления ошибок и сбоев не всегда известны — их оценка довольно сложна в теоретическом отношении и трудоёмка на практике. Поэтому рядовой пользователь, сталкиваясь с такой ситуацией, зачастую становится в тупик или, что намного хуже, неверно истолковывает явно ошибочные результаты вычислений, "любезно" предоставленные ему компьютером. Трудно подсчитать, сколько "открытий" на компьютере было отвергнуто из-за того, что наблюдаемые колебания, выбросы на графиках или асимптоты ошибочно вычисленных функций неверно истолковывались как новые физические закономерности моделируемых устройств и систем, тогда как на деле были лишь грубыми погрешностями численных методов решения вычислительных задач.
Многие учёные справедливо критиковали численные математические системы и программы реализации численных методов за частный характер получаемых с их помощью результатов. Они не давали возможности получить общие формулы, описывающие решение задач. Как правило, из результатов численных вычислений невозможно было сделать какие-либо общие теоретические, а подчас и практические выводы. Поэтому, прежде чем использовать такие системы в реализации серьёзных научных проектов, приходилось прибегать к дорогой и недостаточно оперативной помощи математиков-аналитиков. Именно они решали нужные задачи в аналитическом виде и предлагали более или менее приемлемые методы их численного решения на компьютерах.
Термин "компьютерная алгебра" возник как синоним терминов "символьные вычисления", "аналитические вычисления", "аналитические преобразования" и т. д. Даже в настоящее время этот термин на французском языке дословно означает "формальные вычисления".
В чём основные отличия символьных вычислений от численных и почему возник термин "компьютерная алгебра"?
Когда мы говорим о вычислительных методах, то считаем, что все вычисления выполняются в поле вещественных или комплексных чисел. В действительности же всякая программа для ЭВМ имеет дело только с конечным набором рациональных чисел, поскольку только такие числа представляются в компьютере. Для записи целого числа отводится обычно 16 или 32 двоичных символа (бита), для вещественного – 32 или 64 бита. Это множество не замкнуто относительно арифметических операций, что может выражаться в различных переполнениях (например, при умножении достаточно больших чисел или при делении на маленькое число). Ещё более существенной особенностью вычислительной математики является то, что арифметические операции над этими числами, выполняемые компьютером, отличаются от арифметических операций в поле рациональных чисел.
Особенностью компьютерных вычислений является неизбежное наличие погрешности или конечная точность вычислений. Каждую задачу требуется решить с использованием имеющихся ресурсов ЭВМ за обозримое время с заданной точностью, поэтому оценка погрешности — важная задача вычислительной математики.
Решение проблемы точности вычислений и конечности получаемых численных результатов в определённой степени даётся развитием систем компьютерной алгебры. Системы компьютерной алгебры, осуществляющие аналитические вычисления, широко используют множество рациональных чисел. Компьютерные операции над рациональными числами совпадают с соответствующими операциями в поле рациональных чисел. Кроме того, ограничения на допустимые размеры числа (количество знаков в его записи) позволяет пользоваться практически любыми рациональными числами, операции над которыми выполняются за приемлемое время.
В компьютерной алгебре вещественные и комплексные числа практически не применяются, зато широко используется алгебраические числа. Алгебраическое число задаётся своим минимальным многочленом, а иногда для его задания требуется указать интервал на прямой или область в комплексной плоскости, где содержится единственный корень данного многочлена. Многочлены играют в символьных вычислениях исключительно важную роль. На использовании полиномиальной арифметики основаны теоретические методы аналитической механики, они применяются во многих областях математики, физики и других наук. Кроме того, в компьютерной алгебре рассматриваются такие объекты, как дифференциальные поля (функциональные поля), допускающие показательные, логарифмические, тригонометрические функции, матричные кольца (элементы матрицы принадлежат кольцам достаточно общего вида) и другие. Даже при арифметических операциях над такими объектами происходит разбухание информации, и для записи промежуточных результатов вычислений требуется значительный объём памяти ЭВМ.
В научных исследованиях и технических расчётах специалистам приходится гораздо больше заниматься преобразованиями формул, чем собственно численным счётом. Тем не менее, с появлением ЭВМ основное внимание уделялось автоматизации численных вычислений, хотя ЭВМ начали применяться для решения таких задач символьных преобразований, как, например, символьное дифференцирование, ещё в 50-х годах прошлого века. Активная разработка систем компьютерной алгебры началась в конце 60-х годов. С тех пор создано значительное количество различных систем, получивших различную степень распространения; некоторые системы продолжают развиваться, другие отмирают, и постоянно появляются новые.
В настоящее время системы компьютерной математики (СКМ) можно разделить на семь основных классов: системы для численных расчётов, табличные процессоры, матричные системы, системы для статистических расчётов, системы для специальных расчётов, системы для аналитических расчётов (компьютерной алгебры), универсальные системы.
Каждая система компьютерной математики имеет нюансы в своей архитектуре или структуре. Тем не менее можно прийти к выводу, что у современных универсальных СКМ следующая типовая структура:
Центральное место занимает ядро системы — коды множества заранее откомпилированных функций и процедур, обеспечивающих достаточно представительный набор встроенных функций и операторов системы.
Интерфейс даёт пользователю возможность обращаться к ядру со своими запросами и получать результат решения на экране дисплея. Интерфейс современных СКМ основан на средствах популярных операционных систем Windows 95/98/NT и обеспечивает присущие им удобства работы.
Функции и процедуры, включённые в ядро, выполняются предельно быстро. Поэтому объём ядра ограничивают, но к нему добавляют библиотеки более редких процедур и функций.
Кардинальное расширение возможностей систем и их адаптация к решаемым конкретными пользователями задачам достигаются за счёт пакетов расширения систем. Эти пакеты (нередко и библиотеки) пишутся на собственном языке программирования той или иной СКМ, что делает возможным их подготовку обычными пользователями.
Ядро, библиотеки, пакеты расширения и справочная система современных СКМ аккумулируют знания в области математики, накопленные за тысячелетия её развития.
Возрастающий интерес к алгебраическим алгоритмам возник в результате осознания центральной роли алгоритмов в информатике. Их легко описать на формальном и строгом языке и с их помощью обеспечить решение задач, давно известных и изучавшихся на протяжении веков. В то время как традиционная алгебра имеет дело с конструктивными методами, компьютерная алгебра интересуется ещё и эффективностью, реализацией, а также аппаратными и программными аспектами таких алгоритмов. Оказалось, что при принятии решения об эффективности и определении производительности алгебраических методов требуются многие другие средства, например, теория рекурсивных функций, математическая логика, анализ и комбинаторика.
В начальный период применения вычислительных машин в символьной алгебре быстро стало очевидным, что непосредственные методы из учебников часто оказывались весьма неэффективными. Вместо обращения к методам численной аппроксимации компьютерная алгебра систематически изучает источники неэффективности и ведёт поиск иных алгебраических методов для улучшения или даже замены таких алгоритмов.
Первые ЭВМ изначально создавались для того, чтобы проводить сложные расчёты, на которые человек тратил очень много времени. Следующим шагом развития ЭВМ стали ПК. Эти машины могут проводить вычисления разной сложности (от самых простых до самых сложных).Такая их особенность использовалось в разных областях знаний. Развитие компьютерных математических систем привело к появлению отдельного класса программ, который получил названия Системы Компьютерной Алгебры (CAS).
Главная задача CAS — это обработка математических выражений в символьной форме. Символьные операции обычно включают в себя: вычисление символьных либо числовых значений для выражений, преобразование, изменение формы выражений, нахождение производной одной или нескольких переменных, решение линейных и нелинейных уравнений, решение дифференциальных уравнений, вычисление пределов, вычисление определённых и неопределённых интегралов, работа с множествами, вычисления и работа с матрицами. В дополнение к перечисленному, большинство CAS поддерживают разнообразные численные операции: расчёт значений выражений при определённых значениях переменных, построение графиков на плоскости и в пространстве.
Большинство CAS включают в себя высокоуровневый язык программирования, который позволяет реализовать свои собственные алгоритмы. Наука которая изучает алгоритмы, применяемые в CAS, называется компьютерной алгеброй.
Компьютерная алгебра есть та часть информатики, которая занимается разработкой, анализом, реализацией и применением алгебраических алгоритмов. От других алгоритмов алгебраические алгоритмы отличаются наличием простых формальных описаний, существованием доказательств правильности и асимптотических границ времени выполнения, которые можно получить на основе хорошо развитой математической теории. Кроме того, алгебраические объекты можно точно представить в памяти вычислительной машины, благодаря чему алгебраические преобразования могут быть выполнены без потери точности и значимости. Обычно алгебраические алгоритмы реализуются в программных системах, допускающих ввод и вывод информации в символьных алгебраических обозначениях.
Благодаря всему этому специалисты, работающие в информатике, математике и в прикладных областях, проявляют всё больший интерес к компьютерной алгебре. Опираясь на противопоставление, можно сказать, что компьютерная алгебра рассматривает такие объекты, которые имеют слишком вычислительный характер, чтобы встречаться в книгах по алгебре, и слишком алгебраический характер, чтобы быть представленными в учебниках по информатике. Многие алгоритмы компьютерной алгебры можно рассматривать как получисленные (в смысле Кнута).
Отделить компьютерную алгебру от таких математических дисциплин, как алгебра, анализ или численный анализ, нелегко.
Системы компьютерной алгебры обычно включают алгоритмы для интегрирования, вычисления элементарных трансцендентных функций, решения дифференциальных уравнений и т.п. Особенность упомянутых алгоритмов заключается в следующем:
Часто формулы, получаемые в качестве выходной информации при выполнении алгоритмов компьютерной алгебры, используются затем как входная информация в численных процедурах. Например, при интегрировании рациональных функций от нескольких переменных первое и, возможно, второе интегрирования выполняются в символьном виде, а остальные — численно.
Численные процедуры используют арифметику конечной точности и основываются на теории аппроксимации. Например, численная процедура нахождения корней не всегда может отделить все корни, так как работает с числами конечной точности; она отделяет лишь кластеры корней, диаметр которых зависит от заданной точности представления чисел и многих других параметров.
В принципе желательно и возможно описывать численные алгоритмы с той же строгостью, как и алгебраические, однако требуемая при этом детализация гораздо выше, а сходство с математической постановкой задачи менее прозрачно. С другой стороны, при использовании некоторого алгебраического алгоритма точность оплачивается большими — в общем случае существенно — временем выполнения и необходимым объёмом памяти, чем для его численного аналога.
Тем не менее можно привести много примеров таких задач, в которых аппроксимация не имеет большого смысла. Поэтому методы символьных вычислений и чисто численные алгоритмы обычно дополняют друг друга. Современные системы компьютерной алгебры обязательно включают тот или иной набор стандартных численных алгоритмов. Современные системы, рассчитанные на использование в первую очередь численных расчётов (MatLab, его клоны и т.п.) всегда включают более или менее полный набор функций, осуществляющих символьные преобразования.
Реализация на ЭВМ символьной математики открыла принципиально новые возможности использования вычислительных машин в естественнонаучных и прикладных исследованиях. Сейчас уже трудно указать область естественных наук, где методы аналитических вычислений на ЭВМ не нашли бы плодотворных применений. Характерной особенностью проблематики символьных преобразований является сочетание весьма тонких математических и алгоритмических методов с самыми современными методами программирования, эффективно реализующими нечисленную математику в рамках программных систем аналитических вычислений. К числу последних относятся, например, такие популярные системы, как Macsyma, Reduce, АНАЛИТИК и др.
Хорошо известно, что аналитические преобразования являются неотъемлемой частью научных исследований, и зачастую на их выполнение затрачивается больше труда, чем на остальную часть исследований, а для реализации специализированных методов, например, методов современного группового анализа дифференциальных уравнений, особенное значение имеет точность аналитических выражений. Однако ручные вычисления по любому из подобных методов требуют непомерно больших затрат времени. Именно здесь и помогают методы компьютерной алгебры (КА) и соответствующие программные системы, являющиеся практически единственным средством решения таких задач, требующих больших затрат ручных вычислений и очень чувствительных к потере точности при численном счёте на ПК.
Благодаря методам и алгоритмам аналитических вычислений современный компьютер становится уже не столько вычислительной, сколько общематематической машиной. ПК под силу реализовать интегрирование и дифференцирование символьных выражений, перестановки и перегруппировки членов, подстановки в выражения с последующим их преобразованием, решать дифференциальные уравнения и т. д. Аналитические вычисления (АВ) являются составной частью теоретической информатики, которая занимается разработкой, анализом, реализацией и применением алгебраических алгоритмов. Цели АВ лежат в области искусственного интеллекта, несмотря на то, что методы всё более и более удаляются от неё. Кроме того, используемые алгоритмы вводят в действие все менее элементарные математические средства.
Таким образом, АВ как самостоятельная дисциплина, на самом деле, лежит на стыке нескольких областей: информатики, искусственного интеллекта, современной математики (использующей нетрадиционные методы), что одновременно обогащает её и делает более трудной в исследовательском плане. Наименование этой научной дисциплины длительное время колебалось и, наконец, стабилизировалось как "Calcul formel" во французском языке, "Computer algebra" — в английском языке и "аналитические вычисления" или "компьютерная алгебра" — в русском.
Наиболее интуитивная цель АВ заключается в манипуляции с формулами. Математическая формула, описанная на одном из обычных языков программирования (Фортран, Паскаль, Бейсик,. . . ), предназначена только для численных расчётов, когда переменным и параметрам присвоены численные значения.
В языке, допускающем АВ, для этой формулы также можно получить численное значение, но, кроме того, она может стать объектом формальных преобразований: дифференцирования, разложения в ряд, различных других разложений и даже интегрирования.
Интеллектуальность разработанных на сегодняшний день САВ определяется их использованием для организации баз знаний по математическим методам в обучении и образовании. Можно выделить три вида обучения: подготовка специалистов в области АВ (студенты и аспиранты); обучение работе с САВ широкого круга пользователей (знакомство с современным инструментом исследования) и применение САВ в образовании математического и физического профиля (интенсификация образования по курсу бакалавриата).
CAS были созданы в 70-ые годы и развивались в рамках проектов, связанных с искусственным интеллектом. Поэтому сфера применения их достаточно большая и разнообразная. Первыми популярными системами были Reduce, Derive, Macsyma. Некоторые из них до сих пор находятся в продаже. Свободно распространяемая версия Macsyma — Maxima. На данный момент лидерами продаж являются Maple и Mathematica. Оба этих пакета активно используются в математических, инженерных и других научных исследованиях. Существует множество коммерческих систем компьютерной алгебры: Maple, Mathematica, MathCad и другие. Свободно распространяемые программы: Axiom, Eigenmath, Maxima, Yacas и др.
Успех в современном использовании САВ лежит в интеграции всех машинных возможностей (символьный и численный интерфейс, встроенная графика, мультипликация, базы и банки данных и т. д.). Все современные коммерческие системы компьютерной математики (Mathematica, Maple, MatLab и Reduce) обладают стандартным набором возможностей:
Хотя между системами имеются различия, синтаксис ассоциированных языков не является проблемой, затрудняющей использование систем компьютерной математики. Синтаксис языков систем в значительной степени аналогичен синтаксису Паскаля. Обязательно имеются операторы присваивания, понятие вызывающей функции (команды), более или менее богатый выбор управляющих структур ($$if, do, while, repeat$$ и т. д.), возможности для определения процедур,. . . — в общем, весь арсенал классических языков программирования, необходимый для записи алгоритмов.
Системы компьютерной алгебры можно условно разделить на системы общего назначения и специализированные. К системам общего назначения относятся Macsyma, Reduce, Mathematica, Maple, Axiom и другие системы.
В 80-е годы прошлого века широкое распространение в бывшем СССР получила система Reduce. Она первоначально предназначалась для решения физических задач, разрабатывалась на наиболее широко распространённых компьютерах, разработка до определённого времени не носила коммерческого характера (система до конца 80- х годов распространялась бесплатно). Открытый характер системы позволил привлечь к её разработке огромную армию пользователей, обогативших систему многочисленными пакетами для решения отдельных задач.
Macsyma, так же, как и Reduce, является "старой" системой. В отличие от системы Reduce, Macsyma разрабатывалась с самого начала как коммерческий продукт. В ней более тщательно проработаны алгоритмические вопросы, её эффективность существенно выше, но меньшее её распространение можно объяснить двумя обстоятельствами: длительное время она была реализована только на малом числе "экзотических" компьютеров и распространялась только на коммерческой основе.
Система Maple, созданная в 80-х годах прошлого века в Канаде, с самого начала была задумана как система для персональных компьютеров, учитывающая их особенности. Она развивается "вширь и вглубь", даже её ядро переписывалось с одного алгоритмического языка на другой. В настоящее время Maple широко применяется во многих странах (в частности, в США и Канаде) в учебном процессе, а также в различных областях научных и технических исследований.
В конце прошлого века получила широкое распространение и сейчас быстро развивается система Mathematica. Её успех в значительной степени объясняется её широкими графическими возможностями а также электронной документацией, которую можно рассматривать как электронную библиотеку, посвящённую различным разделам математики и информатики.
Особое место среди систем компьютерной алгебры занимает система Axiom. В отличие от остальных систем, представляющих собой пакеты программ, общение с которыми осуществляется на некотором алголо-подобном языке, система Axiom, развившаяся из системы Scratchpad-II, имеет дело с более привычными для математиков объектами. В частности, в ней ключевым понятием является понятие категории: здесь можно рассматривать, например, категории множеств, полугрупп, дифференциальных колец, левых модулей и т. д. Система имеет высокую степень универсальности, требует для своей реализации мощных компьютеров, распространяется за достаточно высокую плату, поэтому используется только в ограниченном числе мощных университетских и научных центров.
Специализированные системы отличаются более высокой эффективностью, но область их применения ограничена. К специализированным системам относятся такие системы, как Caley и GAP — специализированные системы для вычислений в теории групп, Macauley, CoCoA, Singular — системы разной степени универсальности для вычислений в кольце многочленов, Schoonship — специализированная система для вычислений в физике высоких энергий, muMath и её правонаследница Derive — системы, широко используемые в учебном процессе (в частности, в Австрии лицензия на установку системы Derive приобретена для всех средних школ), и многие другие.
Maple — это система для аналитического и численного решения математических задач, возникающих как в математике, так и в прикладных науках. Развитая система команд, удобный интерфейс и широкие возможности позволяют эффективно применять Maple для решения проблем математического моделирования.
Maple состоит из ядра, процедур, написанных на языке С и в высшей степени оптимизированных, библиотеки, написанной на Maple- языке, и интерфейса. Ядро выполняет большинство базисных операций. Библиотека содержит множество команд и процедур, выполняемых в режиме интерпретации. Программируя собственные процедуры, пользователь может пополнять ими стандартный набор и, таким образом, расширять возможности Maple. Работа в Maple проходит в режиме сессии (session). Пользователь вводит предложения (команды, выражения, процедуры и др.), которые воспринимаются Maple. По умолчанию результаты сеанса сохраняются в файле с расширением 'ms'. Если задан режим сохранения состояния сеанса (session), то в файле с расширением 'm' будут записаны текущие назначения.
Mathematica — это широко используемая CAS изначально разработана Стивеном Вольфрандом, которая продаётся компанией Wolfram Research. Он начал работу над Mathematica в 1986 году, а выпустил в 1988 году. Mathematica не только CAS, но и мощный язык программирования. Этот язык программирования реализован на основе объектно ориентированного варианта языка С, расширяемого при помощи так называемых библиотек кода. Эти библиотеки представляют собой текстовые файлы, написанные на языке Mathematica.
Архитектура Mathematica представлена ядром и пользовательским интерфейсом. Ядро программы отвечает за интерпретацию программ, написанных на языке Mathematica, и непосредственно занимается вычислениями. Пользовательские интерфейсы предназначены для выводов результатов в форме, понятной пользователю. По мнению компании-разработчика, большая часть пользователей Mathematica — это технические профессионалы. Также Mathematica широко используется в образовании. Сейчас несколько тысяч курсов на основе этого продукта читаются во многих учебных заведениях, начиная от средней школы и заканчивая аспирантурой. Mathematica используется в самых крупных университетах по всему миру и в группе компаний Fortune 500, а также во всех 15 основных министерствах правительства США.
MathCad — это CAS очень похожая на Mathematica. Распространяется компанией Mathsoft. MathCad ориентирован на поддержку концепций рабочего листа. Уравнения и выражения отображаются на рабочем листе так, как они выглядели бы на какой-нибудь презентации, а не так, как выглядят на языке программирования. Некоторые задачи, которые выполняет программа: решение дифференциальных уравнений, графики на плоскости и в пространстве, символьное исчисление, операции с векторами и матрицами, символьное решение систем уравнений, подбор графиков, набор статистических функций и вероятностных распределений. По мнению разработчиков MathCad, главный конкурент этого пакета — электронные таблицы.
Многие пользователи используют электронные таблицы или языки программирования для выполнения вычислений. Но ни те, ни другие не справляются с задачей, когда дело доходит до обработки полученных данных. Электронные таблицы разработаны для бухгалтерских, а не для инженерных расчётов! Для последних они не слишком удобны: уравнения спрятаны в ячейках, сложно вставить комментарии. Это делает работу довольно затруднительной, а устранять ошибки и разбираться в чьих-то вычислениях вообще сложно. Электронные таблицы трудны для понимания и повторного использования другими пользователями.
Yacas — это Open Source CAS общего назначения. Базируется на собственном языке программирования, главной целью при разработке этого языка была простота реализации новых алгоритмов. Этот язык очень похож на LISP, поддерживает ввод и вывод в обычном текстовом режиме как интерактивно, так и в режиме пакетного выражения.
Maxima является потомком DOE Macsyma, которая начала своё существование в конце 1960 года в MIT. Macsyma первая создала систему компьютерной алгебры, она проложила путь для таких программ как Maple и Mathematica. Главный вариант Maxima разрабатывался Вильямом Шелтером с 1982 по 2001 год. В 1998 году он получил разрешение на реализацию открытого кода на GPL. Благодаря его умению Maxima сумела выжить и сохранить свой оригинальный код в рабочем состоянии. Вскоре Вильям передал Maxima группе пользователей и разработчиков, которые сохранили её в рабочем состоянии. На сегодняшний день пакет достаточно активно развивается, и во многих отношениях не уступает таким развитым системам компьютерной математики, как Maple или Mathematica.
Данная книга посвящена открытым программным средствам, позволяющим провести весь цикл разработки какой-либо математической модели: от поиска и просмотра необходимой литературы до непосредственного решения задачи (аналитического и/или численного) и подготовки отчёта или статьи к печати. В ней предпринята попытка объяснить, что система аналитических вычислений Maxima и (если необходимо) вычислительная среда Octave — хороший выбор для проведения любой учебной задачи или серьёзного исследования, где требуется математика — от курсовой работы до научной или инженерной разработки высокого класса. С помощью этих пакетов проще готовить и выполнять задания, устраивать демонстрации и гораздо быстрее решать исследовательские и инженерные задачи.
В настоящее время компьютерные программы этого класса (проприетарные — Maple, Mathematica, MATLAB, MathCad и др., или с открытым кодом) находят самое широкое применение в научных исследованиях, становятся одним из обязательных компонентов компьютерных технологий, используемых в образовании.
Эти системы имеют дружественный интерфейс, реализуют множество стандартных и специальных математических операций, снабжены мощными графическими средствами и обладают собственными языками программирования. Всё это предоставляет широкие возможности для эффективной работы специалистов разных профилей, о чём говорит активное применение математических пакетов в научных исследованиях и преподавании.
Для школьников системы компьютерной математики (СКМ) являются незаменимым помощником в изучении математики, физики, информатики, освобождая их от рутинных расчётов и сосредотачивая их внимание на сущности метода решения той или иной задачи. Применение СКМ позволяет решать целый спектр новых трудоёмких, но интересных задач: от упрощения громоздких алгебраических выражений, аналитического решения уравнений и систем с параметрами, графических построений, до анимации графиков и пошаговой визуализации самого процесса решения. Учащимся предоставляется возможность выполнять более содержательные задания и получать наглядные результаты. Это способствует закреплению знаний и умений, приобретённых ими при изучении других школьных дисциплин, помогает в полной мере проявлять свои творческие и исследовательские способности.
Для студентов СКМ удобное средство решения всевозможных задач, связанных с символьными преобразованиями (математический анализ, высшая математика, линейная алгебра и аналитическая геометрия и т.п.), а также средство решения задач моделирования статических (описываемых алгебраическими уравнениями) и динамических (описываемых дифференциальными уравнениями) систем. Кроме того, добротная СКМ — хорошее средство создания графических иллюстраций и документов, содержащих математические формулы и выкладки. В настоящее время для проведения расчётов по всевозможным техническим дисциплинам студентами-нематематиками широко используется пакет MatCad, в основе которого лежит ядро Maple. При некотором навыке и наличии документации связка Maxima+TexMacs или ядро Maxima+интерфейс wxMaxima вполне разумная замена MathCad в Unix-среде. А наличие универсального интерфейса в виде TexMacs или Emacs позволяет объединять в одном документе расчёты, выполненные в Maxima, Octave, Axiom и т.п.
Для научных работников и инженеров СКМ незаменимое средство анализа постановки всевозможных задач моделирования. Под системами компьютерной математики понимают программное обеспечение, которое позволяет не только выполнять численные расчёты на компьютере, но и производить аналитические (символьные) преобразования различных математических и графических объектов. Все широко известные математические пакеты: Maple, Matlab, Matematica, позволяют проводить как символьные вычисления, так и использовать численные методы. В настоящее время такие системы являются одним из основных вычислительных инструментов компьютерного моделирования в реальном времени и находят применение в различных областях науки. Они открывают также новые возможности для преподавания многих учебных дисциплин, таких как алгебра и геометрия, физика и информатика, экономика и статистика, экология. Применение СКМ существенно повышает производительность труда научного работника, преподавателя вуза, учителя.
Конечным продуктом исследования выступают публикации, подготовка, распространение и использование которых в настоящее время требует квалифицированного применения компьютера. Это касается редактирования текста, изготовления графических материалов, ведения библиографии, размещения электронных версий в Интернете, поиска статей и их просмотра. Де-факто сейчас стандартными системами подготовки научно-технических публикаций являются различные реализации пакета ТеХ и текстовый редактор Word. Кроме того, необходимы минимальные знания о стандартных форматах файлов, конверторах, программах и утилитах, используемых при подготовке публикаций.
История математики насчитывает около трёх тысячелетий и условно может быть разделена на несколько периодов. Первый — становление и развитие понятия числа, решение простейших геометрических задач. Второй период связан с появлением "Начал" Евклида и утверждением хорошо знакомого нам способа доказательства математических утверждений с помощью цепочек логических умозаключений.
Следующий этап берёт своё начало с развития дифференциального и интегрального исчисления. Наконец, последний период сопровождается появлением и распространением понятий и методов теории множеств и математической логики, на прочном фундаменте которых возвышается всё здание современной математики.
Мы живём во время начала нового периода развития математики, который связан с изобретением и применением компьютеров. Прежде всего, компьютер предоставил возможность производить сложнейшие численные расчёты для решения тех задач, которые невозможно (по крайней мере, на данный момент) решить аналитически. Появилось так называемое "компьютерное моделирование" — целая отрасль прикладной математики, в которой с помощью самых современных вычислительных средств изучается поведение многих сложных экономических, социальных, экологических и других динамических систем.
Изучение математики даёт в распоряжение будущего инженера, экономиста, научного работника не только определённую сумму знаний, но и развивает в нём способность ставить, исследовать и решать самые разнообразные задачи. Иными словами, математика развивает мышление будущего специалиста и закладывает прочный понятийный фундамент для освоения многих специальных дисциплин. Кроме того, именно с её помощью лучше всего развиваются способности логического мышления, концентрации внимания, аккуратности и усидчивости.
Компьютерная алгебра — область математики, лежащая на стыке алгебры и вычислительных методов. Для неё, как и для любой области, лежащей на стыке различных наук, трудно определить чёткие границы. Часто говорят, что к компьютерной алгебре относятся вопросы слишком алгебраические, чтобы содержаться в учебниках по вычислительной математике, и слишком вычислительные, чтобы содержаться в учебниках по алгебре. При этом ответ на вопрос о том, относится ли конкретная задача к компьютерной алгебре, часто зависит от склонностей специалиста.
Большинство первых систем компьютерной математики (Eureka, Mercury, Excel, Lotus-123, MathCad для MS-DOS, PC MatLab и др.) предназначались для численных расчётов. Они как бы превращали компьютер в большой программируемый калькулятор, способный быстро и автоматически (по введённой программе) выполнять арифметические и логические операции над числами или массивами чисел. Их результат всегда конкретен — это или число, или набор чисел, представляющих таблицы, матрицы или точки графиков. Разумеется, компьютер позволяет выполнять такие вычисления с немыслимой ранее скоростью, педантичностью и даже точностью, выводя результаты в виде хорошо оформленных таблиц или графиков.
Однако результаты вычислений редко бывают абсолютно точными в математическом смысле: как правило, при операциях с вещественными числами происходит их округление, обусловленное принципиальным ограничением разрядной сетки компьютера при хранении чисел в памяти. Реализация большинства численных методов (например, решения нелинейных или дифференциальных уравнений) также базируется на заведомо приближённых алгоритмах. Часто из-за накопления погрешностей эти методы теряют вычислительную устойчивость и расходятся, давая неверные решения или даже ведя к полному краху работы вычислительной системы — вплоть до злополучного "зависания".
Условия появления ошибок и сбоев не всегда известны — их оценка довольно сложна в теоретическом отношении и трудоёмка на практике. Поэтому рядовой пользователь, сталкиваясь с такой ситуацией, зачастую становится в тупик или, что намного хуже, неверно истолковывает явно ошибочные результаты вычислений, "любезно" предоставленные ему компьютером. Трудно подсчитать, сколько "открытий" на компьютере было отвергнуто из-за того, что наблюдаемые колебания, выбросы на графиках или асимптоты ошибочно вычисленных функций неверно истолковывались как новые физические закономерности моделируемых устройств и систем, тогда как на деле были лишь грубыми погрешностями численных методов решения вычислительных задач.
Многие учёные справедливо критиковали численные математические системы и программы реализации численных методов за частный характер получаемых с их помощью результатов. Они не давали возможности получить общие формулы, описывающие решение задач. Как правило, из результатов численных вычислений невозможно было сделать какие-либо общие теоретические, а подчас и практические выводы. Поэтому, прежде чем использовать такие системы в реализации серьёзных научных проектов, приходилось прибегать к дорогой и недостаточно оперативной помощи математиков-аналитиков. Именно они решали нужные задачи в аналитическом виде и предлагали более или менее приемлемые методы их численного решения на компьютерах.
Термин "компьютерная алгебра" возник как синоним терминов "символьные вычисления", "аналитические вычисления", "аналитические преобразования" и т. д. Даже в настоящее время этот термин на французском языке дословно означает "формальные вычисления".
В чём основные отличия символьных вычислений от численных и почему возник термин "компьютерная алгебра"?
Когда мы говорим о вычислительных методах, то считаем, что все вычисления выполняются в поле вещественных или комплексных чисел. В действительности же всякая программа для ЭВМ имеет дело только с конечным набором рациональных чисел, поскольку только такие числа представляются в компьютере. Для записи целого числа отводится обычно 16 или 32 двоичных символа (бита), для вещественного – 32 или 64 бита. Это множество не замкнуто относительно арифметических операций, что может выражаться в различных переполнениях (например, при умножении достаточно больших чисел или при делении на маленькое число). Ещё более существенной особенностью вычислительной математики является то, что арифметические операции над этими числами, выполняемые компьютером, отличаются от арифметических операций в поле рациональных чисел.
Особенностью компьютерных вычислений является неизбежное наличие погрешности или конечная точность вычислений. Каждую задачу требуется решить с использованием имеющихся ресурсов ЭВМ за обозримое время с заданной точностью, поэтому оценка погрешности — важная задача вычислительной математики.
Решение проблемы точности вычислений и конечности получаемых численных результатов в определённой степени даётся развитием систем компьютерной алгебры. Системы компьютерной алгебры, осуществляющие аналитические вычисления, широко используют множество рациональных чисел. Компьютерные операции над рациональными числами совпадают с соответствующими операциями в поле рациональных чисел. Кроме того, ограничения на допустимые размеры числа (количество знаков в его записи) позволяет пользоваться практически любыми рациональными числами, операции над которыми выполняются за приемлемое время.
В компьютерной алгебре вещественные и комплексные числа практически не применяются, зато широко используется алгебраические числа. Алгебраическое число задаётся своим минимальным многочленом, а иногда для его задания требуется указать интервал на прямой или область в комплексной плоскости, где содержится единственный корень данного многочлена. Многочлены играют в символьных вычислениях исключительно важную роль. На использовании полиномиальной арифметики основаны теоретические методы аналитической механики, они применяются во многих областях математики, физики и других наук. Кроме того, в компьютерной алгебре рассматриваются такие объекты, как дифференциальные поля (функциональные поля), допускающие показательные, логарифмические, тригонометрические функции, матричные кольца (элементы матрицы принадлежат кольцам достаточно общего вида) и другие. Даже при арифметических операциях над такими объектами происходит разбухание информации, и для записи промежуточных результатов вычислений требуется значительный объём памяти ЭВМ.
В научных исследованиях и технических расчётах специалистам приходится гораздо больше заниматься преобразованиями формул, чем собственно численным счётом. Тем не менее, с появлением ЭВМ основное внимание уделялось автоматизации численных вычислений, хотя ЭВМ начали применяться для решения таких задач символьных преобразований, как, например, символьное дифференцирование, ещё в 50-х годах прошлого века. Активная разработка систем компьютерной алгебры началась в конце 60-х годов. С тех пор создано значительное количество различных систем, получивших различную степень распространения; некоторые системы продолжают развиваться, другие отмирают, и постоянно появляются новые.
В настоящее время системы компьютерной математики (СКМ) можно разделить на семь основных классов: системы для численных расчётов, табличные процессоры, матричные системы, системы для статистических расчётов, системы для специальных расчётов, системы для аналитических расчётов (компьютерной алгебры), универсальные системы.
Каждая система компьютерной математики имеет нюансы в своей архитектуре или структуре. Тем не менее можно прийти к выводу, что у современных универсальных СКМ следующая типовая структура:
Центральное место занимает ядро системы — коды множества заранее откомпилированных функций и процедур, обеспечивающих достаточно представительный набор встроенных функций и операторов системы.
Интерфейс даёт пользователю возможность обращаться к ядру со своими запросами и получать результат решения на экране дисплея. Интерфейс современных СКМ основан на средствах популярных операционных систем Windows 95/98/NT и обеспечивает присущие им удобства работы.
Функции и процедуры, включённые в ядро, выполняются предельно быстро. Поэтому объём ядра ограничивают, но к нему добавляют библиотеки более редких процедур и функций.
Кардинальное расширение возможностей систем и их адаптация к решаемым конкретными пользователями задачам достигаются за счёт пакетов расширения систем. Эти пакеты (нередко и библиотеки) пишутся на собственном языке программирования той или иной СКМ, что делает возможным их подготовку обычными пользователями.
Ядро, библиотеки, пакеты расширения и справочная система современных СКМ аккумулируют знания в области математики, накопленные за тысячелетия её развития.
Возрастающий интерес к алгебраическим алгоритмам возник в результате осознания центральной роли алгоритмов в информатике. Их легко описать на формальном и строгом языке и с их помощью обеспечить решение задач, давно известных и изучавшихся на протяжении веков. В то время как традиционная алгебра имеет дело с конструктивными методами, компьютерная алгебра интересуется ещё и эффективностью, реализацией, а также аппаратными и программными аспектами таких алгоритмов. Оказалось, что при принятии решения об эффективности и определении производительности алгебраических методов требуются многие другие средства, например, теория рекурсивных функций, математическая логика, анализ и комбинаторика.
В начальный период применения вычислительных машин в символьной алгебре быстро стало очевидным, что непосредственные методы из учебников часто оказывались весьма неэффективными. Вместо обращения к методам численной аппроксимации компьютерная алгебра систематически изучает источники неэффективности и ведёт поиск иных алгебраических методов для улучшения или даже замены таких алгоритмов.
Первые ЭВМ изначально создавались для того, чтобы проводить сложные расчёты, на которые человек тратил очень много времени. Следующим шагом развития ЭВМ стали ПК. Эти машины могут проводить вычисления разной сложности (от самых простых до самых сложных).Такая их особенность использовалось в разных областях знаний. Развитие компьютерных математических систем привело к появлению отдельного класса программ, который получил названия Системы Компьютерной Алгебры (CAS).
Главная задача CAS — это обработка математических выражений в символьной форме. Символьные операции обычно включают в себя: вычисление символьных либо числовых значений для выражений, преобразование, изменение формы выражений, нахождение производной одной или нескольких переменных, решение линейных и нелинейных уравнений, решение дифференциальных уравнений, вычисление пределов, вычисление определённых и неопределённых интегралов, работа с множествами, вычисления и работа с матрицами. В дополнение к перечисленному, большинство CAS поддерживают разнообразные численные операции: расчёт значений выражений при определённых значениях переменных, построение графиков на плоскости и в пространстве.
Большинство CAS включают в себя высокоуровневый язык программирования, который позволяет реализовать свои собственные алгоритмы. Наука которая изучает алгоритмы, применяемые в CAS, называется компьютерной алгеброй.
Компьютерная алгебра есть та часть информатики, которая занимается разработкой, анализом, реализацией и применением алгебраических алгоритмов. От других алгоритмов алгебраические алгоритмы отличаются наличием простых формальных описаний, существованием доказательств правильности и асимптотических границ времени выполнения, которые можно получить на основе хорошо развитой математической теории. Кроме того, алгебраические объекты можно точно представить в памяти вычислительной машины, благодаря чему алгебраические преобразования могут быть выполнены без потери точности и значимости. Обычно алгебраические алгоритмы реализуются в программных системах, допускающих ввод и вывод информации в символьных алгебраических обозначениях.
Благодаря всему этому специалисты, работающие в информатике, математике и в прикладных областях, проявляют всё больший интерес к компьютерной алгебре. Опираясь на противопоставление, можно сказать, что компьютерная алгебра рассматривает такие объекты, которые имеют слишком вычислительный характер, чтобы встречаться в книгах по алгебре, и слишком алгебраический характер, чтобы быть представленными в учебниках по информатике. Многие алгоритмы компьютерной алгебры можно рассматривать как получисленные (в смысле Кнута).
Отделить компьютерную алгебру от таких математических дисциплин, как алгебра, анализ или численный анализ, нелегко.
Системы компьютерной алгебры обычно включают алгоритмы для интегрирования, вычисления элементарных трансцендентных функций, решения дифференциальных уравнений и т.п. Особенность упомянутых алгоритмов заключается в следующем:
Часто формулы, получаемые в качестве выходной информации при выполнении алгоритмов компьютерной алгебры, используются затем как входная информация в численных процедурах. Например, при интегрировании рациональных функций от нескольких переменных первое и, возможно, второе интегрирования выполняются в символьном виде, а остальные — численно.
Численные процедуры используют арифметику конечной точности и основываются на теории аппроксимации. Например, численная процедура нахождения корней не всегда может отделить все корни, так как работает с числами конечной точности; она отделяет лишь кластеры корней, диаметр которых зависит от заданной точности представления чисел и многих других параметров.
В принципе желательно и возможно описывать численные алгоритмы с той же строгостью, как и алгебраические, однако требуемая при этом детализация гораздо выше, а сходство с математической постановкой задачи менее прозрачно. С другой стороны, при использовании некоторого алгебраического алгоритма точность оплачивается большими — в общем случае существенно — временем выполнения и необходимым объёмом памяти, чем для его численного аналога.
Тем не менее можно привести много примеров таких задач, в которых аппроксимация не имеет большого смысла. Поэтому методы символьных вычислений и чисто численные алгоритмы обычно дополняют друг друга. Современные системы компьютерной алгебры обязательно включают тот или иной набор стандартных численных алгоритмов. Современные системы, рассчитанные на использование в первую очередь численных расчётов (MatLab, его клоны и т.п.) всегда включают более или менее полный набор функций, осуществляющих символьные преобразования.
Реализация на ЭВМ символьной математики открыла принципиально новые возможности использования вычислительных машин в естественнонаучных и прикладных исследованиях. Сейчас уже трудно указать область естественных наук, где методы аналитических вычислений на ЭВМ не нашли бы плодотворных применений. Характерной особенностью проблематики символьных преобразований является сочетание весьма тонких математических и алгоритмических методов с самыми современными методами программирования, эффективно реализующими нечисленную математику в рамках программных систем аналитических вычислений. К числу последних относятся, например, такие популярные системы, как Macsyma, Reduce, АНАЛИТИК и др.
Хорошо известно, что аналитические преобразования являются неотъемлемой частью научных исследований, и зачастую на их выполнение затрачивается больше труда, чем на остальную часть исследований, а для реализации специализированных методов, например, методов современного группового анализа дифференциальных уравнений, особенное значение имеет точность аналитических выражений. Однако ручные вычисления по любому из подобных методов требуют непомерно больших затрат времени. Именно здесь и помогают методы компьютерной алгебры (КА) и соответствующие программные системы, являющиеся практически единственным средством решения таких задач, требующих больших затрат ручных вычислений и очень чувствительных к потере точности при численном счёте на ПК.
Благодаря методам и алгоритмам аналитических вычислений современный компьютер становится уже не столько вычислительной, сколько общематематической машиной. ПК под силу реализовать интегрирование и дифференцирование символьных выражений, перестановки и перегруппировки членов, подстановки в выражения с последующим их преобразованием, решать дифференциальные уравнения и т. д. Аналитические вычисления (АВ) являются составной частью теоретической информатики, которая занимается разработкой, анализом, реализацией и применением алгебраических алгоритмов. Цели АВ лежат в области искусственного интеллекта, несмотря на то, что методы всё более и более удаляются от неё. Кроме того, используемые алгоритмы вводят в действие все менее элементарные математические средства.
Таким образом, АВ как самостоятельная дисциплина, на самом деле, лежит на стыке нескольких областей: информатики, искусственного интеллекта, современной математики (использующей нетрадиционные методы), что одновременно обогащает её и делает более трудной в исследовательском плане. Наименование этой научной дисциплины длительное время колебалось и, наконец, стабилизировалось как "Calcul formel" во французском языке, "Computer algebra" — в английском языке и "аналитические вычисления" или "компьютерная алгебра" — в русском.
Наиболее интуитивная цель АВ заключается в манипуляции с формулами. Математическая формула, описанная на одном из обычных языков программирования (Фортран, Паскаль, Бейсик,. . . ), предназначена только для численных расчётов, когда переменным и параметрам присвоены численные значения.
В языке, допускающем АВ, для этой формулы также можно получить численное значение, но, кроме того, она может стать объектом формальных преобразований: дифференцирования, разложения в ряд, различных других разложений и даже интегрирования.
Интеллектуальность разработанных на сегодняшний день САВ определяется их использованием для организации баз знаний по математическим методам в обучении и образовании. Можно выделить три вида обучения: подготовка специалистов в области АВ (студенты и аспиранты); обучение работе с САВ широкого круга пользователей (знакомство с современным инструментом исследования) и применение САВ в образовании математического и физического профиля (интенсификация образования по курсу бакалавриата).
CAS были созданы в 70-ые годы и развивались в рамках проектов, связанных с искусственным интеллектом. Поэтому сфера применения их достаточно большая и разнообразная. Первыми популярными системами были Reduce, Derive, Macsyma. Некоторые из них до сих пор находятся в продаже. Свободно распространяемая версия Macsyma — Maxima. На данный момент лидерами продаж являются Maple и Mathematica. Оба этих пакета активно используются в математических, инженерных и других научных исследованиях. Существует множество коммерческих систем компьютерной алгебры: Maple, Mathematica, MathCad и другие. Свободно распространяемые программы: Axiom, Eigenmath, Maxima, Yacas и др.
Успех в современном использовании САВ лежит в интеграции всех машинных возможностей (символьный и численный интерфейс, встроенная графика, мультипликация, базы и банки данных и т. д.). Все современные коммерческие системы компьютерной математики (Mathematica, Maple, MatLab и Reduce) обладают стандартным набором возможностей:
Хотя между системами имеются различия, синтаксис ассоциированных языков не является проблемой, затрудняющей использование систем компьютерной математики. Синтаксис языков систем в значительной степени аналогичен синтаксису Паскаля. Обязательно имеются операторы присваивания, понятие вызывающей функции (команды), более или менее богатый выбор управляющих структур ($$if, do, while, repeat$$ и т. д.), возможности для определения процедур,. . . — в общем, весь арсенал классических языков программирования, необходимый для записи алгоритмов.
Системы компьютерной алгебры можно условно разделить на системы общего назначения и специализированные. К системам общего назначения относятся Macsyma, Reduce, Mathematica, Maple, Axiom и другие системы.
В 80-е годы прошлого века широкое распространение в бывшем СССР получила система Reduce. Она первоначально предназначалась для решения физических задач, разрабатывалась на наиболее широко распространённых компьютерах, разработка до определённого времени не носила коммерческого характера (система до конца 80- х годов распространялась бесплатно). Открытый характер системы позволил привлечь к её разработке огромную армию пользователей, обогативших систему многочисленными пакетами для решения отдельных задач.
Macsyma, так же, как и Reduce, является "старой" системой. В отличие от системы Reduce, Macsyma разрабатывалась с самого начала как коммерческий продукт. В ней более тщательно проработаны алгоритмические вопросы, её эффективность существенно выше, но меньшее её распространение можно объяснить двумя обстоятельствами: длительное время она была реализована только на малом числе "экзотических" компьютеров и распространялась только на коммерческой основе.
Система Maple, созданная в 80-х годах прошлого века в Канаде, с самого начала была задумана как система для персональных компьютеров, учитывающая их особенности. Она развивается "вширь и вглубь", даже её ядро переписывалось с одного алгоритмического языка на другой. В настоящее время Maple широко применяется во многих странах (в частности, в США и Канаде) в учебном процессе, а также в различных областях научных и технических исследований.
В конце прошлого века получила широкое распространение и сейчас быстро развивается система Mathematica. Её успех в значительной степени объясняется её широкими графическими возможностями а также электронной документацией, которую можно рассматривать как электронную библиотеку, посвящённую различным разделам математики и информатики.
Особое место среди систем компьютерной алгебры занимает система Axiom. В отличие от остальных систем, представляющих собой пакеты программ, общение с которыми осуществляется на некотором алголо-подобном языке, система Axiom, развившаяся из системы Scratchpad-II, имеет дело с более привычными для математиков объектами. В частности, в ней ключевым понятием является понятие категории: здесь можно рассматривать, например, категории множеств, полугрупп, дифференциальных колец, левых модулей и т. д. Система имеет высокую степень универсальности, требует для своей реализации мощных компьютеров, распространяется за достаточно высокую плату, поэтому используется только в ограниченном числе мощных университетских и научных центров.
Специализированные системы отличаются более высокой эффективностью, но область их применения ограничена. К специализированным системам относятся такие системы, как Caley и GAP — специализированные системы для вычислений в теории групп, Macauley, CoCoA, Singular — системы разной степени универсальности для вычислений в кольце многочленов, Schoonship — специализированная система для вычислений в физике высоких энергий, muMath и её правонаследница Derive — системы, широко используемые в учебном процессе (в частности, в Австрии лицензия на установку системы Derive приобретена для всех средних школ), и многие другие.
Maple — это система для аналитического и численного решения математических задач, возникающих как в математике, так и в прикладных науках. Развитая система команд, удобный интерфейс и широкие возможности позволяют эффективно применять Maple для решения проблем математического моделирования.
Maple состоит из ядра, процедур, написанных на языке С и в высшей степени оптимизированных, библиотеки, написанной на Maple- языке, и интерфейса. Ядро выполняет большинство базисных операций. Библиотека содержит множество команд и процедур, выполняемых в режиме интерпретации. Программируя собственные процедуры, пользователь может пополнять ими стандартный набор и, таким образом, расширять возможности Maple. Работа в Maple проходит в режиме сессии (session). Пользователь вводит предложения (команды, выражения, процедуры и др.), которые воспринимаются Maple. По умолчанию результаты сеанса сохраняются в файле с расширением 'ms'. Если задан режим сохранения состояния сеанса (session), то в файле с расширением 'm' будут записаны текущие назначения.
Mathematica — это широко используемая CAS изначально разработана Стивеном Вольфрандом, которая продаётся компанией Wolfram Research. Он начал работу над Mathematica в 1986 году, а выпустил в 1988 году. Mathematica не только CAS, но и мощный язык программирования. Этот язык программирования реализован на основе объектно ориентированного варианта языка С, расширяемого при помощи так называемых библиотек кода. Эти библиотеки представляют собой текстовые файлы, написанные на языке Mathematica.
Архитектура Mathematica представлена ядром и пользовательским интерфейсом. Ядро программы отвечает за интерпретацию программ, написанных на языке Mathematica, и непосредственно занимается вычислениями. Пользовательские интерфейсы предназначены для выводов результатов в форме, понятной пользователю. По мнению компании-разработчика, большая часть пользователей Mathematica — это технические профессионалы. Также Mathematica широко используется в образовании. Сейчас несколько тысяч курсов на основе этого продукта читаются во многих учебных заведениях, начиная от средней школы и заканчивая аспирантурой. Mathematica используется в самых крупных университетах по всему миру и в группе компаний Fortune 500, а также во всех 15 основных министерствах правительства США.
MathCad — это CAS очень похожая на Mathematica. Распространяется компанией Mathsoft. MathCad ориентирован на поддержку концепций рабочего листа. Уравнения и выражения отображаются на рабочем листе так, как они выглядели бы на какой-нибудь презентации, а не так, как выглядят на языке программирования. Некоторые задачи, которые выполняет программа: решение дифференциальных уравнений, графики на плоскости и в пространстве, символьное исчисление, операции с векторами и матрицами, символьное решение систем уравнений, подбор графиков, набор статистических функций и вероятностных распределений. По мнению разработчиков MathCad, главный конкурент этого пакета — электронные таблицы.
Многие пользователи используют электронные таблицы или языки программирования для выполнения вычислений. Но ни те, ни другие не справляются с задачей, когда дело доходит до обработки полученных данных. Электронные таблицы разработаны для бухгалтерских, а не для инженерных расчётов! Для последних они не слишком удобны: уравнения спрятаны в ячейках, сложно вставить комментарии. Это делает работу довольно затруднительной, а устранять ошибки и разбираться в чьих-то вычислениях вообще сложно. Электронные таблицы трудны для понимания и повторного использования другими пользователями.
Yacas — это Open Source CAS общего назначения. Базируется на собственном языке программирования, главной целью при разработке этого языка была простота реализации новых алгоритмов. Этот язык очень похож на LISP, поддерживает ввод и вывод в обычном текстовом режиме как интерактивно, так и в режиме пакетного выражения.
Maxima является потомком DOE Macsyma, которая начала своё существование в конце 1960 года в MIT. Macsyma первая создала систему компьютерной алгебры, она проложила путь для таких программ как Maple и Mathematica. Главный вариант Maxima разрабатывался Вильямом Шелтером с 1982 по 2001 год. В 1998 году он получил разрешение на реализацию открытого кода на GPL. Благодаря его умению Maxima сумела выжить и сохранить свой оригинальный код в рабочем состоянии. Вскоре Вильям передал Maxima группе пользователей и разработчиков, которые сохранили её в рабочем состоянии. На сегодняшний день пакет достаточно активно развивается, и во многих отношениях не уступает таким развитым системам компьютерной математики, как Maple или Mathematica.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.