Алгебра в программе Mathematica

         

Что такое система Mathematica



Что такое система Mathematica



Система Mathematica — это полностью интегрированная система компьютерной алгебры. Ее появление в 1988 году оказало очень большое влияние на использование компьютеров в науке и технике. Часто говорят, что именно появление системы Mathematica открыло эру применения компьютерной алгебры в научных и технических вычислениях.




История компьютерных вычислений



История компьютерных вычислений и возникновение компьютерной алгебры



С давних времен человек мечтал о машине, которая могла бы выполнять вычисления. Однако что значит вычислять! Когда компьютеры только появились, они, в основном, были предназначены для численных расчетов. Затем они начали применяться для решения задач управления. И хотя в этих приложениях численные расчеты играют весьма важную роль, всегда были ученые, которые понимали, что результаты вычислений могут интерпретироваться не только как числовые значения физических величин. Еще Лейбниц мечтал построить машину для "вычисления истины".

Впрочем, в самом понятии "научные вычисления" всегда была двусмысленность: прежде чем на сцене появился компьютер, вычисления представляли смесь численного счета с тем, что многие называют "алгебраическими вычислениями", т.е. с операциями над математическими формулами.

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

Жак Иноди

Жак Иноди — один из наиболее известных и самых популярных молниеносных вычислителей. Он родился в 1867 году в очень бедной семье, в Онорато {Пьемонт). Иноди был пастухом, около шести лет от роду его захватила страсть к цифрам. Охраняя свое стадо, он практиковался, работая с числами в голове, и в семь лет мог в уме умножать числа, получая пятизначные результаты. И при этом он не знал таблицу умножения! После смерти матери он оставил родные места и отправился бродяжничать с братом, демонстрируя ручную белку. Брат играл на шарманке, а Жак показывал белку и собирал деньги.



Он говорил со зрителями, которых встречал, об устных вычислениях, в которых они обычно ничего не понимали. На рынке он помогал крестьянам делать их расчеты: "В действительности, — пишет он, — я был сильно удивлен, что эти люди, которые были обычно проницательны, почти ничего не знали о подсчетах, которые я делал почти мгновенно, всего лишь услышав их; это дало мне смелость однажды предоставить аргументы для урегулирования расчета между двумя крестьянами, которые готовы были подраться и которых я успокоил, продемонстрировав, что они оба были не правы; эта перебранка, естественно, собрала толпу, которая была удивлена, что маленький паренек вроде меня лучше знает, как считать, чем два взрослых. Те, кто разбирались в числах, начали задавать мне различные вопросы, на которые я отвечал правильно и очень быстро, все еще оставаясь в недоумении, что кто-то не знает ответов, которые кажутся мне столь естественными. В результате крестьяне начали вызывать меня всякий раз, когда возникали трудности".

Вскоре Иноди начал выступать в кафе, где его представлял коммивояжер М. Домби, который стал его импресарио и повез в турне по провинции, а затем привез в Париж в возрасте 13 лет. Здесь он привлек внимание Камиля Фламмариона, который написал несколько статей о нем в различные научные журналы. Известный антрополог Поль Брока, обследовал его и в своем отчете отметил, что голова Жака Иноди была очень большая и неровная.

В 1892 году, когда ему было 24 года, он вернулся в Париж. К этому времени он уже научился читать и писать и его интеллект заметно развился. По свидетельству Альфреда Бине, он вел себя тихо и скромно, говорил мало и был собран. Его образование было не слишком обширным; и следовательно, число тем для разговоров было ограничено.

Его импресарио М. Торси представил Иноди Академии Наук, которая сформировала комитет по изучению счетчика. В этот комитет входили Дарбу, Пуанкаре, Тиссерант и Шарко; позже в него вошел и Альфред Бине. После многочисленных тестов комитет дал свое заключение. Оно было выражено в отчете Дарбу. По мнению известного математика, фантастические результаты, прежде всего, были обусловлены чудесной памятью. Иноди мог запоминать 400-значные числа. 22-значное число Иноди смог вспомнить через восемь дней, хотя его не предупреждали, что когда-либо попросят об этом. Дарбу отмечает очень важный, хотя и пропущенный большинством проверяющих следующий факт: все методы были изобретены самим вычислителем. Правила, открытые Иноди, отличались от принятых в Европе, хотя некоторые из них имели сходство с применяемыми в Индии.

