оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Встроенные операторы и функции

  1. Операторы и операнды
  2. Виды операторов.
  3. Бинарные (инфиксные) операторы
  4. Операторы объединения, пересечения и исключения для множеств
  5. Унарные арифметические операторы
  6. Оператор % и команда history
  7. Логические операторы
  8. Специальные типы операторов
  9. Функциональные операторы
  10. Нейтральные операторы, определяемые пользователем
  11. Определение операторов с помощью оператора define
  12. Математические функции
  13. Понятие о встроенных функциях
  14. Некоторые целочисленные функции и факториал
  15. Тригонометрические функции
  16. Обратные тригонометрические функции
  17. Гиперболические функции
  18. Обратные гиперболические функции
  19. Степенные и логарифмические функции
  20. Функции с элементами сравнения
  21. Функции комплексного аргумента
  22. Специальные математические функции
  23. Функции для работы с векторами и матрицами
  24. Элементы векторов и матриц
  25. Преобразование списков в векторы и матрицы
  26. Операции с векторами
  27. Операции над матрицами с численными элементами
  28. Символьные операции с матрицами
  29. Функции для работы со строковыми данными
  30. Контроль типа строковых данных
  31. Интерактивный ввод строк
  32. Обработка строк
  33. Преобразование строки в математическое выражение
  34. Что нового мы узнали?
Операторы и операнды

Виды операторов

Операторы во входном языке и языке программирования Maple служат для конструирования выражений. Формально операторы представлены своими идентификаторами в виде специальных математических знаков, слов и иных имен. Операторы, как это вытекает из их названия, обеспечивают определенные операции над данными, представленными операндами.

Имеется пять основных типов операторов:

Для просмотра операторов и их свойств можно использовать следующие команды:

> ?operators[binary]; 

> ?operators[unary]; 

> ToperatorsCnullary]; 

> ?operators[precedence];

> ?operators[functional]:

А для изучения примеров применения операторов нужно задать и исполнить команду:

> ?operators[examples];

Команда:

> Tdefine:

позволяет ознакомиться с функций define. С ее помощью можно определять новые операторы.

Бинарные (инфиксные) операторы

Бинарные (инфиксные) операторы используются с двумя операндами, обычно размещаемыми по обе стороны от оператора. В ядро Maple 7 включено около трех десятков бинарных операторов. Основные из них перечислены в табл. 6.1.

Tаблица 6.1. Бинарные операторы

Обозначение

Оператор

+

Сложение

-

Вычитание

*

Умножение

/

Деление

** или ^

Возведение в степень

mod

Остаток от деления

$

Оператор последовательности

.

Разделительная точка

@

Оператор композиции

@@

Повторение композиции

,

Разделитель выражений

:=

Присваивание

. ..

Задание интервала

/

Разделитель выражений

&*

Некоммутативное умножение

&<string>

Нейтральный оператор

||

Конкатенация (объединение)

Примеры использования бинарных операторов:

Оператор композиции @@ может использоваться для создания сложных функций, содержащих цепные дроби:

 

А вот еще один пример применения этого оператора для составления цепного радикала и вычисления ряда таких цепочек в цикле:

 

Операторы объединения, пересечения и исключения для множеств

Для данных типа «множество» определены следующие бинарные операторы:

В любом случае, в результирующем множестве устраняются повторяющиеся элементы. Действие этих операторов поясняют следующие примеры:

Напоминаем, что эти операторы заданы ключевыми словами. Обратите внимание на то, что в Maple 7 результат применения оператора union представлен членами, расположенными в довольно произвольном порядке.

Унарные арифметические операторы

Унарные операторы используются с одним операндом. Они могут быть префиксными, если оператор стоит перед операндом, и постфиксными, если он стоит после операнда. К унарным относятся семь операторов, приведенных в табл. 6.2.

Таблица 6.2. Унарные операторы

Обозначение

Оператор

+

Унарный плюс (префикс)

-

Унарный минус (префикс)

;

Факториал (постфикс)

.

Десятичная точка (префикс или постфикс)

$

Последовательность (префикс)

not

Логическое отрицание (префикс)

