|
Универсальный математический пакет Maple по-прежнему один из самых популярных пакетов, как для математических исследований, так и для сложных расчетных проектов в других областях науки и техники. Его преимущества - возможность решать огромный спектр математических задач как аналитически так и численно, простой язык, позволяющий создавать пользовательские программы и приложения, прекрасная двух- и трехмерная графика, полиграфическое начертание формул - дают возможность использовать пакет одновременно как инструмент для выполнения сложных проектов и как научный редактор.
Новая версия программы Maple 8 - подарок всем ее приверженцам, поскольку она стала более надежной и эффективной.
Надежность
Начиная с версии Maple 6 произошло значительное функциональное расширение и изменение программы: добавлены алгоритмы численных расчетов компании NAG, электронные таблицы, контекстно зависимые команды, кроме того произошло существенное изменение языка программирования, он стал более современным - объектно ориентированным. Все эти и множество других изменений, к сожалению, привели также к увеличению ошибок, что вызывало нарекание пользователей. Именно поэтому разработчики версии Maple 8 основное внимание уделили устранению ошибок и повышению надежности. Усилия увенчались успехом. По имеющимся тестам и отзывам пользователей - Maple 8 наиболее надежная версия после Maple V 4.0.
Именно надежностью этой версии можно объяснить, что впервые после долгого перерыва произошла замена ядра приложения Symbolic Toolbox в наборе продуктов Mathworks - с версии Maple V 4.0 на версию Maple 8.
Ядро Maple 8 будет использовано также в таких популярных продуктах, как Mathcad 11 компании MathSoft и Scientific Word компании Mackichan.
Основные новшества
Не смотря на то, что большое внимание в новой версии было уделено устранению ошибок, новшеств не так уж мало. Вот основные из них:
- Пакет Maplets для создания интерфейса пользовательских приложений
- Пакет Student[Calculus1]
- для обучения студентов математическому анализу
- ScientificConstants
, - научные постоянные, справочные данные практически о всех известных научных константах с автоматическим пересчетом в соответствии с единицами измерения
- Differential Equations -
набор новых алгоритмов и методов для решения дифференциальных уравнений как обыкновенных так и с частными производными
Но обо всем по порядку.
Пакет Maplets
Используя пакет Maplets, Вы можете создавать в Ваших приложениях окна, диалоги и другие визуальные объекты, которые помогут пользователю, не зная тонкостей работы с программой Maple, получать все преимущества от использования Вашего приложения.Покажем на простом примере - "Диалог дифференцирования" что такое Maplets и как они создаются.
Загружаем пакет> restart; with(Maplets[Elements]):
Затем пишется несложная программа для создания диалога
> maplet5 := Maplet( Window( 'title'="Diff", #Это строка создает окно и его наименование
[ ["Functon: ", TextField['TF1']()],# Эта строка создает поле для введения дифференцируемой функции
["Variable of differencing: ", TextField['TF2'](3)],# Эта строка создает поле для введения переменной дифференцирования
TextBox['TB1']('editable' = 'false', 3..40 ), # Эта строка создает нередактируемое поле для вывода результата
[Button("Evaluate", Evaluate('TB1' = 'diff(TF1, TF2)')),# кнопка для выполнения операции дифференцирования
Button("OK", Shutdown(['TF1', 'TF2', 'TB1'])),# Кнопка для закрытия окна
Button("Clear", SetOption('TF1' = "") # Кнопка для подготовки окна к новой операции дифференцирования
)]] ) ):
Диалог можно вызвать из командной строки следующим образом
> Maplets[Display]( maplet5 ):
Initializing Java runtime environment.

Можно также сохранить созданный Maplets- диалог как файл с расширением .maplet и запускать непосредственно.
Пакет безусловно очень полезен, особенно для создания учебных приложений.
Пакет Student[Calculus1]
Подпакет Calculus1 пакета Student разработан специально для учебных целей. С помощью этого пакета преподавателям легче демонстрировать, а студентам - понимать основы математического анализа функций от одной переменной. Основные составляющие пакета - визуализация и пошаговое вычисление. Команды визуализации выводят на экран графики Maple и одно или несколько символьных представлений изучаемой величины.
Например, можно вывести на экран аппроксимацию интеграла Римановой суммой
> restart;
> with(Student[Calculus1]):RiemannSum(sin(x), x=0..10, output=plot);

Или вывести на экран правило дифференцирования произведения двух функций
> Rule[product](Diff(x*sin(x),x));

Пошаговое решение задачи дает возможность изучить правила вычислений. Например, пусть нужно продифференцировать функцию:
> Diff(sqrt(x^2+1), x);

Запрашиваем подсказку
> Hint(%);

Подсказка означает, что нужно применить правило последовательного (цепного) дифференцирования сложной функции. Применяем подсказку
> Rule[%](%%);

Применяем правило дифференцирования степенной функции
> Rule[`^`](%);