Альфред Бине предложил Иноди представить число 13411 в виде суммы четырех квадратов. Через три минуты Иноди назвал ему четыре следующих числа:

115, квадрат которого равен 13225; 13, квадрат которого равен 169; 4, квадрат которого равен 16; 1, квадрат которого равен 1. Сумма всех четырех квадратов равна 13411.

Минутой позже счетчик нашел другое решение:

113, которое в квадрате дает 12 769; 25, которое в квадрате дает 625; 4, которое в квадрате дает 16; 1, которое в квадрате дает 1. Сумма четырех квадратов равна 13411.

Наконец, некоторое время спустя (точное время не было записано) Иноди нашел третье решение:

113, которое в квадрате дает 12769; 23, которое в квадрате дает 529; 8, которое в квадрате дает 64; 7, которое в квадрате дает 49. Сумма четырех квадратов равна 13411.

Иноди действительно вычислял с удивительной скоростью. Так, в 1924 году в Обществе Гражданских Инженеров был организован матч между счетчиком и вычислительной машиной (арифмометром) того времени. Иноди победил машину в сложении, вычитании, возведении в степень, извлечении корня и в большинстве умножений. Только в умножении пятизначных чисел машина опередила человека. Кроме того, подобно большинству молниеносных вычислителей, Иноди называл день недели, на который приходится та или иная дата, почти мгновенно, что машина не могла делать.

Психолог Альфред Бине отметил, что память Иноди была сильно специализирована. Хотя Иноди запоминал сотни чисел, он не мог повторить более пяти или шести букв, предъявленных в определенном порядке, например в порядке а, т, g, f, s, m, t, u. Он не мог запомнить две строчки стихов или прозы. С другой стороны, он мог поддерживать разговор и отвечать на вопросы остроумно и по существу, решая в то же время предложенные ему задачи.

Все знаменитые великие вычисления XIX века содержат большое количество манипуляций с формулами. Наиболее известным является, несомненно, расчет Леверье орбиты Нептуна, который был основан на возмущениях орбиты Урана и привел к открытию Нептуна. Наиболее впечатляющие вычисления с карандашом и бумагой выполнены также в области астрономии: Делоне потребовалось 10 лет для вычисления орбиты Луны и еще 10 лет для ее проверки (проверка выявила несколько ошибок в знаках и несколько "потерянных" двоек). Результат не является численным, поскольку он состоит, в основном, из формулы, которая сама по себе занимает 128 страниц 4-й главы его книги. Если бы Делоне мог установить систему Mathematica на Pentium 166, то все вычисления, без учета времени на набор формул, заняли бы около 10 минут!

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

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