&string

 Метка (префикс)

Примеры применения унарных операторов:

 

Оператор % и команда history

Мы уже неоднократно отмечали, что оператор % обеспечивает подстановку в строку ввода (или в выражение) последнего результата операции, Х% предпоследнего и %%% — третьего с конца. Есть еще одна иногда полезная возможность проследить за ходом частных вычислений внутри документа — применение команды-функции history. В Maple V R5 это была библиотечная функция, которая требовала вызова из библиотеки. В Maple 7 такого вызова уже не требуется. Функция history (ехрr) или history() создает список переменных вида от, где индекс f = 1, 2, 3.... Этим переменным можно присваивать значения в диалоговом режиме и отслеживать результаты вычислений. Команда off;, вводимая после использования данной функции, завершает работу с ней. Ниже представлен диалог с применением функции history:

 

К сожалению, полученный результат и значения глобальных переменных 01 после завершения работы с данной функцией становятся недоступными, так что практической пользы от ее применения не так уж много. Разумеется, внутри блока history вы можете присвоить результат другой переменной и он сохранится (попробуйте это сделать сами). При каждом очередном применении функции history нумерация переменных 0i начинается с начала, так что какой-либо преемственности при использовании этой функции нет.

Функция history может применяться в качестве средства начальной отладки вычислений. Внутри фрагмента программы, заданного функцией history, можно задавать построения графиков. Например, при исполнении фрагмента программы:

будет построен график синусоиды. В целом работа с функцией history отличается не слишком высокой стабильностью, так что возможности этой функции пока остаются не слишком востребованными.

Логические операторы

Логические (или булевы) операторы указывают на логическую связь величин (или выражений). Прежде всего они представлены рядом бинарных операторов, приведенных в табл. 6.3.

Таблица б.З. Бинарные логические операторы

Обозначение

Оператор

<

Меньше

Меньше или равно

>

Больше

>=

Большее или равно

-

Равно

О

Не равно

and

Логическое «и»

or

Логическое «или»

Конструкции с этими операторами, такие как х=у, возвращают логическое значение — константу true, если условие выполняется, и false, если оно не выполняется. Кроме того, к логическим операторам относится унарный оператор not — он представляет логическое «нет». Для возврата логических значений выражений с этими операторами используется функция evalb(условие), например:

Логические операторы часто используются в управляющих структурах программ, составленных на языке программирования Maple. Такое их применение мы рассмотрим позже.

Специальные типы операторов

Операторы в Maple описывают операции по преобразованию данных, в частности выражений. Последние, в свою очередь, можно отнести к данным абстрактного типа. Могут быть описаны следующие типы операторов:

  • неопределенные (f)
  •  нейтральные (&);
  •   процедурные; 
  •  функциональные; 
  •  композиционные (@).

Оператор относится к неопределенным, если он не был заранее определен. Такой оператор не выполняет никаких действий и просто повторяется в строке вывода:

> restar:f(1,2,а):

 f(l,2,a)

Композиционные операторы (на базе знака @) мы уже применяли. Другие типы операторов рассмотрены ниже.

Функциональные операторы

Функциональные операторы Maple-языка являются альтернативами функций и записываются в двух формах.

Нотация

Запись оператора

«arrow» (стрелочная)

vars -> result

«angle bracket» (в угловых скобках)

<result | vars>

Данные операторы могут использоваться для реализации подстановок. Например, запись х -> х^2 означает подстановку х*2 на место переменной х. Возможны и такие подстановки в множественной форме:

Функциональный оператор в Maple 7 часто используется для задания функций пользователя, которое будет рассмотрено несколько позднее.

Нейтральные операторы, определяемые пользователем

Для создания нейтральных (задаваемых пользователем и в момент задания неисполняемых) операторов, определяемых пользователем, служит знак амперсанда — &. Синтаксис нейтрального оператора следующий:

&name

Имя оператора строится по правилам задания допустимых идентификаторов. Также в качестве имени может быть использована последовательность (один и более) специальных символов. В последовательности специальных символов не должно быть букв, цифр, подчеркивания, а также следующих символов:

