Отличительные особенности Mathematica 8
Отличительные особенности Mathematica 8
Ускорение численных расчетов и повышение их точности
Большинство пользователей с трудом уловят разницу между версиями Mathematiea 3 и Mathematica 8. Именно поэтому основной материал данной книги полностью относится к этим двум последним версиям. Тем не менее, различия между версиями есть, и достаточно серьезные.
Пожалуй, главной отличительной особенностью системы Mathematica 8 стало кардинальное ускорение численных расчетов. Традиционно системы символьной математики проигрывали численным системам, таким как MATLAB. До сих пор скорость вычислений в системе MATLAB в 5-10 раз превышала скорость вычислений, производимых системами символьной математики. Поэтому в системе Mathematica 8 были предприняты необычные для систем символьной математики и даже беспрецедентные меры по ускорению численных расчетов. Они перечислены ниже:
- Значительно ускорены все операции с матрицами, особенно большого размера.
- Существенно оптимизированы алгоритмы для выполнения вычислений с числами, содержащими вплоть до миллиона знаков.
- Ускорен ввод и вывод очень больших целых чисел.
- Полностью сохраняется точность при вводе и выводе приближенных действительных чисел.
- Обеспечивается свертка и корреляция массивов любой размерности.
- Применены новые оптимизированные алгоритмы для преобразований Фурье.
- Ускорены процедуры численного решения полиномиальных уравнений.
Рисунок иллюстрирует некоторые простые вычисления в численном виде с фиксацией времени вычислений для систем Mathematica 3 и 4 (данные получены от разработчика).
Из примеров на видно, что скорость простых вычислений возросла в 5-10 раз.. В отдельных случаях скорость более сложных вычислений возрастала намного больше. Ниже приведены данные о выполнении некоторых операций над матрицей m большого размера (500×500).
Операция |
Mathematica 8 |
Mathematica 3 |
Отношение времен |
Sin [m] |
0,13с |
2,433 с |
18,7:1 |
Такое резкое ускорение скорости численных расчетов способно открыть для системы Mathematica 8 новые обширные сферы применения, например численное моделирование сложных систем, описываемых матричными алгебраическими и дифференциальными уравнениями.
Улучшение работы с массивами
Кардинально уменьшено и время обращения к памяти при записи и считывании массивов, а заодно существенно повышена плотность упаковки массивов для данных различного типа (за счет применения особой технологии упаковки массивов). Приведенные ниже сведения характеризуют это для версий Mathematica 8 и 3 для ряда типов данных — целых (Integers), вещественных (Reals) и комплексных (Complex Numbers).
Mathematica 8 |
Mathematica 3 |
|||
Тип данных |
Время, с |
Объем памяти |
Время, с |
Объем памяти |
Integers |
0,24 |
400 056 |
0,43 |
2 000 024 |
Reals |
0,231 |
800 056 |
0,611 |
2 000 024 |
Complex Numbers |
0,35 |
1 600 056 |
1,341 |
6 000 024 |
Уплотнение массивов означает, что Mathematica 8 при заданном объеме свободной памяти может решать более объемные и серьезные задачи, чем это смогла бы сделать предшествующая версия системы.
Указанные достоинства системы Mathematica 8 достигнуты за счет выбора и тщательной оптимизации алгоритмов численных вычислений:
- введена прямая поддержка следов матриц;
- изменены алгоритмы нахождения минимума (функция FindMinimum);
- реализован ускоренный вывод больших чисел — вплоть до миллионов цифр;
- введена новая технология упаковки больших массивов чисел;
- существенно уменьшена необходимость в повторных циклах;
- обеспечена абсолютная точность при целочисленных вычислениях;
- гарантирована заданная погрешность при вычислениях с вещественными числами;
- улучшено размещение переменных в памяти.
По умолчанию погрешность вычислений при целочисленных операциях в системе Mathematica 8 определена в 1 000 000 верных цифр. К примеру, чтобы выдать число n с миллионом верных знаков, системе Mathematica 8 понадобится чуть больше двух минут (разумеется, на современном компьютере)! В некоторых видах сложных целочисленных вычислений, используемых в технике кодирования информации, Mathematica 8 обеспечивает беспрецедентно малое время вычислений.