Поэтому с усложнением решаемых задач роль алгебраических вычислений не только не уменьшилась, но и, наоборот, значительно возросла. Однако часто их приходится выполнять вручную, хотя первые эксперименты по их автоматизации были поставлены еще на машинах первого поколения (в 1953 году). Очень скоро выяснилось, что программное обеспечение алгебраических вычислений должно представлять собой полную систему, включающую метод представления нечисловых данных весьма специальной структуры (формул, уравнений и т.д.), язык, позволяющий манипулировать ими, и библиотеку функций для выполнения необходимых базовых алгебраических операций. Значительно раньше, еще в XIX столетии, Ж. Адамаром была осознана важность так называемых некорректно поставленных задач, для которых оказалось, что арифметика, реализованная традиционным способом, не обладает точностью, достаточной для реализации численных алгоритмов их решения. Поэтому уже в начале 60-х годов прошлого столетия велись интенсивные научные исследования алгоритмов выполнения арифметических операций над числами произвольной длины и произвольного диапазона (так называемая арифметика произвольной разрядности). Уже в середине 60-х годов появились малые ЭВМ, на которых арифметические операции были реализованы не традиционным аппаратным способом, а микропрограммно. В 1965 году в Киеве была создана одна из наиболее уникальных таких ЭВМ — МИР-1. Занимая совсем немного места (стол и тумбочка с пишущей машинкой) и обладая весьма скромной, даже по тем временам, памятью — всего 4 Кбайт, она обладала уникальными возможностями в проведении различных инженерных и научных расчетов. Так как эта машина практически полностью была спроектирована математиками, в ней отсутствовали дорогие технические решения. Зато она обладала входным языком высокого уровня (ассемблер отсутствовал, программа на входном языке высокого уровня интерпретировалась) и возможностью выполнения арифметических операций с произвольной (заданной в начале программы) разрядностью. Конечно, о миллионах цифр не приходилось даже и мечтать, так как программа и все данные должны были уместиться в памяти объемом 4 Кбайт. Чтобы скрыть недостаток финансирования (точнее, его следствие — малый объем памяти), по умолчанию разрядность равнялась 6 (десятичным разрядам). Однако многие задачи решались при разрядности 9, 10, 12, а то и. 18-20 разрядов. Отдельные задачи решались при разрядности 100. Простота входного языка и арифметика произвольной разрядности обеспечили необычно маленькой (по тем временам) и дешевой машине больший успех, чем был у флагмана советской вычислительной техники — БЭСМ-6. Вместе с тем попытки решить новые и все более сложные задачи обнаружили ее основной недостаток — отсутствие возможности выполнять аналитические выкладки. И уже через три года после появления МИР-1, в 1968 году была создана МИР-2, входной язык которой, хотя и являлся расширением входного языка машины МИР-1, имел недвусмысленное название — Аналитик. Это был первый, реализованный в СССР полноценный язык программирования с возможностью выполнять "алгебраические" вычисления. И долгое время, вплоть до появления его очередной версии, он был лучшим.

Успех "алгебраических" вычислений был весьма ощутим, и уже в первой половине 70-х годов прошлого столетия появилось несколько систем компьютерной алгебры; упомяну лишь CLAM (1972 г., машина CDC-6500, 20 000 слов, ориентирована на решение задач общей теории относительности), Reduce-2 (1973 г., машины CDC-6500, 65 000 слов, и IBM-360 (и ЕС-1040), 300 Кбайт, универсальная система), Авто-Аналитик (1973 г., машина БЭСМ-6, 30 000 слов, ориентирована на решение задач математической физики) и Аналитик-74 (машина МИР-3). Если не считать Reduce-2 и Аналитик-74, у которых появились новые версии (знаменитый Reduce-З и Аналитик-79), все они довольно быстро доказали свою практическую непригодность. Ни в одной из упомянутых систем, за исключением Аналитика, например, нельзя было взять интеграл. (Интегрирование само по себе, правда, было предусмотрено в Авто-Аналитике, но фактически интеграл брался только в самых тривиальных случаях.)

Успех (или провал) систем первой половины 70-х годов прошлого столетия обусловил появление новых систем во второй половине этого же десятилетия. Для решения задач квантовой теории поля, в 1977 году в США на ассемблере машины CDC-6500 был реализован специальный язык программирования SCHOONCHIP. Но даже дифференцирование и матричная алгебра в нем предусмотрены не были. Зато в том же 1977 году появилась знаменитая система MACSYMA, на долгие годы ставшая флагманом компьютерной алгебры.

В 80-х годах прошлого столетия вышло большое число новых систем (muMath, CoCoa, AlPi и др.). Тогда же успешно развивалась SCRATCHPAD-2 и активно пополнялись библиотеки Reduce. Одновременно MACSYMA переносилась на новые типы компьютеров и успешно завоевывала сердца и умы все более широких кругов пользователей. Однако уже в 1988 году появилась система Mathematica, почти сразу же (менее чем за год) занявшая ведущие позиции в области применений компьютерной алгебры...