& | ()  {} [] :: '' #  <перевод строки> <пробел>

Максимальная длина имени — 495 символов. Нейтральные операторы могут быть унарными и бинарными. Примеры задания бинарного нейтрального оператора приведены ниже:

 

Определение операторов с помощью оператора define

Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме: 

define(oper, propertyl, property2. ._)

Здесь ореr — имя определяемого оператора, property!, property2 и т. д. — наименования свойств. В принципе, оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему.

Могут быть указаны следующие свойства операторов:

  •  unary — унарный оператор;
  •  binary — бинарный оператор;
  •  diff — дифференциальный оператор;
  •   linear — линейный оператор;
  •  multilinear — множественный линейный оператор;
  •  flat — ассоциативный оператор, для которого f(x/(y,z)) = f(f(x,y),z) = f(x,y,z);
  •  orderless — коммутативный симметричный оператор, такой что f(x,y) = f(y,x),
  •  antisymmetric — асимметричный оператор, такой что f(x,y) = -f(y,xc);
  •  zero — нулевой оператор (например, V:=Vector(5,shape=zero) задает вектор с 5 нулевыми элементами);
  •  identity — единичный оператор (например, M:=Matrix(3,3,shape=identity) задает единичную матрицу).

Следующий пример задает линейный оператор L:

Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описание forall. Так, приведенный ниже пример задает оператор F, который вычисляет n-е число Фибоначчи (n > 2):

Обратите внимание на то, что соотношения fib(0)=l и fib(l)=l задают начальные значения целочисленного массива чисел Фибоначчи, которые нужны для реализации обычного итерационного алгоритма их нахождения, — напоминаем, что очередное число Фибоначчи равно сумме двух предшествующих чисел Фибоначчи.

Последний пример иллюстрирует применение системной функции time для определения времени, затраченного на вычисление значения функции fib(20). Это время задается в секундах. Нетрудно заметить, что даже для ПК с процессором Pentium II 350 МГц это время оказалось довольно значительным (более 3 с), поскольку каждое новое число Фибоначчи вычисляется заново.

Математические функции

Понятие о встроенных функциях

Maple 7 имеет полный набор элементарных математических функций. Все они, кроме арктангенса двух аргументов, имеют один аргумент х, например sin(x). Он может быть целым, рациональным, дробно-рациональным, вещественным или комплексным числом. В ответ на обращение к ним элементарные функции возвращают соответствующее значение. Поэтому они могут быть включены в математические выражения. Все описанные здесь функции называются встроенными, поскольку они реализованы в ядре системы.

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

Нетрудно заметить, что есть и исключения из этого правила — например, на экране монитора ехр(1) будет выведено как константа е, а значение функции arcsin( 2) все же вычислено и результат получен как 1/6 от константы Pi. Вообще говоря, если результат выражается через фундаментальную математическую константу, то он будет вычислен и представлен ею. В противном случае функция с целочисленным и рациональным аргументом или с константой просто повторяется в строке вывода в установленном для этой строки формате.

Для получения подробной информации о некоторой произвольной функции <f> достаточно задать команду:

?<f>

Ввиду общеизвестности элементарных функций мы не будем обсуждать ни их свойства, ни допустимые для них пределы изменения аргумента.

Некоторые целочисленные функции и факториал

Ниже представлены наиболее распространенные целочисленные функции Maple 7, используемые в теории чисел:

  •  factorial (n) — функция вычисления факториала (альтернатива — оператор !);
  • iquo(a.b) — целочисленное деление а на b;
  •  irem(a,b) — остаток от деления а на b;
  •  igcd(a b) — наибольший общий делитель;
  •  lcm(a,b) — наименьшее общее кратное.

Примеры применения:

В последних двух примерах применения оператора факториала полезно обратить внимание, что запись n!! означает лишь (n!)!, а не n!! = 2*4*6*..., то есть произведение четных целых чисел. Действие других функций очевидно.

Тригонометрические функции

В ядре Maple определены следующие тригонометрические функции:

  •  sin — синус;
  •  cos — косинус;
  •  tan — тангенс;
  •  sec — секанс;
  •  csc — косеканс;
  •  cot — котангенс.

