Создание вектора-строки
> М := Vector[row](10,i->i);
Дублирование первых 5 элементов в следующих 5 элементах
> Copy(5,М,М,5), М;
Очистка каждого второго элемента
> Fill(0,М,1,2), М;
Формирование матрицы 2×5
> Alias(М, [2,5], С_order)
Создание матрицы с комплексными элементами
> М := Matrix(2,3,(i,j)->i+I*j, datatype=complex[8], order=C_order);
Создание «двойной» матрицы с элементами в формате плавающей точки
> Mr := ComplexAsFloat(М);
Действие всех функций этого пакета вполне очевидно из приведенных примеров.
9.4.13. Пакет анализа ошибок научных вычислений ScientificErrorAnalysis
В Maple 9 был введен пакет расширения для анализа ошибок научных вычислений. Пакет вызывается командой
> with(ScientificErrorAnalysis);
С возможностями этого пакета можно познакомиться по справке. На Интернет-сайте корпорации MapleSoft можно найти раздел SEAApps с большим числом примеров применения этого пакета, полезного, прежде всего, физикам, занятым обработкой данных физических экспериментов и прогнозом ошибок в научных вычислениях.
9.5. Пакеты расширения системного характера
9.5.1. Пакеты генерации кодов — codegen и CodeGeneration
Пакет codegen представляет собой набор команд, предназначенных для организации взаимодействия системы Maple с другими программными средствами:
> with(codegen);
Warning, the protected name MathML has been redefined and unprotected
Этот пакет очень полезен программистам, занимающимся разработкой сложных программных комплексов. Пакет позволяет создавать процедуры на языке Maple и транслировать их в программные модули, записанные на других языках программирования, таких как Фортран или Си.
В Maple 9 появился пакет генерации кодов — CodeGeneration:
> with(CodeGeneration);
Warning, the name С has been rebound
Warning, the protected name Matlab has been redefined and unprotected
Получение матрицы, элементы которой имеют нулевые действительные части:
> Fill(0,Mr,0,2), М;
Наиболее интересной в новом пакете является поддержка трансляции в коды языков Java, MATLAB и VisualBasiс. Ниже даны примеры трансляции Maple-выражений в codegen):
> х := 'х': s := 's': t := 't': r := 'r':
> cs := [s=1.0+x, t=sin(s)*exp(-x), r=ln(-x)+x/c];
> Matlab(cs);
s = 0.10e1 + x;
t = sin(s) * exp(-x);
r = log(-x) + x / t;
> f := proc(x) local a; if x =1.0 then a := 1.0 else a := sin(x)/x end if; return a; end proc:
VisualBasic(f);
Imports System.Math
Public Module CodeGenerationModule
Public Function f(ByVal x As Double) As Double
Dim a As Double
If (x = 0.10E1) Then
a = 0.10E1
Else
a = Sin(x) /x
End If
Return a
End Function
End Module
Применение этих пакетов имеет важное значение при обеспечении совместной работы различных программных средств.
9.5.2. Пакет создания контекстных меню context
Пакет context служит для создания контекстных меню. Он содержит небольшое число функций:
> with(context);
Этот пакет используется довольно редко и, в основном, пользователями, решающими в среде Maple не вычислительные, а системные задачи. Описание таких задач выходит за рамки данной книги. Множество примеров применения пакета можно найти в справке и в файле context_exmples, который можно найти на Интернет-сайте корпорации MapleSoft.