В настоящее время есть множество таких систем, но широко используются, пожалуй, лишь Mathematica, Maple, MuPAD и Derive. Впрочем, в 90-е годы прошлого века широко использовалась также система Axiom, разработанная фирмой IBM. Все упомянутые выше системы, так же как и большинство неупомянутых, являются весьма дружественными по отношению к пользователю. Конечно же, их языки отличаются, количество доступных функций в библиотеках варьируется от нескольких сотен до тысяч, внутренние структуры и даже используемые алгоритмы значительно отличаются друг от друга, но все лидирующие системы имеют много общего.

Разработка, развитие и даже использование этих систем постепенно выделились в автономную научную дисциплину, относящуюся, очевидно, к информатике. Цель данной дисциплины — область искусственного интеллекта, несмотря на то что ее методы все более и более удаляются от этой области. Кроме того, в алгоритмах компьютерной алгебры используются все более тонкие математические средства и совсем недавно доказанные теоремы. Таким образом, этот раздел информатики лежит на стыке нескольких областей, что одновременно обогащает его и делает более трудным в исследовательском плане.

Этот раздел информатики называется "Calcul formel" во французкой литературе и "Computer algebra" — в английской. В русской литературе используются термины "компьютерная алгебра", "символьные и алгебраические вычисления", "аналитические вычисления" и др.

 



Как начать



Как начать



Каждый человек интуитивно вырабатывает свой стиль работы с системами искуственного интеллекта. Можно, например, рассматривать систему компьютерной алгебры просто как достаточно удобный графический калькулятор (инструмент). Чтобы научиться использовать систему Mathematica таким образом, прочтите соответствующую главу из данной книги. Затем можно рассматривать систему Mathematica как помощника в решении небольших и несложных примеров и задач из учебников. Для этого придется прочитать уже не одну, а несколько глав. Переходя к более сложным задачам, необходимо осваивать теорию их решения и одновременно читать книги вроде этой. Однако, приступая к решению настоящих исследовательских задач, будьте готовы столкнуться с рядом проблем: то компьютер слишком долго считает, то не хватает памяти, то получается формула на 5-10 страниц, а то машина выдает непредвиденный ответ. Можете рассматривать данную книгу как упорядоченный набор примеров, правил, советов и комментариев, которые позволят обойти некоторые ямы и ловушки на этом пути.

Решив воспользоваться системой компьютерной алгебры, вы, возможно, еще раздумываете, какую из них выбрать. Это очень важный вопрос, но ответить на него правильно еще важнее. Вот мой ответ. Хотя почти все современные системы компьютерной алгебры очень и даже очень хороши, выбрать нужно наилучшую. Если все же сомневаетесь, какую, прочтите ее название на обложке данной книги.




Концепция системы Mathematica



Концепция системы Mathematica



Специализированные пакеты для решения численных, алгебраических, графических и других задач появились еще в 60-х годах прошлого столетия. Но система Mathematica отличается от них концептуально: система Mathematica универсальна, так как она предназначена для любых научных и технических вычислений. Для этого в ней предусмотрен язык компьютерной алгебры, который позволяет описать широкий круг объектов, которые могут потребоваться в научных и технических вычислениях, причем в самом языке используется очень малое число первичных объектов.




Кто использует систему Mathematica



Кто использует систему Mathematica



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






Новое в версии Mathematica 5

Возможно, ранее вы уже использовали какую- нибудь более раннюю версию системы Mathematica, например 2.2, 4.0 или 4.2. Стоит ли удалять старую версию и переходить на новую? На мой взгляд, стоит, потому что версия Mathematica 5 значительно усовершенствована для различных численных и символьных операций на основе алгоритмов нового поколения. Ниже приведен краткий список усовершенствований и, расширений в различных областях.

Численные расчеты