Все эти функции являются периодическими (с периодом 2л, кроме тангенса и котангенса, у которых период равен л) и определены для действительного и комплексного аргументов. Примеры вычислений:

Многие свойства тригонометрических функций можно оценить, рассматривая их графики. Для построения таких графиков можно использовать функцию pi ot. На рис. 6.1 сверху показаны графики ряда тригонометрических функций.

Рис. 6.1. Графики ряда тригонометрических и обратных тригонометрических функций

Из графиков тригонометрических функций (рис. 6.1, сверху) хорошо видна их периодичность. Функция тангенса имеет разрывы, и ее значение в этих точках в пределе равно бесконечности. Поэтому для наглядного ее представления вместе с функциями синуса и косинуса (их экстремальные значения по модулю равны 1) приходится вводить ограничения на масштаб графика по оси у.

ПРИМЕЧАНИЕ 

Обратите внимание на параметр color=black в функции построения графиков plot. Он  задает построение всех графиков черным цветом, что сделано для более четкой печати их в книге. Если убрать этот параметр, то графики разных функций будут строиться с использованием разных цветов, что облегчит их различение. Другие способы выделения отдельных кривых будут описаны в дальнейшем при описании графических возможностей системы Maple 7.

Обратные тригонометрические функции

К обратным тригонометрическим относятся следующие функции:

  •  arcsin — арксинус;
  •  arccos — арккосинус;
  •  arctan — арктангенс;
  •  arcsec — арксеканс;
  •  arccsc — арккосеканс;
  •  arccot — арккотангенс.

Примеры вычислений:

К этому классу функций принадлежит еще одна полезная функция: arctan(y.x) = argument(x+I*y)

Она возвращает угол радиус-вектора в интервале от -Pi до Pi при координатах конца радиус-вектора х и у (см. пример ниже):

Графики ряда обратных тригонометрических функций показаны на рис. 6.1.

Гиперболические функции

Гиперболические функции представлены следующим набором:

  •  sinh — гиперболический синус;
  •  cosh — гиперболический косинус;
  •  tanh — гиперболический тангенс;
  •  sech — гиперболический секанс;
  •  csch — гиперболический косеканс;
  •  coth — гиперболический котангенс.

Примеры применения гиперболических функций представлены ниже:

На рис. 6.2 сверху представлены графики гиперболического синуса, косинуса и тангенса. По ним можно судить о поведении этих функций.

Рис. 6.2. Графики основных гиперболических и обратных гиперболических функций

 ПРИМЕЧАНИЕ

 В отличие от тригонометрических гиперболические функции не являются периодическими. Функция гиперболического тангенса имеет симметричную кривую с характерными ограничениями. Поэтому она широко используется для моделирования передаточных характеристик нелинейных систем с ограничением выходного параметра при больших значениях входного параметра.

Обратные гиперболические функции

Как и тригонометрические функции, гиперболические имеют свои обратные функции:

  •  arcsinh — гиперболический арксинус;
  •  arccosh — гиперболический арккосинус; 
  •  arctanh — гиперболический арктангенс;
  •  arcsech — гиперболический арксеканс: 
  •  arccsch — гиперболический арккосеканс: 
  •  arccoth — гиперболический арккотангенс. 

Примеры применения:

Графики обратных гиперболических синуса, косинуса и тангенса представлены на рис. 6.2 снизу.

Степенные и логарифмические функции

К степенным и логарифмическим относятся следующие функции системы Maple 7:

  •  ехр — экспоненциальная функция;
  •  ilog10 — целочисленный логарифм по основанию 10 (возвращает целую часть от логарифма по основанию 10);
  •  ilog — целочисленный логарифм (библиотечная функция, возвращающая
  • целую часть от натурального логарифма);
  •   n — натуральный логарифм;
  •  log — логарифм по заданному основанию (библиотечная функция);
  •  log10 — логарифм по основанию 10;
  •  sqrt — квадратный корень. 

Примеры применения:

Графики ряда алгебраических функций показаны на рис. 6.3. 