Применяем правило дифференцирования суммы функций
> Rule[`+`](%);

Еще раз применяем правило дифференцирования степенной функции
> Rule[`^`](%);

Применяем правило дифференцирования константы
> Rule[constant](%);

В процессе получения этого результата учащиеся могут шаг за шагом проследить использования правил дифференцирования.
Пакет ScientificConstants
Этот пакет особенно удобен при решении физических и технических задач, когда необходимо точно вычислить результат, в который входят физические постоянные.
Пакет загружается командой
> restart:
> with(ScientificConstants);

В качестве примера использования пакета найдем сколько молекул находится в 10 граммах вещества с химической формулой спирта .
Молекулярный вес:
> 2*Element( C, atomicweight)+6*Element( H, atomicweight )+Element( O, atomicweight ):
> M:=evalf( % );

Этот вес выражен в единицах системы единиц СИ (SI), используемой по умолчанию, то есть в килограммах (kg). Чтобы перевести в граммы используем функцию convert/units .
> M:=convert( M, units, kg, g );

Таким образом, число молекул в 10 граммах образца.
> 10/M;

Геостационарная орбита
В качестве другого примера вычислим радиус геостационарной орбиты Земли
Выражение для скорости вращающегося по кругу тела вокруг сферически симметричного тела
> restart; with(ScientificConstants):
> vCirc := sqrt( G*M/R );

где - гравитационная постоянная,
- масса тела и
- радиус орбиты.
Теперь для геостационарной орбиты скорость
метров в день, или после преобразования в метры в секунду:
> convert( 2*Pi*R, units, m/d, m/s );

Приравняем эту величину .
eqn1:= vCirc = %;

Решим это уравнение относительно
. Чтобы исключить недействительные решения используем пакет RealDomain.
> use RealDomain in
rGeo := solve( eqn1, R );
end use;

Подставим значения для гравитационной постоянной
массы Земли
.
> evalf( eval( rGeo, {G=Constant(G), M=Constant(M[Earth])}));

Переведем решение в километры
> convert( %, units, m, km );

Это и есть радиус геостационарной орбиты Земли в км.
Дифференциальные уравнения с частными производными
В версии Maple 8 добавлены алгоритмы решения численными методами широкого класса дифференциальных уравнений с частными производными и граничными условиями. Причем, что очень удобно, результат решения может быть автоматически выведен в виде графиков или анимаций.
Рассмотрим пример
Пусть задано дифференциальное уравнение распространения тепла от стенки с постоянной температурой в бесконечную однородную среду
> restart:
> PDE := diff(u(x,t),t)=1/10*diff(u(x,t),x,x);

Граничные условия
> IBC := {u(x,0)=1, u(0,t)=0, D[1](u)(1,t)=0};

Решение уравнения - процедура
> pds := pdsolve(PDE,IBC,numeric);

Графики решения - распределения температуры в различные моменты времени.
> p1 := pds:-plot(t=0):
p2 := pds:-plot(t=1/10):
p3 := pds:-plot(t=1/2):
p4 := pds:-plot(t=1):
p5 := pds:-plot(t=2):
> plots[display]({p1,p2,p3,p4,p5},
title=`Температурный профиль при t=0,0.1,0.5,1,2`);

Изменение со временем температурного профиля можно проследить также на трехмерном графике
> pds:-plot3d(t=0..1,x=0..1);

и даже в виде анимации
> pds:-animate(t=0..1,x=0..1);

Обыкновенные дифференциальные уравнения
Традиционно расширен класс решаемых обыкновенных дифференциальных уравнений. Теперь с помощью команды dsolve можно получать точные решения большого класса нелинейных дифференциальных уравнений второго порядка и выше с использованием методов симметрии и интегрирующих множителей.
Пример
> ode := diff(y(x), x$3) = (1/y(x)*diff(y(x),x)-2/x)*diff(y(x),x,x)+1/y(x)/x*diff(y(x),x)^2+1/x^3*y(x);

> sol := dsolve(ode);

Другие новшества
Кратные интегралы
В предыдущих версиях программы вычислить кратный интеграл можно было только путем последовательного вычисления однократных интегралов с соответствующими границами интегрирования.
> Int(Int(Int(exp(x+y+z)/((5*x+1)*(10*y+2)*(15*z+3)),
x=0..4), y=0..3), z=0..sqrt(2));

> evalf(%);

В новой версии запись кратных интегралов может быть произведена с использованием синтаксиса списков
> d := (1 - w^2*x^2*y^2*z^2):
g := d * cos(w*x*y*z) - d * w*x*y*z * sin(w*x*y*z);

> evalf(Int(g, [w=0..1, x=0..1, y=0..1, z=0..1]));

Для вычисления кратных интегралов, когда не нужна слишком высокая точность, добавлен метод Монте-Карло . Например, следующий интеграл вычисляется с точностью до трех знаков.
> h := 1/(2 + sin(Pi*sqrt(87)*(x1+x2+x3+x4+x5+x6)));