Давайте рассмотрим усовершенствования, внесенные в версию 5 в области численных расчетов.

 Существенно оптимизированы численные операции линейной алгебры для плотных матриц.  Заново оптимизированы операции линейной алгебры для разреженных матриц.  Оптимизированы операции линейной алгебры, выполняемые с произвольной точностью.  Введена команда LinearSolveFunction для решения линейных систем уравнений для векторов матриц.  Усовершенствованы методы линейного программирования.  Введены новые методы и поддержка массивов переменных в командах FindRoot и FindMinimum.  Введена команда FindFit для нелинейной аппроксимации кривыми.  Введена команда глобальной оптимизации NMinimize.  Команда NDSolve может применяться для решения и-мерных уравнений с частными производными.  Команда NDSolve может применяться для решения алгебраических дифференциальных уравнений.  В команде NDSolve можно использовать векторы и массивы.  Команда NDSolve теперь может автоматически вызывать более широкий набор алгоритмов.  Повышена точность и усилен контроль точности приближенных чисел.  Повышена эффективность арифметики больших чисел и включена оптимизация в зависимости от типа процессора.  Усовершенствованы алгоритмы теоретико-числовых операций, включая GCD и Factorlnteger.  Повышена эффективность основных статистических функций.

Символьные расчеты

Существенные усовершенствования были сделаны в версии 5 в части, касающейся символьных расчетов.

 Команда Reduce позволяет находить решение смешанных систем уравнений и неравенств.  Полностью решаются полиномиальные системы в поле действительных и комплексных чисел.  Расширен класс решаемых диофантовых уравнений.  Введены функции (кванторы) ForAll и Exists и упрощение выражений с кванторами.  Улучшено представление дискретных и непрерывных алгебраических и трансцендентных множеств решений.  Введена команда Findlnstance для нахождения примеров решений уравнений и неравенств в различных областях изменения переменных.  Можно находить минимум в областях целых и действительных чисел.  Введены функции Assuming и Refine для задания допущений.  Введена функция RSolve для решения рекуррентных уравнений.  Добавлена поддержка нелинейных и разностных уравнений и систем.  Полностью решаются рациональные системы обыкновенных дифференциальных уравнений.  Добавлена поддержка дифференциальных алгебраических уравнений.  Введена функция CoefficientArrays для конвертирования систем уравнений в массивы (тензоры).

Программирование и системное ядро

Существенно усовершенствованы в версии 5 средства программирования и системное ядро.

 В язык программирования введена поддержка разреженных массивов.  Введены функции Sow и Reap, облегчающие обработку списков.  Введены опции EvaluationMonitor и StepMonitor для управления вычислениями.  Введено средство измерения времени — функция AbsoluteTiming.  Существенно увеличена производительность MathLink.  Добавлен модуль .NET/Link, позволяющий интегрировать пакет Mathematica с приложениями, использующими платформу Microsoft .NET Framework.  Добавлена возможность оптимизации под 64-разрядные операционные системы и архитектуры.  Поддерживаются вычисления в 64-разрядных адресных пространствах.

Интерфейс

В версии 5 значительно улучшен интерфейс.

 Поддерживаются более 50 форматов экспорта и импорта.  Повышена эффективность экспорта и импорта табличных данных.  Добавлены новые форматы графики и изображений: PNG, SVG и DICOM.  Добавлены средства импорта и экспорта форматов разреженных матриц.  Введен формат MPS для линейного программирования.  Введен формат XHTML для экспорта рабочих документов.  Улучшен браузер подсказки.  Улучшенная поддержка слайд-шоу презентаций.  Улучшенная поддержка инструментов опубликования (AuthorTools).

Стандартные дополнительные пакеты

В программу Mathematica 5, помимо ранее имевшихся приложений, дополнительно включены новые пакеты по статистике (Statistical plots and graphics) и полям алгебраических чисел (Algebraic number fields).

 



Описание некоторых стандартных пакетов Mathematica



Описание некоторых стандартных пакетов Mathematica



Ниже описаны важнейшие функции наиболее часто используемых пакетов системы Mathematica.

Алгебра — Algebra

Algebra`Relm`. Этот пакет содержит дополнительные тождества и функции для работы с комплексными числами и функциями.

Анализ — Calculus

Calculus `FourierTransform`. В этом пакете содержится набор функций для численного преобразования Фурье. (Аналитические преобразования Фурье выполняет ядро.)

Calculus`Limit`. Здесь имеется усовершенствованная функция Limit для нахождения пределов выражений, содержащих широкий класс элементарных и специальных функций.