Рис. 6.З. Графики ряда алгебраических функций

На рис. 6.3 показаны также графики синусоиды с экспоненциально падающей и нарастающей амплитудой. Читателю рекомендуется попробовать свои силы в построении графиков комбинаций различных функций.

Функции с элементами сравнения

В алгоритме вычисления ряда функций заложено сравнение результата с некоторым опорным значением. К таким функциям относятся:

  •  abs — абсолютное значение числа;
  •  ceil — наименьшее целое, большее или равное аргументу;
  •  floor — наибольшее целое, меньшее или равное аргументу;
  •  frac — дробная часть числа;
  •  trunc — целое, округленное в направлении нуля;
  •  round — округленное значение числа;
  •  signum (х) знак х (-1 при х < 0, 0 при х = 0 и +1 при х > 0).

Для комплексного аргумента х эти функции определяются следующим образом:

  •  tranc(x) = trunc(Re(*)) + I*trunc(IM(x));
  •  round(x) = round(Re(.r)) + I*round(Im(x));
  •  frac(x) - frac(Re(*)) + I*hac(Im(x)).

Для введения определения значения floor(x) от комплексного аргумента прежде всего запишем а = Re(x) - fооr(Re(x)) и b = Im(x) - floor(Im(x)). Тогда flооr(x) = floor(Re(x)) + I*floor(Im(x)) + X, где

Наконец, функция ceil для комплексного аргумента определяется следующим образом:

cell(x) = -fооr(-х) 

Примеры применения:

Функции комплексного аргумента

Для комплексных чисел и данных, помимо упомянутых в предшествующем разделе, определен следующий ряд базовых функций:

  •  argument — аргумент комплексного числа; 1
  •  conjugate — комплексно-сопряженное число;
  •  Im — мнимая часть комплексного числа;
  •  Re — действительная часть комплексного числа;
  •  роlаг — полярное представление комплексного числа (библиотечная функция).

Примеры применения:

 

Специальные математические функции

Специальные математические функции обычно являются решениями линейных дифференциальных уравнений различного типа и выражаются в виде интегралов, не представимых через элементарные функции. Maple 7 имеет практически полный набор таких функций. Их представления можно найти в справочной литературе, а также в справочной базе данных Maple. В связи с этим ограничимся приведением названий наиболее важных специальных функций:

  •  AiryAi (Bi) — функции Эйри;
  • AngerJ — функция Ангера;
  •  bernoulli — числа и полиномы Бернулли;
  •  Bessel I (J, К, Y) — функции Бесселя разного рода;
  •  Beta — бета-функция;
  •  binomial — биноминальные коэффициенты;
  •  Chi — интегральный гиперболический косинус;
  •  Ci — интегральный косинус;
  •  csgn — комплексная сигнум-функция;
  •  dilog — дйлогарифм;
  •  Dirac — дельта-функция Дирака;
  •  Ei — экспоненциальный интеграл;
  •  EllipticCE (CK, CPi, E, F, К, Modulus, Nome, Pi) — эллиптические интегралы;
  •  erf — функция ошибок;
  •  erfc — дополнительная функция ошибок;
  •  euler — числа и полиномы Эйлера;
  •  FresnelC (f, g, S) — интегралы Френеля;
  •  GAMMA — гамма-функция;
  •  GaussAGM — арифметико-геометрическое среднее Гаусса;
  •  HankelHl (H2) — функции Ганкеля;
  •  harmonic — частичная сумма серии гармоник;
  •  Heaviside — функция Хевисайда;
  •  JacobiAM (CN, CD, CS, ON, DC, DS, NC, NO, NS, SC, SO, SN) - эллиптические функции Якоби;
  •  JacobiThetal (2, 3, 4) — дзета-функции Якоби;
  •  JacobiZeta — зет:функция Якоби;
  •  KelvinBer (Bei, Her, Hei, Ker, Kei) — функции Кельвина;
  •  Li — логарифмический интеграл;
  •  1nGAMMA — логарифмическая гамма-функция;
  •  MeijerG — G-функция Мейджера;
  •  pochhammer — символ Похгамера;
  •  polylog — полилогарифмическая функция;
  •  Psi — дигамма-функция;
  •  Shi — интегральный гиперболический синус;
  •  Si — интегральный синус;
  •  Ssi — синусный интеграл смещения;
  •  StruveH (L) — функции Струве;
  •  surd — неглавная корневая функция;
  •  LambertW — W-функция Ламберта;
  •  WeberE — Е-функция Вебера;
  •  WeierstrassP — Р-функция Вейерштрасса;
  •  WeierstrassPPrime — производная Р-функции Вейерштрасса;
  •  WeierstrassZeta — зета-функция Вейерштрасса;
  •  WeierstrassSigma — сигма-функция Вейерштрасса;
  •  Zeta — зета-функция Римана и Гурвица.

Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции.

