Дьяконов В. Maple 7 - Учебный курс (1185900), страница 37
Текст из файла (страница 37)
Мы вернемся х гораздо более серьезному описанию матричных операций и фунхций е дальнейшем. Символьные операции с матрицами нг: > М2:-аггау(1..2,1..2,[[а2.Ь23.[с2А2Л) г иг:= ~' > еча)в(И1+М2); с а!еа2 ЫРЬ21 с1 -ь с2 г/1 ч. с(2 1 > еча)в(М1-М2): с а! — а2 Ы вЂ” Ь21 с1 — с2 г/1 — г/2~ > ЕЧа)В(И1алн2); с а/ а2 е Ы с2 а/ Ь2 ч- Ы с(21 с! а2 ч. /1 сг с/ Ь2+ /1 /2~ > еча)в(М1/И2): а1 г/2 Ысг а! Ь2 Ь1а2 а2 г(2 — Ь2 с2 а2 г/2 — Ь2 с2 Ы Ь2 с/! а2 а2 аг2 — Ь2 с2 а2 г/2 — Ь2 с2 а2 г[2 — Ь2 с2 а2 г(2 — Ь2 с2 с1 г/2 г/! с2 а2 г/2 - Ь2 с2 а2 г/2 — Ь2 с2 > еча)в(М1$/И2): Ниже представлены примеры символьных операций, осуществляемых над квад- ратными матрицами одного размера: > М1: аггау(1..2,1..2,[[а1.Ь1),[с1А113)г а2 Ь2 С2 т[2 а2 И С2 г[2 т[ м[ с!! 841 Приведем еп(е ряд примеров выполнения символьных операций с одной матрпцей: > еча)и(И1 2); > еча)и(И1/а); а! И с1 Н > еча)и(И1аа) Среди других функций для работы с матрицами полезно обратить внимание на функцию а)ар, которая применяет заданную операцию [наприатер, функции диф- ференцирования ((тл! и интегрирования (пс) к каждому злементу матрицы.
при- меры такого рода даны ниже: > И; аггау(1,.2,1..2, [[х,х"2),[х"З.х"4П); Вар(5(п,и)! с а! е Ы сl а1 И е Ы е(1 ~[ с1а1ФИ1с1 Ис1ФНт ~ > еча)и(атп(М1)); с гйп[а1) атп[ИЦ 5)п[с! ) 5!п[тт(1 )~ > еча)м(М1+х); [ 1 *ЬХ] а!ег Ы > еча)и(И1.г): [Х[г Ю '-[' "1 > иар(чтет,и,х); Зхт 4х' > иар((пт,а.х): Функции для работы с векторами и матрицами 249 250 Урок о. Встроенные операторы н функции с 51П(х) 51П(х )~ 51П(Х ) 51П(Х )~ В результате возвра)цаются матрицы, каждый элемент которых представлен производной или интегралом, Аналогично можно выполнять над матрицами и другие достаточно сложные преобразования.
В дальнейшем мы продолжим изучение матричных функций и операций, включенных в пакеты Мар)е 7, Функции для работы со строковыми данными Контроль типа строковых данных Напоминаем, что строковые данные представляются совокупностью любых символов в обратных апострофах, например 'Привет' или '2+2'. Для контроля объектов на принадлежность к строковым данным служит функция суре с параметром 5сг(пд: > 51Г.-'Не11о!'. 5!г: = Не()о! > 1УРе(Н5110,51Г1пд)1 1а!Хе > 1УРе(51Г,51Г1пЯ) 1 7а(ее > 1УРП(2+3,51Г)пд): 7а)ее > 1УРе('2>3'.51Г1пд): (а)хе > скаг:-5: сЬаг:= а > сааг: 'а; сЬаг:= а Нз приведенных примеров видно, что контроль строкового типа осушествляется не очень строго, — в частности, единичные символы рассматриваются как строковые и без заключения их в апострофы.
В строках могут быть символы кириллицы, но гарантии в правильности обработки таких символов нег — надо мириться с тем, что Мар(е — англоязычная программа и ее возможности в поддержке других языков ограниченны. функции для Работы со строковыми данными 251 Интерактивный ввод строк Для интерактивного ввода строк можно использовать функцию геаб1 Япе(Г!1епаве), задав в качестве имени файла сегв(па1 или опустив имя файла. В этом слунае ввод строки осуществляется с клавиатуры компьютера: > з: гевтп тле(); > ПРИВЕТ Най ДРУГ| в:="Привет мой дРуг!" ~ ПРИМЕЧАНИЕ Полезно обрвтить внимвние нв то, что запрос в ходе интервктн »ното ввода может быть сделан нв русском языке (если установленный для звпросов шрифт имеет символы кириллицы).
Нужно также, чтобы и шрифт строки вывода содержал кириллицу, иначе в стропе вывода будет типичная «вбрвквдвбр⻠— смесь непонятных символов. Обработка строк Имеется ряд функций для рабаты со стра)птми. Из них наиболее важны следующие: О 1епПЬЬ(зьг) — возвращает число символов, содержащихся в строке зсг; О аоЬ51г)пп(згг. а..Ь) — возвращает подстроку строки зсг от а-го символа до Ь-го; О сас(зсг1, зсг2 ..) — возвращает строку, полученную объединением строк зсг1, зсг2, (альтернатива — оператор конкатенации в виде точки .); О 5еагсЬТехс(з, зсг) — производит поиск подстроки з в строке зсг и при его успехе возвращает номер позиции з в строке бсг (при отсутствии 5 в зсг функция возвращает О).
Примеры применения этих функций (в виде продолжения ранее приведенных примеров) представлены ниже: )епогщвег): б > вцовег)ш)(вгг,1..3); Не1 > вцЬвсг1пр(всг,4..6): 1а! > в:-свг('Не11о',' ву',' Гг)ежи ): я:= Не11а тууг(епт(! > 5евгсьтехг(ву.в)т 7 > 55: не110 (! ву гг)епб! ! > т:= Нейа ту )г(епт(! > вец(Ивве()(,! 1..4): 1т(ате!, )т(ате2, )т!ате3, Нате4 Эти функции дают достаточна средств для обработки данных строкового типа, которые можно применять не только для создания текстовых комментариев, но и для управления вычислительным процессом в программах, 252 Урок В, Встроенные операторы и функции Преобразование строки в математическое выражение Часто возникает нсобходимость в интерактивном вводе математических выраженнть Для ввода с запросом выражения используется функция геа((ВСас(рсоа), где рговс — строка с текстовым комментарием.
Пример ее применения дан ниже: > у:-геацвтат('Введите выражение ): Введите выражение а*к 2+Ь; у:=ах ч.Ь Лльтернатт(вой может стать ввод строкового выражения с последующим преобразованием его в математическое выражение с помощью функции рагзе: > в: '2+3*5'; а:= 2еЗ "5 > ежа)п(в): > рагвей): !7 Обратите внимание па то, что функция ежа) и не смогла вычислить строковое выражение '2+3', поскольку оно не является числовым типом данных. Однако функция рагзе преооразовала зто выражение в числовое, что и привело к его вычцсленгоо, Что нового мы узнали? В этом уроке мы научились: О Использовать операторы и операнды.
О Применять различные математические функции. О Использовать операторы и функции для работы с векторамп и матрицами, О Использовать функции для работы со строковыми данными. Типовые средства программирования Функции пользователя Условные операторы Циклы аког, вЫ1е и до Операторы пропуска и прерывания Процедуры и процедуры-функции Средства контроля и отладки процедур Работа с отладчиком программ Операции ввода-вывода Вывод в специальных форматах Дополнительные возможности Мар!е-языка Функции пользователя Упрощенные функции пользователя Хотя ядро Мар!е 7, библиотека и пакеты содержат свыше 3000 функций, всегда может оказаться, что именно нужной пользователю (и порою довольно простой) функции все же нет.
Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя. Начнем описание с обычных функций пользователя, задающих некоторую зависимость от одной нли ряда переменных в явном виде. Основным средством расширения Мар!е-языка являются модули — процедуры. Однако на первый взгляд они довольно сложны. Есть и более простые способы задания функций пользователя. Один из таких способов заключается просто в присваивании введенной функции (в виде выражения) некоторой переменной: Мазе:-Варааание Этот прием фактически означает просто операцкоо присваивания.
Следующие примеры иллюстрируют технику работы с такими функпиями: в: 5ЦГт(х"В+у 2); т:=т!х -ау Зпо 4:а; /25 > еаа)Г(а); 5.000000000 Заданный таким образом объект все же пе является полноценной функцией пользователя, и прежде всего потому что в нем используются только глобальные переменные (х и у) и нет объявленного списка параметров, от которых зависит значение функции. При этом значения переменных функции приходится заведомо задавать отдельно, используя операции присваивания. Подобные конструкции нельзя ввести в библиотеки Мар!е 7. Основной способ задания функции пользователя Более гибкий способ задания полноценных функций пользователя базируется на применении функционального оператора.
При этом используется следующая конструкция: паве;-(х.у, )->ехрг Функции пользователя 255 После этого вызов функции осуществляется в виде паве(х,у. ), где (х,у„..)— список формальных параметров функции пользователя с именем паве. Переменные, указанные в списке формальных параметров, являются локальными, При подстановке на их место фактический параметров они сохраняют их значения только в теле функции (ехрг). За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо сохраняют ранее присвоенные им значения.
Следующие примеры иллюстрируют сказанное: > геатагьч ° х:-е;у:-о; х:=0 у:=0 > в: (х,у).>загс~\ 2+к2): т:=(х,у) — ат(х +у > в(3,4); 5 > в(3.,4); 5.000000000 (х,у); (О, О) Нетрудно заметить, что при вычислении функции в(х,у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя.
Еще один способ задания функции пользователя базируется на применении функции цпарр1 у паве:=опарр1у(ехрг.чаг1.чаг2. ..) Ниже даны примеры такого задания функции пользователя: > гезтагтп > Гв:-опарр1у(ацг].(х2+Х 2),х,у); ~т:=(х,у) а>]х'ч-у' » Гв(4.,3.): 5.000000000 > те:-ипарр1у(х"2>у"2.х,у).' уе:=(х,у) ах'+у' > те(а1п(х),соа(х]); 5)п(х) 4 соз(х) > а1вр11ту(те(а1п(х],соа(х) ) ): 1 Последний пример показывает возможность проведения символьных операций с функцией пользователя. 25б Урок 7, Типовые средства программирования Графическая визуализация результатов выполнения функций пользователя В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя, Порой она может давать неожиданный результат.