Calculus`VariationalMethods`. Этот пакет содержит набор функций, относящихся к вариационному исчислению (вычисление вариаций и решение уравнений Эйлера-Лагранжа).

Calculus`VectorAnalysis`. В этом пакете содержится обширный набор функций векторного анализа для вычислений в различных трехмерных координатных системах.

Дискретная математика — DiscreteMath

DiscreteMath`Combinatorica`. Этот пакет расширяет систему Mathematica более чем на 450 функций, относящихся к комбинаторике и теории графов. Включает функции построения графов и других комбинаторных объектов, подсчета инвариантов этих объектов и вывода их на экран.

DiscreteMath`Permutations`. Данный пакет предназначен для работы с перестановками. Все функции этого пакета в версии 5 содержатся в пакете DiscreteMath`Combinatorica`.

DiscreteMath`RSolve`. Этот пакет используется при работе с последовательностями, включая разностные уравнения, производящие функции последовательностей и т.д.

Геометрия — Geometry

Geometry`Polytopes`. При использовании этого пакета можно работать с правильными многоугольниками и многогранниками.

Geometry`Rotations`. В этом пакете определены функции для вращения векторов в двух- и трехмерном пространстве.

Графика — Graphics

Graphics`Animation`. В этом пакете представлен набор функций для анимации различными способами: вращение или поворот объекта в двух- или трехмерном пространстве, изменение графика функции при изменении параметра, отображение последовательности графических объектов.

Graphics`Arrow`. Этот пакет вводит графический примитив (линию со стрелкой), который полезен для вывода графиков.

Graphics' Colors'. С помощью этого пакета вводятся дополнительные системы определения цвета; кроме того, здесь содержатся спецификации многих цветов.

Graphics`FilledPlot`. Этот пакет содержит функции для рисования двухмерных графиков с закрашиванием некоторых областей различными цветами.

Graphics`Graphics`. С помощью этого пакета можно рисовать двухмерные графики в различных системах координат с различными шкалами, а также выводить двухмерные диаграммы.

Graphics `Graphics3D`. Этот пакет предназначен для рисования графиков поверхностей, линий и диаграмм со специальными эффектами.

Graphics`ImplicitPlot`. Можно рисовать графики неявных функций, т.е. функций, заданных неявно (как решения уравнений).

Graphics `MultipleListPlot`. Этот пакет содержит функцию для вывода значений нескольких списков на одном графике.

Graphics`PlotField`. Здесь имеются функции рисования двухмерного векторного поля и поля градиента по заданному потенциалу.

Graphics`PlotField3D`. Этот пакет предназначен для рисования трехмерных векторных полей.

Graphics`Polyhedra`. С помощью этого пакета можно нарисовать некоторые известные многогранники.

Graphics`Shape`. Этот пакет позволяет нарисовать некоторые трехмерные объекты, такие как цилиндр, конус, тор, лента Мебиуса и т.д.

Graphics`Spline`. В этом пакете определен графический примитив (сплайн) и связанные с ним функции.

Линейная алгебра — LinearAlgebra

LinearAlgebra`Cholesky`. Этот пакет ранее использовался для вычисления разложения Холесского симметричной положительно определенной матрицы. В версии 5 необходимая функция определена в системе и загрузка пакета не нужна.

LinearAlgebra `MatrixManipulation`. Данный пакет включает функции для разложения матриц (на столбцы, строки и подматрицы) и составления новых матриц из блоков уже имеющихся матриц, а также для других манипуляций с матрицами.

LinearAlgebra`Orthogonalization`. Этот пакет предназначен для нахождения ортонормированного базиса (проектирование, нормализация, метод Грама-Шмидта).

Теория чисел — Number-Theory

NumberTheory`ContinuedFractions`. Это пакет для работы с непрерывными (цепными) дробями.

NumberTheory`NumberTheoryFunctions` В этом пакете определены многочисленные теоретико-числовые функции.

Численные методы — NumericalMath

NumericalMath`BesselZeros`. Этот пакет предназначен для нахождения нулей различных функций Бесселя.

