
- •Лекция 1. Общий обзор систем компьютерной математики.
- •Классификация средств компьютерной математики.
- •Системы для численных расчетов
- •Структура систем компьютерной математики.
- •Пользовательский интерфейс математических систем.
- •Понятие об операторах и функциях.
- •Математические программы в Интернете.
- •Бесплатные математические пакеты
Понятие об операторах и функциях.
Оператор — специальный знак, указывающий на то, что надо делать с некоторыми данными — операндами. Простейшими операторами являются арифметические операторы, например, в выражениях 2+3, а-b, c*d, e/f, 2^3 и т. д. Здесь знаки +, -, *, / и ^ являются арифметическими бинарными операторами, поскольку с ними используются два операнда. Есть и унарные операторы, работающие с одним операндом, например оператор вычисления факториала !, употребляемый в форме N!. В самых современных системах состав операторов существенно расширен, среди них есть символы дифференцирования, интегрирования, вычисления сумм и произведений рядов и т. д. Часто они выводятся с помощью палитр математических знаков.
Функция в языках программирования — это объект, имеющий имя и возвращающий результат преобразования списка параметров функции. В математические системы встроено множество функций — это, например, элементарные функции, такие как ехр(х), ln(x), sin(x) и т. д. Указанные функции имеют одну переменную, но могут быть и функции двух и более переменных. Обычно параметры функций вводятся в круглых скобках, но есть и исключения. В системах Mathematica, к примеру, параметры (аргументы) функций задаются в квадратных скобках, например, Sin[х], а в системах класса Derive имена функций задают прописными буквами, например, SIN(x).
Приведем обозначения элементарных функций, входящих в систему Mathcad 8/2000:
тригонометрические функции — angle(x, у), sin(z), cos(z), tan(z), sec(z), csc(z),cot(z);
гиперболические функции — sinh(z), cosh(z), tanh(z), sech(z), csch(z), coth(z);
обратные тригонометрические функции — asin(z), acos(z), atan(z), asec(z), acsc(z), acot(z);
обратные гиперболические функции— asinh(z), acosh(z), atanh(z), asech(z), acsch(z), acoth(z);
показательные и логарифмические функции — exp(z),ln(z),log(z);
функции комплексного аргумента:
Re(z) — выделение действительной части z;
Im(z) — выделение мнимой части z;
arg (z) — вычисление аргумента z.
Этот набор (с учетом отмеченных выше отличий в обозначениях функций) характерен для всех описанных ниже систем компьютерной математики. Довольно обширен и набор специальных математических и иных функций в системах компьютерной математики. Их особенно много в системах Maple и Mathematica.
Несмотря на то что число математических функций может достигать сотен, системы компьютерной математики дают пользователю возможность задавать свои функции (а порой и операторы). Такие функции называют функциями пользователя. Обычно их задают в форме
имя_функции(список_параметров):=тело_функции
Телом функции является выражение, содержащее переменные, заданные в списке параметров. Такие переменные являются локальными.
Математические программы в Интернете.
На данный момент в Интернете имеется огромное количество информационных ресурсов с коммерческими продуктами, бесплатных математических программ, библиотек алгоритмов реализующих основные численные методы на различных языках программирования. Их доступность, охват практически всех направлений компьютерного анализа математических задач позволяют значительно сократить время и трудозатраты как студента, так и квалифицированного исследователя. Сегодня на лекции мы бегло перечислим и опишем некоторые из таких ресурсов в Интернете. Отметим, что значительное их число, к сожалению, на английском языке.
В последние годы все разработчики систем компьютерной математики уделяют огромное внимание информационной поддержке таких систем в глобальной общемировой сети. Это обусловлено следующими обстоятельствами:
современные системы компьютерной математики — очень сложные и быстро развивающиеся программные средства, нуждающиеся в оперативной рекламе и, главное, в оперативной коррекции их возможностей и устранении обнаруженных недостатков;
справочные базы систем компьютерной математики очень обширны и нуждаются в постоянном обновлении;
для практического изучения систем компьютерной математики желательна постоянная модернизация примеров их применения, для чего Интернет предоставляет обширные возможности;
при решении сложных научных задач и при разработке серьезных проектов в образовании необходима связь пользователей с разработчиками программных средств и со своими коллегами во всем мире;
современные технологии программирования, такие как Java-апплеты и ActiveX, новые языки передачи структурированной информации, такие как XML и MathML, широко применяются как в Интернете, так и в системах компьютерной математики.
Для использования возможностей Интернета компьютер должен быть оснащен модемом или подключен к локальной сети, имеющей вход в Интернет, и располагать необходимым программным обеспечением — прежде всего браузером и программой электронной почты. Необходимое программное обеспечение часто включается в состав операционной системы, хотя его можно приобрести и отдельно. Например, в Windows стандартным браузером является Internet Explorer, a почтовой программой — Outlook Express фирмы Microsoft. Есть множество подобных программ и у других фирм. Как правило, доступ к ресурсам Всемирной паутины предоставляет провайдер — фирма, через сервер которой вы будете подключены к Интернету.
Библиотеки алгоритмов и программ.
Несмотря на наличие универсальных математических пакетов, таких как Maple, MATLAB, Mathematica, MathCad, Macsyma и др., программирование на алгоритмических языках по-прежнему широко используется для решения многих задач. При таком компьютерном исследовании очень полезными оказываются библиотеки программ, реализующие основные численные методы и алгоритмы. В этих библиотеках собраны хорошо проверенные процедуры для решения самых разнообразных задач.
Начнем с так называемых «Численных рецептов» (Numerical Recipes). По адресу http://www.nr.com размещен электронный вариант одноименной книги, издаваемой Cambridge University Press. Эта книга содержит большинство классических численных методов, включая их описание на английском языке и тексты процедур. Доступны три варианта этой книги: с программами на языке С, Fortran77 и Fortran90. Файлы с главами книги хранятся в формате PDF или PostScript. Используя гиперссылки, пользователь выбирает интересующий его вариант книги и попадает на страницу с ее оглавлением. Нажав на нужную ссылку, можно получить файл с текстом любой главы, прочитать описание метода и извлечь текст процедуры.
Библиотека Netlib (http://www.netlib.org) содержит не только тексты процедур, но и статьи из области вычислительной математики, а также множество полезных ссылок на аналогичные ресурсы. Найти нужную процедуру можно, воспользовавшись средствами поиска по ключевым словам или просмотрев полный список архива. Еще одной большой коллекцией разнообразных численных процедур является архив GAMS (Guide to Available Mathematical Software), расположенный по адресу: http://gams.nist.gov. Он также снабжен средствами поиска, ссылками на литературу и ресурсы Интернета. На решение задач большой сложности (в смысле объемов вычислений), в частности с использованием параллельных компьютеров, ориентирован архив NHSE (http://www.nhse.org). Много различных процедур и полезных ссылок находится на немецком сайте научных вычислений (http:// www.scicomp.uni-erlangen.de). Библиотеку алгоритмов международного института ядерной физики можно получить по адресу: http://wwwinfo.cern.ch/asd, а затем установить на своем компьютере. Отметим, что большинство процедур, содержащихся в этих архивах, реализованы на языках FORTRAN и С.
Кроме перечисленных универсальных библиотек алгоритмов существует великое множество специализированных, которые можно найти, воспользовавшись любыми поисковыми системами. Так, по адресу http://www.unige.ch/math/folks/hairer находятся процедуры для решения систем обыкновенных дифференциальных уравнений. Те, кто программирует на языке Pascal, может найти реализацию многих численных методов по следующей ссылке: http://www.cs.vu.nl/~jprins/tp.php. Для любителей объектно-ориентированного программирования предназначен сайт http://oonumerics.org.
Из ресурсов на русском языке отметим сайт библиотеки численного анализа НИВЦ МГУ (http://www.srcc.msu.su/num_anal), уже упоминавшийся выше проект Ехроnenta (http://www.exponenta.ru), библиотеку алгоритмов, размещенную по адресу http://alglib.chat.ru/, и сервер параллельных вычислений http://parallel.ru.