На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.

Рис. 6.4. Примеры применения специальных функций

Еще несколько примеров работы со специальными функциями представлены на рис.6.5. Как видно из приведенных примеров, на экране монитора можно получить математически ориентированное представление специальных функций, обычно более предпочтительное, чем представление на Maple-языке или в текстовом формате. Записи функций при этом выглядят как в обычной математической литературе.

Рис. 6.5. Примеры работы со специальными математическими функциями

На рис. 6.5 показаны примеры разложения специальных функций в ряды и применения функции convert для их преобразования.

Много информации о поведении специальных функций дает построение их графиков. На рис. 6.6 показано построение семейства графиков функций Бесселя BesselJ разного порядка и гамма-функции. Эти функции относятся к числу наиболее известных. Если читателя интересуют те или иные специальные функции, следует прежде всего построить и изучить их графики.

Подробное описание специальных функций можно найти в справочниках [43-45] и в справочной базе данных Maple 7.

Рис. 6.6. Графики функций Бесселя и гамма-функции

Функции для работы с векторами и матрицами

Элементы векторов и матриц

Элементы векторов и матриц являются индексированными переменными, то есть место каждого элемента вектора определяется его индексом, а у матрицы — двумя индексами. Обычно их обобщенно обозначают как i (номер строки матрицы или порядковый номер элемента вектора) iij (номер столбца матрицы). Допустимы операции вызова нужного элемента и присваивания ему нового значения:

 V[1] — вызов i-го элемента вектора V;

 M[i, j] — вызов элемента матрицы М, расположенного на г-н строке в j-ы столбце;

 V[i]:=x — присваивание нового значения х i-му элементу вектора V;

 M[i,j]:=x — присваивание нового значения х элементу матрицы М.

Преобразование списков в векторы и матрицы

Прежде всего надо обратить внимание на то, что векторы и матрицы хотя и похожи на списки, но не полностью отождествляются с ними. В этом можно убедиться с помощью следующих примеров, в которых функция type используется для контроля типов множественных объектов (векторов и матриц):

Однако, используя функцию преобразования данных convert, можно преобразовывать одномерные списки в векторы, а двумерные — в матрицы. Функция type используется в следующих формах: 

  •  type(V, vector) — тестирует аргумент V и возвращает true, если V — вектор, и false в ином случае;
  •  type(M,matrix) — тестирует аргумент М и возвращает true, если М — матрица, и false в ином случае.

Здесь параметры vector и matrix используются для указания того, какой тип объекта проверяется.

 ПРИМЕЧАНИЕ 

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

Операции с векторами

Важное достоинство систем компьютерной алгебры, к которым относится и Maple 7, заключается в возможности выполнения аналитических (символьных) операций над векторами и матрицами.

Приведем примеры операций над векторами:

В этих примерах используется функция evalm(M), осуществляющая вычисление матрицы или вектора М.

 ПРИМЕЧАНИЕ 

Рекомендуется перед проведением символьных операций с векторами и матрицами очистить память от предшествующих определений с помощью команды restart. Если какие-то элементы векторов или матриц были ранее определены, это может привести к очень сильным искажениям вида конечных результатов. Очистка памяти устраняет возможность ошибок такого рода.

Операции над матрицами с численными элементами

Над матрицами с численными элементами можно выполнять разнообразные операции. Ниже приведены основные из них:

 