NumericalMath `CauchyPrincipalValue`. В этом пакете содержится функция для подсчета главного значения Коши для интеграла с особенностями.

NumericalMath`Listlntegrate`. Этот пакет позволяет вычислить интеграл таблично заданной функции.

NumericalMath `NLimit`. Здесь содержатся функции для нахождения численными методами производных, сумм, пределов.

NumericalMath`PolynomialFit`. Этот пакет применить метод наименьших квадратов для приближения функции полиномом заданной степени.

NumericalMath`SplineFit`. Данный пакет реализует интерполяцию сплайнами.

Статистика — Statistics

Statistics`Confidencelntervals`. Здесь содержатся функции для расчета доверительных интервалов различных параметров статистического распределения.

Statistics `ContinuousDistributions`. В этом пакете содержатся определения основных непрерывных статистических распределений.

Statistics `DescriptiveStatistics `. Здесь имеются определения характеристик распределений, таких как среднее, дисперсия, мода, медиана и др. Эти характеристики можно вычислять как для данных, заданных списками, так и для различных известных распределений, используя пакеты Statistics `Descriptivestatisti.es `,Statistics`DiscreteDistributions`.

Statistics`DiscreteDistributions`. В этом пакете определены основные дискретные статистические распределения.

Statistics`NormalDistribution`. Здесь определены наиболее часто используемые непрерывные распределения, так или иначе связанные с нормальным (гауссовым) распределением. Все функции данного пакета имеются в пакете Statistics `ContinuousDistributions`, но данный пакет меньше по размеру и загружается быстрее.

Разное — Miscellaneous

Здесь содержится набор столь разнообразных пакетов, что затруднительно даже классифицировать их.

Miscellaneous `Units`. Этот пакет часто используется студентами. Он позволяет преобразовывать единицы измерения различных физических величин.

 



Отличия систем компьютерной алгебры



Отличия систем компьютерной алгебры от традиционных систем программирования



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

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

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

Системы компьютерной алгебры часто представляют собой примеры систем с искусственным интеллектом. И поэтому их поведение иногда трудно предсказать. Человек далеко не всегда может соперничать с машиной при поиске решения по заданным правилам в достаточно полно определенном массиве данных. Например, уже сейчас далеко не просто предсказать исход шахматной партии между машиной и чемпионом по шахматам. Машина может выиграть и у чемпиона.



Применение системы Mathematica



Применение системы Mathematica



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




Расширение системы Mathematica



Расширение системы Mathematica



Mathematica — это расширяемая система. Кроме внутренних команд ядра системы Mathematica, можно использовать дополнительные команды, которые содержатся в загружаемых пакетах. Некоторые пакеты системы (по алгебре, анализу и т.д.) поставляются вместе с самой программой и являются стандартными. Другие пакеты можно переписать с сервера компании Wolfram Research (www.wolfram.com) или приобрести отдельно.

Чтобы выполнить команду из пакета Mathematica, надо сначала загрузить нужный пакет с помощью команды <<dir`package` или <<dir\

Последняя команда инициализирует все пакеты из папки dir. Вот как, например, можно инициализировать все алгебраические пакеты: <<Algebra`.




Развитие системы Mathematica



Развитие системы Mathematica



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

Mathematica была создана компанией Wolfram Research. Успех системы Mathematica привел к росту компании и появлению большого числа независимых разработчиков, связанных с системой Mathematica. Сегодня существует более сотни специализированных коммерческих пакетов для программы Mathematica, а также несколько периодических изданий и несколько сотен книг, посвященных этой системе.




Хотя многие важные задачи могут



Резюме

Хотя многие важные задачи могут быть решены классическими численными методами, для решения большого числа задач необходима арифметика произвольной разрядности. Кроме того, множество задач не может быть решено без применения компьютерной алгебры. Поэтому для решения каких бы то ни было серьезных задач, как правило, требуется система компьютерной алгебры, которая могла бы использоваться в качестве блокнота, калькулятора, помощника и ...языка программирования. Наилучшей среди лучших таких систем является Mathematica.