> evalf(Int(h, [x1=-1..1, x2=-1..1, x3=-1..1, x4=-1..1, x5=-1..1, x6=-1..1], method=_MonteCarlo, epsilon=0.5e-2)):
> evalf[3](%);

Пакет VectorCalculus
Добавлен очень интересный и удобный пакет VectorCalculus.
Основным объектом в этом пакете является вектор, однако в отличие от пакета linalg, в котором также присутствует этот объект, вектор пакета VectorCalculus снабжен атрибутами - реперами координатной системы.
> restart; with(VectorCalculus):
Warning, the assigned names <,> and <|> now have a global binding
Warning, these protected names have been redefined and unprotected: *, +, ., Vector, diff, int, limit, series
> v := Vector( [a,b,c] );

> attributes(v);

> SetCoordinates( polar );

> w := <r,theta>;

Примеры операций с векторными полями
> SetCoordinates( spherical[r,phi,theta] );

> F := VectorField( <r,0,0> );

пакет включает основные дифференциальные операции, в частности, вычисление градиентов, роторов, Лапласиана и так далее.
Например, Лапласиан
> SetCoordinates(cartesian[x,y,z] );

> (Del . Del)( f(x,y,z) );

Скалярное произведение векторного поля на градиент
> L := VectorField( <x,y,z> ) . Del:
> L( f(x,y,z) );

Кроме этого в пакете предусмотрены операции для стандартных операций с кривыми: вычисления кривизны и радиуса кривизны пространственной кривой, тангенциального и касательного вектора в заданной точке, эволюты и эвольвенты и так далее.
Очень интересно, что с помощью алгоритмов этого пакета можно вычислить интегралы от нескольких переменных вдоль кривых и поверхностей, потоки векторных полей.
Например интеграл по окружности радиуса R от функции

> int( exp(-x^2-y^2), [x,y] = Circle( <0,0>, R ) );

Интеграл по поверхности сферы бесконечного радиуса от функции

> int( exp(-x^2-y^2-z^2), [x,y,z] = Sphere( <0,0,0>, infinity ) );

Поток векторного поля через заданную поверхность. Пусть, например, векторное поле имеет вид
> assume( k::posint );
> F := VectorField( <r^(-k),0,0>, spherical[r,phi,theta] );

Поток этого поля через сферу радиуса R
> Flux( F, Sphere( <0,0,0>, R ) ) assuming R>0;

С помощью пакета можно находить максимумы и минимумы функций от нескольких переменных с дополнительными ограничениями методом множителей Лагранжа и решать много других задач.
Пакет VectorCalculus расширяем в том смысле, что можно задавать специальные (пользовательские) системы координат и решать задачи в этих координатах.
Заключение
Недавно я просмотрел одну из своих старых статей (15-летней давности) и подумал как много усилий было потрачено мной при выполнении расчетов и оформлении этой статьи. Если бы в то время у меня была программа подобная Maple, я все бы сделал гораздо быстрее и аккуратнее. Возможно, я бы не ограничился теми расчетами и выводами, которые приведены в статье, а пошел бы гораздо дальше.
Сейчас научные работники имеют возможность использовать необыкновенно повышающую производительность замечательную программу Maple, в которой все под рукой - самые современные математические методы, надежные проверенные временем алгоритмы, системы единиц измерения, все известные научные константы, точные расчеты в формулах и числах, полиграфическое начертание формул, великолепные двух- и трехмерные графики, получаемые одной командой, язык, позволяющий запрограммировать все пользовательские формулы и методы.
Значительно расширилось и упростилось также взаимодействие между учеными всего мира. Практически без всяких усилий, без редакций и редколлегий, Вы можете оформить свой труд с полиграфическим качеством и мгновенно опубликовать его в Интернет для обсуждения во всем мире.
Именно этим можно объяснить появление большого количества Интернет-конференций пользователей и Интернет-ресурсов, заполненных задачами, решенными в среде Maple и других аналогичных программ.
Один из больших и лучших - Интернет ресурс компании Waterloo Maple, называемый Maple Application Center http://www.mapleapps.com/ . Здесь Вы найдете статьи математиков-профессионалов (раздел Mathematics), учебные материалы (разделы Education и Education power tools), технические статьи (раздел Engineering), научные статьи из других областей (разделы Science, Finance, Statistics&Data Analysis, Research Power Tools), статьи программистов (разделы Computer Science, Maple Tools) и многие другие.
В современных условиях быстро расширяющегося объема научных исследований и инженерных разработок специалистам приходится перерабатывать значительно больший объем информации для получения новых научных результатов и создания новых технологий. Использование современных универсальных математических пакетов, подобных Maple 8 – необходимая составляющая успеха в этой очень интересной и одновременно очень сложной работе. В начало |