Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Банк задач  |  Форум  |  Download  |  Ссылки  |  Конкурсы


 
Maple 8 - надежность и применимость
Б. Манзон, SoftLine

Универсальный математический пакет 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 – необходимая составляющая успеха в этой очень интересной и одновременно очень сложной работе.

В начало

Карта сайта | На первую страницу | Поиск | О проекте | Сотрудничество | e-mail
Корпоративная почта | ActiveCloud | Антивирус Касперского | Matlab | Подписка на MSDN для вузов | ИТ-ПРОРЫВ

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Наши баннеры


Copyright © 1993-2017. Компания Softline. Все права защищены.

Дата последнего обновления информации на сайте: 04.03.17
Сайт начал работу 01.09.00

Softline – программное обеспечение, IT-консалтинг, лицензирование, обучение

подарки – подарочные сертификаты

 

            Rambler's Top100