ПРИМЕЧАНИЕ

Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.

Символьные операции с матрицами

Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:

Приведем еще ряд примеров выполнения символьных операций с одной матрицей:

Среди других функций для работы с матрицами полезно обратить внимание на функцию mар, которая применяет заданную операцию (например, функции дифференцирования diff и интегрирования int) к каждому элементу матрицы. Примеры такого рода даны ниже:

 

В результате возвращаются матрицы, каждый элемент которых представлен производной или интегралом. Аналогично можно выполнять над матрицами и другие достаточно сложные преобразования.

В дальнейшем мы продолжим изучение матричных функций и операций, включенных в пакеты Maple 7.

Функции для работы со строковыми данными

Контроль типа строковых данных

Напоминаем, что строковые данные представляются совокупностью любых символов в обратных апострофах, например *Привет* или `2+2`. Для контроля объектов на принадлежность к строковым данным служит функция type с параметром string:

Из приведенных примеров видно, что контроль строкового типа осуществляется не очень строго, — в частности, единичные символы рассматриваются как строковые и без заключения их в апострофы. В строках могут быть символы кириллицы, но гарантии в правильности обработки таких символов нет — надо мириться с тем, что Maple — англоязычная программа и ее возможности в поддержке других языков ограниченны.

Интерактивный ввод строк

Для интерактивного ввода строк можно использовать функцию readline(filename), задав в качестве имени файла terminal или опустив имя файла. В этом случае ввод строки осуществляется с клавиатуры компьютера:

> s:=read1ine(}; 

> Привет мой друг! 

s:="Привет мой друг!"

 ПРИМЕЧАНИЕ 

Полезно обратить внимание на то, что запрос в ходе интерактивного ввода может быть сделан на русском языке (если установленный для запросов шрифт имеет символы кириллицы). Нужно также, чтобы и шрифт строки вывода содержал кириллицу, иначе в строке вывода будет типичная «абракадабра» — смесь непонятных символов.

Обработка строк

Имеется ряд функций для работы со строками. Из них наиболее важны следующие:

  •  lenght(str) — возвращает число символов, содержащихся в строке str;
  •  substring(str,a. .b) — возвращает подстроку строки str от а-го символа до b-го;
  •  cat(strl,str2....) — возвращает строку, полученную объединением строк strl, str2,... (альтернатива — оператор конкатенации в виде точки .);
  •  SearchText(s.str) — производит поиск подстроки s в строке str и при его успехе возвращает номер позиции s в строке str (при отсутствии s в str функция возвращает 0).

Примеры применения этих функций (в виде продолжения ранее приведенных примеров) представлены ниже:

Эти функции дают достаточно средств для обработки данных строкового типа, которые можно применять не только для создания текстовых комментариев, но и для управления вычислительным процессом в программах.

Преобразование строки в математическое выражение

Часто возникает необходимость в интерактивном вводе математических выражений. Для ввода с запросом выражения используется функция readstat(promt), где promt — строка с текстовым комментарием. Пример ее применения дан ниже:

Альтернативой может стать ввод строкового выражения с последующим преобразованием его в математическое выражение с помощью функции parse:

Обратите внимание на то, что функция evaln не смогла вычислить строковое выражение `2+3` поскольку оно не является числовым типом данных. Однако функция parse преобразовала это выражение в числовое, что и привело к его вычислению.

Что нового мы узнали?

В этом уроке мы научились:

  •  Использовать операторы и операнды.
  •  Применять различные математические функции.
  •  Использовать операторы и функции для работы с векторами и матрицами.
  •  Использовать функции для работы со строковыми данными.
оглавление   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Знаете ли Вы, что баланс в экономико-математическом моделировании - это уравнение или неравенство, устанавливающее соответствие между источниками ресурса и направлениями его использования. Уравнения используются, если имеющиеся источники ресурса должны быть использованы без остатка либо если наличие остатка влияет на экономический эффект (требует затрат на утилизацию либо может быть с выгодой продан на рынке). В противном случае балансы записываются в форме неравенств, согласно которым совокупное использование ресурса не превышает размера имеющихся его источников.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution