ISBN: 5-85954-081-7

Text
                    Почти 3000 функций Символьные вычисления Сотни типов графинов
Численные расчеты Визуализация вычислений Тысячи примеров

МАТЕМАТИЧЕСКАЯ СИСТЕМА
MAPLE V R3/R4/R5
в. п. дьяконов

МАТЕМАТИЧЕСКАЯ СИСТЕМА MAPLE V R3 / R4 / R5 "СОЛОН" Москва 1998 год
Математическая система Maple V R3/R4/R5 Описана мощная математическая система компьютерной алгебры Maple V Power Edition, в диалоговом режиме решающая огромное число математических задач — от простых расче- тов и численного моделирования до аналитических преобразований и вычислений. Основное внимание уделено серийной и свободно распространяемой no Internet реализа- ции R4 Впервые описана новейшая реализация системы Maple V R5. Рассматриваются удобный интерфейс системы, ее огромные вычислительные возможности, мощные графи- ческие средства системы, программирование и пакеты расширений. Впервые описаны работа с Maple V R5 в сети Internet над совместными проектами и Internet-страница фирмы Waterloo Maple — разработчика системы. Для научных работников, преподавателей университетов и вузов, студентов и всех пользо- вателей, интересующихся автоматизацией математических вычислений. Ответственный за выпуск С. Иванов Макет и верстка С. Тарасов Обложка А. Микляев ISBN 5-85954-081-7 © "СОЛОН" 1998 © Дьяконов В. П.
Предисловие Автор данной книги, как и многие почитатели компьютерных вычислений, прошел долгий путь их реализации — от применения программируемых микрокалькуля- торов до работы на малых и персональных ЭВМ, использующих универсальные языки программирования высокого уровня. Это нашло отражение в его ранних книгах [1 -5]. Казалось бы, совсем недавно пользователь ЭВМ, решая даже простые численные задачи, был вынужден осваивать основы программирования и готовить полуку- старные программы, вряд ли нужные кому-либо, кроме их создателя. Между тем компьютеры интенсивно развивались. Сейчас мощь персонального компьютера (ПК) с микропроцессорами класса Pentium MMX и Pentium II намного превосхо- дит мощь первых ЭВМ, занимавших целые комнаты и залы [6,7]. А скорость вычислений нынешних ПК в сотни раз превосходит скорость вычислений леген- дарных IBM PC XT и АТ и вплотную приближается к скорости вычисления супер-ЭВМ недавнего прошлого. В связи с этим стал меняться взгляд на назначение ПК. На первое место вышло их применение для работы с текстовыми процессорами (например, Microsoft Word 95/97 (81) и прикладными программными системами для автоматизации офисной деятельности. Увы, при этом многие пользователи как-то незаметно стали забы- вать. что ЭВМ изначально создавались для вычислений, а вовсе не для замены ими злосчастной пишущей машинки. Развитие мультимедиа [9] привело к бурно- му применению ПК в роли игровых автоматов. Происходило как бы «оглупление* самых умных в истории человечества машин, да и самих их пользователей. Однако меняются времена и вечные ценности, к коим принадлежат разум и образование, вновь возвращаются. В последние годы во всем мире существенно возрос интерес к серьезному применению ПК Намучившись с непрофессиональ- ной работой двумя пальцами с клавиатурой ПК и вволю насладившись расшаты- вающими нервную систему играми, многие пользователи стали осознавать, что в их распоряжении находится вовсе не модернизированная пишущая машинка или игровая приставка, а самый современный компьютер, способный автоматизиро- вать сложнейшие расчеты, помочь им освоить трудные понятия математики, научить их иностранным языкам и, наконец, стать источником серьезных знаний и даже заработков. Этому в большой степени способствовала разработка специальных компьютерных математических систем, резко снизивших потребность в программировании ПК при решении математических задач. Первое поколение таких систем [10—161 было ориентировано на операционную систему MS-DOS и появилось, казалось бы, совсем недавно — в начале 90-х годов. Так или иначе, но компьютерный мир вновь заговорил о некотором интеллекте компьютеров, понимая под этим способность компьютеров выдавать не тривиаль- ные решения и обучаться решению новых задач. Интерес к компьютерам заметно возрос в ходе шахматной баталии между суперкомпьютером фирмы IBM и чемпионом мира по шахматам Гарри Каспаровым. Как известно, в конце концов
она завершилась триумфом машины — или, точнее говоря, коллективного разума тех, кто ее создал и обеспечил соответствующими программами, В наше время показателем интеллектуальной мощи компьютеров, в том числе и персональных, стали уже не программы для игры в шахматы, а новейшие программные системы символьной математики или компьютерной алгебры [17 - 41]. Созданные для проведения символьных преобразований над математически- ми выражениями эти системы буквально в последние годы были доведены до уровня, позволяющего резко облегчить, а подчас и заменить труд самой почитае- мой научной элиты мира — математиков-теоретиков и аналитиков. Уже появи- лись открытия, сделанные с помощью таких систем. Вряд ли есть хоть один действительно серьезный научный проект, где они не применялись бы в деле. Системы символьной математики долгое время были ориентированы на большие компьютеры. С появлением ПК класса IBM PC и Macintosh и с ростом их возможностей эти системы были переработаны под них и доведены до уровня массовых серийных программных систем. Сейчас системы символьной математи- ки (или компьютерной алгебры) выпускаются самого разного «калибра» — от поразительно компактной, быстрой и удобной для простых символьных вычисле- ний системы Derive [24 - 2б|, до компьютерных монстров Mathematica 2/3 [28 - 32] и MapleV R4/R5 [33 - 36], имеющих тысячи встроенных и библиотеч- ных функций и изумительные возможности графической визуализации вычисле- ний. К среднему уровню таких систем относятся интенсивно развиваемые системы класса MathCAD [17 — 23], работающие в среде Windows и имеющие (в дополнение к прекрасным средствам числовых вычислений) приобретенное по лицензии у фирмы Waterloo Maple 1пс.(создателя системы Maple V) ядро символь- ных вычислений. В данной книге впервые дается достаточно полное описание одной из самых мощных и интеллектуальных систем компьютерной алгебры — Maple V под Windows (реализации R3, R4 и R5), Эта система была создана группой символь- ных вычислений (The Symbolic Group), организованной Кейтом Геддом (Keith Geddes) и Гастоном Гонэ (Gaston Gonnet) в 1980 году в университете Waterloo, Канада [39 - 41]. Вначале она была реализована на больших компьютерах и прошла долгий путь апробации, вобрав в свое ядро и в библиотеки расширений большую часть математических функций и правил их преобразований, выработан- ных математикой за столетия ее развития. Система Maple V была реализована на ПК фирмой Waterloo Maple Inc, (Канада), специально созданной для разработки и сбыта систем класса Maple. Реализация системы Maple V R4 требует применения серьезных ПК с процессорами класса 486/Pentium/Pentium MMX/Pentium Pro/Pentium II и с математическим со- процессором (и, разумеется, совместимых с ними другими процессорами). Есть ее реализации на платформах ПК Macintosh, Unix, Sun и др Вряд ли эта мощная математическая система, разделяющая претензии на мировое лидерство с системами Mathematica 2 и 3 фирмы Wolfram, нужна секретарше или даже директору небольшой коммерческой фирмы. Но, несомненно, любая серьез- ная научная лаборатория или кафедра вуза должны располагать подобной систе- мой, если они всерьез заинтересованы в автоматизации выполнения математических расчетов любой степени сложности. Несмотря на свою направ- ленность на серьезные математические расчеты, системы класса Maple V необхо- димы довольно широкой категории пользователей — студентам и преподавателям
вузов, инженерам, аспирантам, научным работникам и даже учащимся математи- ческих классов общеобразовательных и специальных школ. Maple открывает им широкие возможности для применения. Эта книга не является исчерпывающим справочником по системе Maple V. Такой справочник едва ли и нужен — из почти 2500 (а в реализации R5 — 2700) встроенных в систему и библиотечных команд и функций подавляющее большин- ство пользователей применяет не более нескольких десятков. Кроме того, система снабжена прекрасной справочной базой данных, позволяющей получить подроб- ную справку по любому оператору или функции с рядом примеров применения. Для серьезного специалиста в математике (да и в прикладных науках) не представит особого труда разобраться с нужными ему, но редко применяемыми специальными функциями системы, даже при их описании на английском языке. Интересующие пользователя примеры (а их многие тысячи!) можно легко пере- нести в документы для исполнения, разборки и модификации под свои цели и задачи. Практика (да и личный опыт автора) показывают, что самым трудным является первый этап освоения системы. Первое включение многих пользователей просто подавляет — убедившись в невероятном множестве возможностей системы и не имея ее систематизированного описания (а оно поставляется в виде двух книг приличного размера 138, 39]), многие наши пользователи помещают систему в архив, где она «пылится» без дела. Между тем после краткого знакомства с системой ее вполне можно использовать в повседневной практике. Здесь действует та же идеология, что и при работе с серьезным математическим справочником — как правило, мы приобретаем его вовсе не для того, чтобы целиком выучить наизусть, а лишь для того, чтобы из всего богатства имеющихся в нем данных и примеров выудить нужные нам в настоящий момент сведения. Поэтому цель этой книги не в том, чтобы описать как можно больше операторов и функций системы, а в том, чтобы привить пользователю «справочную» идеологию работы с системой, позволяющую посте- пенно осваивать ее по мере решения своих фундаментальных или прикладных задач. В отличии от первых книг по системе Maple V R3 [34 - 36 ], имеющих по существу характер краткого введения в эту систему, в данной книге подробно описан пользовательский интерфейс, причем самой популярной версии системы — Maple V R4. Значительно расширено описание системы и число примеров ее применения. Совсем недавно (конец 1997 года) вышла реализация R5 системы Maple V, Однако до нас она еще не дошла и вряд ли будет использоваться в ближайшие год — два. Это связано с тем, что эта реализация пока распространяется только коммерческим путем, причем ее стоимость явно не по карману нашим пользова- телям, В то же время они должны оценить поистине царский подарок фирмы Waterloo Maple — открытое и бесплатное распространение серийной версии Maple V R4 через Internet, Благодаря чему эта версия легально (!) попала на многие CD-ROM, свободно распространяемые у нас. Нетрудно догадаться, почему фирма Waterloo Maple пошла на столь решительный и, казалось бы, рискованный для ее прибылей шаг. Очевидно, что распростране- ние современной, не потерявшей коммерческой ценности, и серийной системы
Maple V R4 привлечет в ряды ее сторонников миллионы потенциальных пользо- вателей. И это уже случилось — система пользуется огромной популярностью в университетах и вузах, а также в широких кругах научных работников, как во всем мире, так и в России. В действительности такой подход лишь увеличивает объемы закупки системы. Дело в том, что эта открыто распространяемая система поставляется без доку- ментации, которая весьма объемна. Так что всерьез заинтересовавшиеся системой пользователи на Западе, убедившись в уникальных возможностях системы, охотно покупают ее в полном комплекте, т. е. с документацией и правами на обслуживание известной фирмой. Ну, а что до наших пользователей, то автор искренне надеется, что эта книга во многом заменит им такую документацию и позволит открыто и честно использовать Maple V в свой повседневной работе или учебе. За исключением несколько упрощенного интерфейса и расширенных возможно- стей работы в Internet (они будут рассмотрены) версия Maple V R4 по своим математическим и интерфейсным возможностям практически не отличается от версии R5. Поэтому в качестве основы для иллюстраций данной книги взята версия Maple V R4. В то же время подавляющее большинство материалов книги одинаково пригодно для всех реализаций Maple V под Windows, включая Maple V R5 и не зависит от компьютерной платформы, на которой система установлена. Особенно велико значение Maple V в образовании. Высочайший «интеллект* этой системы символьной математики объединяется в ней с прекрасными средствами математического численного моделирования и просто потрясающими возможно- стями графической визуализации решений. Применение таких систем, как Maple V, в образовании способствует повышению фундаментальности математического образования, сближает нашу образовательную систему с западной и способствует завязыванию плодотворных научных контактов на международном уровне. Состав книги Книга содержит 14 глав. Она составлена так, что постепенно знакомит читателя с возможностями системы. Уже знакомство с главой 1 позволяет начать вполне осмысленную и плодотворную работу с системой. Последующие главы расширяют это знакомство и постепенно готовят читателя к серьезной самостоятельной работе с системой практически без применения какой-либо иной документации, кроме встроенной в систему, и, разумеется, данной книги. Главы 2 — 8 посвящены описанию пользовательского интерфейса системы, о котором в опубликованных книгах по Maple V [33 ~ 38] говорится лишь вскользь. И зря, поскольку только хорошее знакомство с особенностями интерфейса позволяет'готовить документы на вполне профессиональном, а не дилетантском уровне. Рубрикация этих глав повторяет структуру главного меню системы Maple V R4, что облегчает поиск сведений по любой операции главного меню. Для современ- ных математических систем, ориентированных на операционные системы класса Windows (и особенно Windows 95/98), умение пользоваться возможностями пользовательского интерфейса столь же важно, как и математическими возмож- ностями системы. Поэтому предлагаемое впервые подробное описание интерфей- са облегчит работу с системой для всех категорий ее пользователей.
Центральная глава 9 содержит систематизированное описание основных понятий Maple-языка, прежде всего как входного языка общения с системой и как языка программирования системы, В главе 10 описаны основные возможности системы в решении наиболее массовых задач математического анализа. Ввиду обилия и особой важности символьных операций и аналитических вычислений они описаны в отдельной главе 11. Глава 12 содержит самое полное описание пакетов расширения системы. Но даже при этом она не претендует на исчерпывающее описание всех почти двух тысяч функций этих пакетов. Тем не менее наиболее распространенные и важные функции описаны достаточно подробно с многочисленными практическими примерами работы с ними. Большая часть этих примеров оригинальна и не повторяет, а дополняет примеры, приведенные во встроенной справочной базе данных системы. В главе 13 описаны обширные и нередко уникальные возможности графики системы Maple V R4, позволяющей визуализировать результаты математических расчетов любой сложности. Особое внимание при этом уделяется технике визуа- лизации сложных вычислений — от графической интерпретации решений систем линейных уравнений и неравенств до решения систем дифференциальных урав- нений с частными производными. Глава 14 содержит описание особенностей новейшей версии системы — Maple V R5, появившейся в конце 1997 года. В этой главе впервые отмечаются и иллюстрируются основные отличия новой реализации R5 от текущей R4. Система Maple V R5 вполне заслуживает описания в отдельной книге, но и данная книга дает вполне достаточный уровень знакомства с этой версией системы Maple V. Кстати, даже поставляемая с Maple V R5 документация в виде книг [38,391 также не содержит полное описание всех функций, Его можно найти только в справоч- ной базе данных системы, которая намного превосходит по объему данную книгу. В этой главе также впервые дается описание страницы (сайта) фирмы Maple Software (разработчика системы Maple V), размещенной в сети Internet. Заключение книги описывает тенденции развития математических систем. Нако- нец, в Приложение 1 вынесен алфавитный список всех функций, встроенных в ядро системы Maple V R4 и имеющихся в основной библиотеке этой системы. При этом кратко описано назначение этих функций. Материал книги иллюстрируется более чем двумястами копиями экрана, дающи- ми наглядное представление о диалоге с системой и о форматах ввода и вывода. Б то же время многочисленные примеры в тексте книги даны в текстовом формате, общепринятом для систем символьной математики (таких, как Derive, Mathematica и Maple). Это делает соответствующий материал общим для любых реализаций системы Maple V — даже под MS-DOS. Несмотря на некоторую необычность вывода отдельных математических знаков, например, сумм, произ- ведений, интегралов и др., их интерпретация вряд ли вызовет у пользователя трудности. Кстати, возможен прямой перенос таких примеров из редактора Word 95/97 в редактор Maple V через буфер промежуточного хранения Windows — Clipboard. Предупреждения Эта книга является научной монографией, поскольку содержит результаты мно- голетних исследований автором одной из самых мощных математических систем
компьютерном алгебры — Maple V, начиная с ее первой реализации и кончая новейшей Maple V R5 Подобные программные системы, по мнению автора являются куда более интересными и поучительными объектами для исследования и изучения, чем обычные языки программирования (по которым, кстати, защище- ны сотни диссертации во всем мире) Большинство примеров в книге оригинальны и отражают взгляд автора на методологию изучения системы Maple V Однако пусть монографический и научный характер книги не пугает читателей Книга, по мере возможности и пристрастий автора, написана достаточно ясным языком и вполне может претендовать одновременно на роль справочного и учебного пособия и руководства пользователя по системе Maple V, вне зависимо- сти от того, на какой компьютерной платформе эта система реализована и кто является ее пользователем Хотя основное внимание уделялось, естественно, тем реализациям, которые работают в среде наиболее массовой операционной систе- мы Windows 95/OSR 2 Тем не менее автор приносит извинения тем пользовате- лям, которые не найдут в книге детального описания интерфейса Maple V для тех платформ, которые не базируются на Windows Книга ориентирована на определенный и достаточно широкий круг читателей Это прежде всего научные работники, преподаватели и учащиеся университетов и вузов, аспиранты, инженеры и все пользователи персональных компьютеров, применяющие или осваивающие математические методы решения задач в любой области науки, техники и образования Для них важно не столько описание (даже краткое) всех почти трех тысяч функции и команд системы, сколько умелое владение некоторым базовым (и тоже довольно большим) набором функций и справочной системой С их помощью можно познакомиться с отдельными «экзо- тическими» функциями, которые конечному пользователю могут вообще и не понадобиться Разумеется, подбор описанных в книге функций и примеров всецело лежит на совести автора, который использовал свой опыт подготовки полутора десятков книг по математическим расчетам на калькуляторах и персональных компьюте- рах Автор надеется, что этот набор функций и примеров удовлетворит большин- ство читателей Во всяком случае, он намного обширнее, чем имеющийся в уже вышедших в России книгах по Maple V (33 - 35] Автор заранее приносит извинения и тем, кто остался неудовлетворенным полнотой описании функций и команд системы Таким читателям можно рекомен- довать только одно весьма действенное и дорогое средство — купить полную систему и научиться в совершенстве пользоваться встроенной в систему англоя- зычной документацией, во много раз превосходящей объем данной книги В этой книге намеренно подобраны достаточно простые примеры для иллюстра- ции возможностей системы Maple V Если среди читателей найдутся те, кого волнуют большие математические формулы, то им можно посоветовать наити корни простою многочлена третьей или четвертой степени в аналитическом виде Надо полагать, что этот простой пример сразу даст понять таким «максимали- стам», что Maple V способен порождать при решении самые сложные и очень длинные формулы Трудность в написании книги была не в том, чтобы напичкать ее громоздкими формулами (что можно было сделать в два счета), а именно в подборе простых и наглядных примеров
Символьная математика для большинства наших читателей, увы, пока является диковинкой. Наша терминология в ней еще не вполне установилась, а с трудно- стью перевода некоторых математических понятий автору приходилось сталки- ваться на протяжении всего времени работы над данной книгой. А она начала готовиться с 1990 года — когда пакет Maple V версия L0 под MS-DOS был подарен автору заочным университетом в г. Хагене (Германия). И лишь спустя семь лет автор посчитал себя готовым к достаточно полному описанию такого монстра компьютерной символьной математики, как Maple V. Именно этот опыт позволил быстро подготовить книгу с описанием нового поколения системы Maple V под Windows. О выделениях и формах представления примеров В этой книге используются типовые выделения — полужирным шрифтом выде- лены команды и опции главного меню, наклонным шрифтом (курсивом) выделены обычные математические формулы. Однако формулы и выражения, представлен- ные на Maple-языке, записаны прямым шрифтом без выделений, В главах I—8 большинство иллюстраций дано в виде копий экрана и хорошо иллюстрирует реальный диалог пользователя с системой и удобство графического интерфейса приложений операционной системы Windows (в книге все примеры даны при работе с Windows 95). Однако в главах 9—13, ради повышения компактности записи примеров и их независимости от компьютерных платформ, примеры записаны в текстовом формате Maple-языка. В связи с этим стандартные математические знаки (суммы, произведения, интегрирования) представлены их имитацией, состоящей из тек- стовых символов. К этой «необычной» форме записи легко привыкнуть, поскольку она принята во многих системах компьютерной алгебры (Derive, Mathematica и др.) и используется в справочной системе Maple V. Благодарности и адреса Эта книга, как и ряд последних книг автора, подготовлена в инициативном порядке в рамках работ кафедры физической и информационной электроники Смоленского государственного педагогического университета. В нее вошли мате- риалвг работ по гранту Минобразования РФ, полученному автором для выполне- ния работ по применению компьютерных математических систем в решении задач естествознания. Автор выражает особую благодарность сотрудникам вычислительного центра заочного университета города Хагена (Германия), обратившим внимание автора на систему Maple V еще в самом начале ее появления на персональных компью- терах и предоставившим ее первую реализацию. Разумеется, эта книга не могла бы появиться без «курочки», снесшей такое «золотое яичко», как Maple V. Поэтому высшей благодарности заслуживает фирма Waterloo Maple Inc. — создатель этого уникального, мощного и прекрас- но реализованного программного продукта. По первому же запросу автора фирма Waterloo Maple поставила новейшую реализацию системы Maple V R5 с огромной дополнительной библиотекой SHARE, что и позволило впервые подробно описать особенности новой версии системы в главе 14. Автор выражает благодарность и представителю фирмы Waterloo Maple в России — корпорации SoftLine в лице ее директора И. П. Боровикова, через которого был
получен этот программный продукт (серийные номера CD-ROM MW1N5500G0CD0000 и W1N-55CD-401716 7). Наконец, автор не может не высказать слова признательности в адрес генераль- ного директора фирмы «Телепорт» (г. Смоленск) Рухамина Г. И. за оперативное подключение автора к глобальной сети Internet, что позволило включить в книгу самые свежие материалы по системе Maple V R5 и разместить сайт автора на сервере этого провайдера (www.keytown.com) — рис. В1. Е <**Р web MicioioH Internet (.яркие? ЯПЕЗ Файн Праваа Виц flepej'U ЦМимжае Страна Дьяконов Владимир Павлович Академик Международной Академии Наук Педагогическою Образования, доктор гехническнх наук, профессор, зав кафедрой физической н информационной электроники Смоленского Государствениого педагогического университета, технический писатель в области электроники и инф орматики. Канги [опубликовзкяыо и в печа-п) На7чно-мет<'Дкч»-кве труды Статьи в журиале ’Домашний компьютер" Авторские свмдетелгства на изобретения Email dy aki «ikeytowti. c urn Mi п тек I | Д *4 состояния HP || jjdvp web Micimo GE не Рис Bl Домашняя Internet страница автора Автор заинтересован в откликах и пожеланиях по данной серии книг. Их можно отправлять как в адрес издательства, так и по месту работы автора — 21400, Смоленск, ул. Пржевальского 14, СГПУ, Дьяконову В П Вы можете также направлять свои отзывы по электронной почте автора (E-mail: dyak@key- town.com) или центра информационных технологий «Смоленский Телепорт» (E-mail: center@keytown.com). К фирме Waterloo Maple Inc. можно обращаться по адресу; 450 Phillip Street, Waterloo. Ontario. Canada N2L 5J2. (519) 747-23-73, FAX # (519) 747-52-84, info@maplesoft.on.ca. Internet-страница фирмы: http://www.maplesoft.com. С фирмой SoftLine — представителем интересов Waterloo Maple в России можно связаться по телефону (095) 232-00-23. по факсу (095) 126-90-65 или по элект- ронной почте (E-mail: info@softline.ru ). С этой фирмой можно ознакомиться и по ее Internet-странице www.softline.ru
Об авторе книги Академик международной Академии наук педагогического образования, доктор технических наук, профессор Дьяконов Владимир Павлович родился в 1940 году. Он известный специалист в области электроники и информатики, технический писатель, автор свыше двух десятков книг, изданных в крупных центральных издательствах, более 400 научных и учебно-методических статей и 61 изобрете- ния, В, П. Дьяконов был основателем и директором Смоленского областного центра новых информационных технологий в обучении, в котором готовился ряд его ранее опубликованных книг. С 1970 по 1997 год заведовал кафедрой промыш- ленной электроники в Смоленском филиале Московского энергетического инсти- тута — Технического университета. В настоящее время В. П. Дьяконов заведует кафедрой физической и информационной электроники Смоленского Государст- венного педагогического университета, является научным руководителем центра информационных технологий «Телепорт» (г. Смоленск), Владимир Павлович своими обзорами и книгами одним из первых всерьез привлек наше внимание к новому направлению компьютерной математики — математиче- ским системам для численных и аналитических вычислений на малых вычисли- тельных машинах. Он впервые в бывшем СССР опубликовал массовые справочники по расчетам на микрокалькуляторах и персональных ЭВМ, а затем и по математическим системам Eureka, MatLAB, MathCAD и Derive. Тираж только этих книг достиг 1,5 миллиона экземпляров! Будучи специалистом широкого профиля, он опубликовал монографии по элект- ронным схемам на лавинных и мощных полевых транзисторах и первую в России популярную и обширную энциклопедию по мультимедиа (издательство ABF, Москва, 1996 г.). Пользуется популярностью и последние из его книг широкого профиля «Компьютер в быту» и «Бытовая аудиотехника», изданные крупным издательством «Русич» (Смоленск) в рамках многотомной серии «Азбука быта». Совместно со своими коллегами из Смоленского государственного педагогическо- го университета Владимир Павлович написал изданную в Великобритании на английском языке крупную монографию по основам программирования на языке QBasic — The Revilutionary Guide to QBasic (Wrox Press Ltd., UK, 1996). Он автор также ряда книг по языкам программирования Бейсик, Лого, Форт и Паскаль и их применению для математических расчетов. Всем известно множество его обзорных и популярных статей в популярных компьютерных журналах «Мир ПК», «Монитор-Аспект», «РС-WEEK» и «Домашний компьютер». Предлагаемая книга — плод многолетних серьезных исследований одной из самых мощных систем компьютерной алгебры — Maple V. Хотя книга является обширной научной монографией по этой уникальной по своим возможностям системе, она написана живым и ясным языком и вполне может претендовать на роль справочника по системам класса Maple V, служить руководством пользова- теля по ним и даже учебником. Книга несомненно внесет заметный вклад в применение систем символьной математики в нашем образовании, науке и технике.
Глава 1. Установка системы и начало работы с ней 1.1. Краткая характеристика системы 1.1.1. Maple V — лидер среди систем символьной математики Известно, что на защитах диссертаций нередко встречаются две крайности Ученые мужи часто обвиняют соискателей в отсутствии серьезных расчетов на компьютерах. А если они и приводятся, то выдвигается встречное обвинение — отсутствие серьезной аналитической обработки математических данных. При этом имеются в виду вполне справедливые доводы — численные расчеты всегда носят частный характер, а отсутствие простых аналитических методов расчета препятствует разработке научно обоснованных инженерных методик проектиро- вания различных изделий и позволяет усомниться в достоверности расчетов. Между тем вряд ли правильно требовать глубоких математических знаний от специалистов в области прикладных наук, равно как и требовать таких знаний в этих науках от математиков-теоретиков и аналитиков. Афоризм, приписываемый Кузьме Пруткову, о том, что «нельзя объять необъятное* тут более чем уместен. Вот почему и те и другие остро нуждаются в высококлассных системах компью- терной алгебры, вобравших в себя достижения многих математических школ за сотни лет их развития и способных решать математические задачи в аналитиче- ском виде. Специалисты в прикладных науках могут легко переложить на них свои заботы по доведению аналитических преобразований до нужного им уровня и избавиться от частого привлечения к своим проектам плохо понимающих их сущность математиков-теоретиков. Последние в свою очередь избавляются от рутинной и малоинтересной работы в области прикладных расчетов и могут сосредоточиться на решении в общем виде действительно фундаментальных математических проблем — в том числе и направленных на дальнейшее совершенствование систем компьютерной алгебры и разработку методик применения таких систем для решения серьезных математических задач. Maple V — система компьютерной алгебры, рассчитанная на серьезного пользо- вателя. Казалось бы, нелепо называть ее математической системой «для всех». Однако по мере распространения этой системы (и даже знакомства с ней) она становятся полезной для многих пользователей ПК, вынужденных в силу обсто- ятельств (работа, учеба, хобби) заниматься математическими вычислениями Для большинства из них (в том числе и для профессионалов-математиков) возможно- сти систем символьной математики, реализованных на массовых ПК класса IBM PC АТ, являются полной неожиданностью и вызывают вполне оправданное удивление и восхищение, а порою и резкое отрицание. Впрочем, последнее характерно для тех, кто с системой Maple V просто не работал! Maple V изумительно продуманная система. Она с равным успехом может использоваться как ддя простых, так и самых сложных вычислений. Заслуженной
популярностью система пользуется в университетах — свыше 300 самых крупных университетов мира (включая и наш МГУ) взяли эту систему на вооружение А число только зарегистрированных пользователей системы превысило I млн Любопытно отметить, что у популярной математической системы MathCAD число зарегистрированных пользователей около 600 тыс , т е меньше, чем у Maple V' Система Maple V особенно популярна в университетах — свыше 300 ведущих университетов мира (включая наш МГУ) применяют эту систему в учебе и в научных исследованиях Добавьте к этому куда большее число незарегистрированных пользователей — ведь система Maple V R4 вполне легально выставлена для копирования на Internet-узле фирмы Waterloo Maple (см главу 14) и записана на многих CD-ROM Если учесть все это, то оказывается, что популярность системы Maple V ничуть не ниже, а то и выше популярности гораздо более простых систем (а по сравнению с Maple даже ущербных) — таких, как Derive и MathCAD Вот и решайте, какая из систем действительно рассчитана на всех1 Maple V — типичная интегрированная система Это означает, что она объединяет в себе ориентированный на сложные математические расчеты мощный язык программирования (и он же входной язык для интерактивного общения с систе мои), редактор для подготовки и редактирования документов и программ, матема- тически ориентированный входной язык общения и язык программирования, современный многооконный пользовательский интерфейс с возможностью работы в диалоговом режиме, справочную систему, ядро алгоритмов и правил преобразо- вания математических выражении, программные численный и символьный про- цессоры с системой диагностики, мощнейшие библиотеки встроенных и дополнительных функций, пакеты расширении и применении системы и огромную и очень удобную в применении справочную систему Ко всем этим средствам имеется полный доступ прямо из системы Maple V — одна из самых мощных и «разумных» интегрированных систем символьной математики, созданная фирмой Waterloo Maple Inc (Канада) Эта система на сегодня является лучшей математической системой компьютерной алгебры для персональных компьютеров, имеющей большое число встроенных функций, обширные библиотеки расширения и богатейшие графические возмож- ности, с блеском решающие задачи наглядной визуализации сложнейших мате- матических расчетов Во многих обзорах систем компьютерной алгебры Maple V справедливо считается одним из первых кандидатов на роль лидера среди таких систем, ориентирован- ных на серьезное применение Это лидерство она защищает в честной конкурен- тной борьбе с другой замечательной математической системой — Mathematica 2 (а сейчас и Mathematica 3) Каждая из этих систем имеет свои особенности, но в целом эти две лидирующие системы поистине <два сапога пара» Система Maple V прошла долгий путь развития и апробации Она реализована на больших ЭВМ, рабочих станциях Sun, ПК, работающих с операционной системой Unix, ПК класса IBM PC, Macintosh и др Все это самым положительным образом повлияло на ее отработанность и надежность (в смысле высокой вероятности правильности решений и отсутствия сбоев в работе) По этому показателю Maple V заметно превзошла своего ближайшего и очень серьезного конкурен та — систему Mathematica 2 и 3, несколько превосходящую Maple V по специ- альным видам графики
Для пользователей (особенно наших) немаловажно то обстоятельство, что Mat- hematica 2 имеет систему защиты от несанкционированного использования и копирования, тогда как поставляемая на ряде CD-ROM и по сети Internet Maple V R4 — полностью открытая для применения система. От поставляемых на рынок серийных и платных систем она отличается лишь отсутствием документации, которую во многом заменяет данная книга. Кроме того, если не считать начальных усилий по освоению системы, Maple V вполне можно использовать без отдельной документации, тогда как с применени- ем систем Mathematica 2 и 3 этот номер не проходит. Впрочем, объективности ради надо отметить, что в новейшей версии Mathematica 3 под Windows многие из недостатков устранены, пользовательский интерфейс заметно улучшен, а графические возможности, пожалуй, даже превосходят таковые для системы Maple V. Однако из-за проблем защиты от копирования и разбухания системы Mathematica до 120 Мбайт эта система пока еще используется у нас редко Maple V в настоящее время выпускается в ряде версий, называемых реализация- ми. Основной и самой известной является реализация Maple V R4 Power Edition На Западе ей на смену приходит новейшая реализация R5, хотя коммерческий выпуск реализации R4 с документацией продолжается. Обе реализации по математическим возможностям мало чем отличаются друг от друга — в реализа- ции R5 появилась возможность работы с электронными таблицами, несколько улучшен интерфейс пользователя (введены палитры для ввода математических символов и расширены возможности управления мышью), стала возможной запись файлов в формате Internet (HTML) и введена возможность обмена объектами документов по методу «Drag and Drops» (Тяни и Отпускай). Обе реализации выпускаются в трех модификациях — полной (Power Edition), стан- дартной (Standard) и студенческой (Student). В дайной книге в основном рассмат- ривается самая популярная, распространенная и полная версия Maple V — Power Edition. 1.1.2. Об ошибках в символьных вычислениях На многих пользователей системами символьной математики удручающее впечат- ление может произвести наличие хотя и редких, но ошибочных решений. В самом деле, мы немедленно стерли бы с жесткого диска табличный процессор, давший ошибку в бухгалтерских расчетах, или систему проверки орфографии, дающую ошибки при проверке. Впрочем, последний случай не столь уж и тривиален — пока нет таких систем, которые давали бы стопроцентную достоверность провер- ки орфографии и грамматики Тот же текстовый процессор Word 95/97 сплошь и рядом спотыкается при проверке орфографии текстов, в чем автор не раз убеждался, готовя по нему большую книгу [8]. Ситуация с системами компьютерной алгебры и того хуже. Некоторые, к счастью, достаточно редкие, ошибки и неопределенности в них как бы заранее запрограм- мированы. К примеру, что считать более простым выражением tan(x) или sin(x)/ cos(x)'? Система Derive полагает более простым выражением tan(x) и преобразует к нему выражение sirt(x) /cos(x). А вот система Maple V ничуть не менее справедливо считает, что функции sin(x) и cos(x) математически более простые, чем tan(x) и вообще tan(x) по сути не самостоятельная функция, а sin(x)/cos(x). Поэтому Maple V везде вместо tan(x) будет выводить sin (х) /cos (х).
Представьте себе, что таких недоразумений десятки и вы ничего об этом не знаете. Поэтому не стоит удивляться, что порою символьное значение какой-либо производной или интеграла заметно отличается по виду от приводимого в том справочнике, из которого взято исходное выражение для проверки системы. Обычно требуются определенные усилия для доводки результата вычислений, либо конкретные указания системе о типе преобразований в ходе вычислений. Они реализуются в виде опций к командам и функциям системы. По образному выражению автора обзора [40], решение задач в символьном виде напоминает переход через минное поле, густо напичканное минами. Удивительно не то, что системы символьной математики могут ошибаться и «взрываться», а то, что число этих ошибок мало и уже на нынешнем этапе развития таких систем это не мешает серьезному практическому применению их. Еще раз подчеркнем, что Maple V в этом отношении является одной из лучших систем, практически реализованных на ПК класса IBM PC и Macintosh, с достаточно умеренными техническими характеристиками. Кстати говоря, для ПК Macintosh пока послед- ней реализацией является Maple V R4 Иногда можно услышать, что компьютеры делают умных людей умнее, а глупых — глупее. Пожалуй, это более чем справедливо для людей, сидящих у ПК с установ- ленной на нем системой символьной математики. Лишь те, кто понимают суть математических вычислений и имеют должную математическую интуицию и подго- товку, могут получить от таких систем самые серьезные и даже новые результаты. Те же, кто думает, что системы символьной математики заменят им математические знания, глубоко ошибаются и могут получить красочно выглядящие, но абсолютно неверные и даже псевдонаучные результаты! Однако вряд ли следует переоценивать вероятность выдачи системами символь- ной математики ошибочных результатов — даже самые опытные математики-ана- литики тоже могут ошибаться в своих вычислениях. В разработке таких систем, как Maple V R4/R5 или Mathematica 2/3, принимают участие крупные матема- тические школы всего мира! Эти системы подлинный кладезь математических понятий, сведений и знаний. Они способны заменить самые серьезные справоч- ники по математическим вычислениям в любой области науки, техники и образования. Кроме того, они имеют множество средств для проверки корректно- сти выполняемых вычислений, например, подстановку полученных результатов в исходные выражения. Кстати, одно из самых действенных приемов проверки таких средств — решение задачи одновременно на нескольких системах символьной математики. Не слу- чайно уже сейчас можно заметить тенденцию к объединению математических систем. Эта новая и безусловно прогрессивная тенденция в ближайшее время приведет к созданию автоматизированных рабочих мест математиков и ученых других специальностей. Разработки таких рабочих мест (разумеется, компьютер- ных), в том числе с использованием систем Maple V, уже появились, и о них немного говорится в Заключении к этой книге. 1.1.3. Вызов функций пакетов расширения Maple V Основой символьной мощи Maple V является ядро системы. Оно содержит сотни базовых функций и алгоритмов символьных преобразований, В новых реализаци- ях объем ядра достигает 6-7 Мбайт. Имеется также основная библиотека опера- торов, команд и функций. Многие встроенные в нее функции, как и функции ядра,
могут использоваться без какого-либо объявления, другие нуждаются в объявле- нии. Кроме того, имеется ряд пакетов расширения системы (packages). Дополнительные функции из пакетов расширения должны применяться после объявления загрузки пакета с помощью слова with(name) где name — имя применяемого пакета. С учетом встроенных в ядро функций и функций пакетов расширения их общее число в системе Maple V R3 приближа- ется к 2500, а в реализации R5 к 2700. Это означает, что великое множество задач может решаться в режиме прямого диалога с системой без использования каких-либо средств программирования. 1.1.4. Языки системы — входной, реализации и программирования Maple V предназначена для решения огромного числа задач вообще без какого- либо их программирования в общепринятом смысле этого понятия. Достаточно лишь описать алгоритм задачи и разбить его на вопросы, на которые система Maple V способна дать ответы. Более того, есть тысячи задач, алгоритмы решения которых уже реализованы функциями и командами системы. Тем не менее это вовсе не означает, что система Maple V не относится к системам программирова- ния. Более того, на самом деле эта мощная современная система программирова- ния основана на трех языках — входном, реализации и программирования. Maple V имеет входной язык сверхвысокого уровня, ориентированный на решение математических задач практически любой сложности. Он служит для задания системе вопросов или, говоря иначе, задания входных данных для последующей их обработки. Это язык интерпретирующего типа и по идеологии работы с ним напоминает добрый старый Бейсик. И такое сходство вовсе не недостаток, а огромное достоинство — ведь именно с Бейсика начался подлинный диалог пользователя напрямую с компьютером! Входной язык имеет большое число заранее определенных математических и графических функций, а также обшир- ную библиотеку расширения системы. Имеет Maple V и свой язык процедурного программирования — Maple-язык, Этот язык, будучи частью входного языка, имеет вполне традиционные средства для подготовки на основе принципов структурного подхода типовых задач программи- рования: циклы, условные и безусловные переходы, операторы сравнения, логи- ческие операторы, команды управления внешними устройствами, функции пользователя, процедуры и т.д. Но, помимо этих возможностей, языку Maple V доступны все специальные операторы и функции, которыми располагает система. Многие из них заменяют весьма серьезные программы — например, символьного дифференцирования, интегрирования, разложения в ряд Тейлора, построения сложных трехмерных графиков и т.д. Не следует путать входной язык и язык программирования системы (словом Maple-язык) с языком ее реализации. Им является один из самых лучших и мощных универсальных языков программирования — С (Си). На его основе подготовлено ядро системы, содержащее тщательно оптимизированные процеду- ры. Большинство же функций системы — библиотечные из пакетов расширения, поставляемых с системой. Они подготовлены на Maple-языке программирования системы, могут дополняться и даже модифицироваться. По разным оценкам лишь
от 5 до 10 процентов средств Maple V создано на языке реализации — все остальное написано на Maple-языке программирования системы Таким образом, система имеет развитые возможности к расширению и адаптации к задачам пользователя Для подготовки программ на языке системы могут использоваться внешние редакторы, но система Maple V имеет и свой встроенный редактор, вполне удовлетворяющий большинство пользователей Он и вводится командами в позиции Edit главного меню Этот редактор можно использовать для редактиро- вания программных файлов или математических выражений Версии Maple V под MS-DOS снабжены своим редактором программ и отладчиком с функциями синтаксического контроля В версиях Maple V под Windows необходимость в этих средствах практически отпала Язык программирования Maple V напоминает (в части основных средств) смесь Бейсика и Паскаля Это облегчает знакомство с ним для тех, кто имеет хотя бы умеренный опыт программирования на этих языках По близким к Бейсику правилам (и общепринятым математическим сокращениям) выполняется и ввод математических выражений в диалоговом режиме работы с системой 1.1.5. Пользовательский интерфейс Долгое время Maple V имел довольно архаичный (хотя и неплохой) пользователь- ский интерфейс, ориентированный на операционную систему MS-DOS Но затем версия Maple V R3, затем Maple V R4 и, наконец, Maple V R5, приобрели вполне современный графический пользовательский интерфейс, характерный для прило- жений под операционные системы Windows 3 1/3 11/95 Это намного повысило удобство работы с системой и обеспечило простую интеграцию со многими другими программными продуктами Пользовательский интерфейс Maple V R4 позволяет готовить документы в стиле Notebook (Блокнот), содержащие одновременно текстовые комментарии, задания в виде функции в командной строке (с возможным преобразованием их в естественную математическую форму), результаты вычислений в виде обычных математических формул и графические данные Это обеспечивает высокую сте- пень визуализации как исходных данных, так и результатов вычислений В основе пользовательского интерфейса Maple V R4 лежит графический интер- фейс операционной системы Windows 3 1/311 или Windows 95 Интерфейс Maple V R4 является многооконным Управление системой возможно с помощью главного меню, панелей с кнопками быстрого управления и «горячими* клавиша- ми Реализуются многие возможности графического манипулятора — мыши, пожалуй, за исключением метода перетаскивания мышью объектов Важно отметить и прекрасно выполненную справочную систему Maple V R4 Преодолев первые трудности общения с системой, пользователь быстро осваивает систему помощи, которая позволяет без какой-либо документации получить исчерпывающую информацию о любом операторе, функции или пакете примене- ния системы (разумеется, на английском языке) В каждую справку входит по несколько примеров применения, причем их можно скопировать и перенести а редактор или в окно исполняемых документов системы Это способствует быст- рому обучению пользователя
Пользователь (как и в ряде других математических систем) работает с докумен- тами, которые являются одновременно описаниями алгоритмов решения задач, программами и результатами их исполнения. Они размещаются в соответствую- щих ячейках. Графические построения выполняются как в ячейках документа, так и в отдель- ных окнах, и имеют свои меню для оперативного управления параметрами графики. 1.1.6. Ориентация системы Maple V Вообще говоря, система Мар!е V ориентирована на решение сложных задач, хотя и решение в ней простых задач вполне возможно и уместно. Для решения таких задач вполне подойдет весьма простая, быстрая и надежная система Derive или система MathCAD, в которую (начиная с версии 3.0 под Windows) включен приобретенный по лицензии фирмы Waterloo Maple упрощенный символьный процессор Maple. Однако по числу доступных пользователю математических функций эти скромные системы не идут ни в какое сравнение с патриархом символьной математики Maple V. Перечислим основные возможности системы Maple V R4. Возможности интерфейса • работа со многими окнами; • вывод графиков в отдельных окнах или в окнах документа; • представление выходных и входных данных в виде естественных математиче- ских формул; • задание текстовых комментариев различными шрифтами; • ' возможность использований гиперссылок и подготовки электронных документов; • удобное управление с клавиатуры, с помощью главного меню и инструменталь- ной панели; • управление с помощью графического манипулятора — мыши. Символьные и численные вычисления • дифференцирование функций; » численное и аналитическое интегрирование; • вычисление пределов функций; • разложение функций в ряды, • вычисление сумм и произведений; • интегральные преобразования Лапласа, Фурье и др.; • дискретные Z-преобразования; • прямое и обратное быстрое преобразование Фурье; • работа с кусочными функциями. Численное и символьное решение уравнений ♦ решение линейных и нелинейных систем уравнений; • решение систем дифференциальных уравнений; • символьное вычисление рядов; • работа с рекуррентными функциями; • решение трансцендентных уравнений; • решение систем с неравенствами.
Вычисление элементарных и специальных математических функций • вычисление всех элементарных функций; • вычисление большинства специальных математических функций; • пересчет координат точек для множества координатных систем; • задание произвольных функций пользователя. Линейная алгебра • свыше 100 операций с векторами и матрицами; • решение систем линейных уравнений; • формирование специальных матриц и их преобразования; • вычисление собственных значений и собственных векторов матриц. Графическая визуализация вычислений • построение графиков многих функций; • различные типы осей (с линейным и логарифмическим масштабом); • графики функций в Декартовой и в полярной системах координат; • специальные виды графиков (точки массивов, векторные, диаграммы уровней и др.), • системы координат, определяемые пользователем; * графики, представляющие решения дифференциальных уравнений; • графики трехмерных ЗО-поверхностей с функциональной закраской; • построение пересекающихся в пространстве объектов; • задание пользователем окраски графиков; • импорт графиков из других пакетов и программных систем; • задание анимационных графиков; • проигрывание анимационных файлов с помощью специального проигрывателя. Программирование • мощный встроенный язык процедурного программирования; • простой и типичный синтаксис языка программирования; • обширный набор математических типов данных; • типы данных, задаваемых пользователем; • средства отладки программ; • мощные библиотеки расширения языка программирования; • задание внешних функций и процедур; ♦ программный интерфейс с языками программирования С, Fortran и LaTeX. Система Maple V R4 может применяться для решения самых серьезных матема- тических задач аэродинамики, теории поля, теплопроводности и диффузии, теоретической механики и др. Проекты с такими задачами нередко являются многолетним трудом элитных научных коллективов. Впрочем, коль система установлена на массовом ПК, ее можно (да и нужно) применять как можно чаще и по любому поводу. Это способствует практическому освоению и более эффективному применению системы — равно как и росту математических познаний тех, кто с ней работает.
1.2. Загрузка системы Maple V R4 и ее состав 1.2.1. Аппаратные требования и инсталляция В этой книге в основном рассматривается реализация системы — Maple V R4, ориентированная на наиболее распространенные у нас ПК класса IBM PC AT, построенные на базе микропроцессоров 386/486/Pentium/Pentium ММХ/Реп- tium Pro/Pentium II, имеющих ОЗУ не менее 8 Мбайт. Для современных ПК это уже небольшая память, так что можно считать, что аппетиты Maple V на память ПК и их аппаратные ресурсы достаточно умеренны. Хотя, увеличение памяти до 16 и более Мбайт делает работу с системой явно более резкой, чем при минимальном объеме памяти. На жестком диске система занимает от 16 до 30 Мбайт (конкретный объем зависит в основном от размера поставляемых вместе с системой библиотек — в частности, библиотеки совместного использования пользователями SHARE). Сто- имость системы около 700 долл. (США). Документация по Maple V R4 — две большие книги [37, 38). К сожалению, она крайне дефицитна. Тем не менее фирма Maple позаботилась о том, чтобы системой могли пользоваться все, а не только счастливые владельцы указанных книг. Это достигнуто введением в систему мощной справочной базы данных с огромным числом примеров. Для установки Maple V R4 Вы должны иметь ПК с указанной выше конфигура- цией. Система располагается (в частично упакованном виде) на 5 дискетах 1,44 Мбайт. Инсталляция системы проходит гладко и не требует пояснения. При инсталляции в самой массовой операционной системе Windows 95 в рабочем меню появляется подменю со значками Maple V (в некоторых поставках на рабочем столе появляется ярлык-ускоритель с изображением кленового листка и надписью Maple V R4). С системой поставляется ее версия под MS-DOS, редактор и корректор для файлов документов, архиватор библиотечных файлов и другие вспомогательные утилиты. 1.2.2. Запуск системы Запуск системы производится указанием на ярлык-ускоритель (или соответству- ющую позицию в меню программ) курсором мыши и быстрым двойным нажатием левой ее клавиши. При этом на некоторое время появляется красочное окно-за- ставка системы, а затем основное окно системы (рис. 1.1). Проблемы, связанные с инсталляцией и возможными конфликтами, описаны в файле readme, который рекомендуется просмотреть перед инсталляцией системы. К сожалению, он подготовлен на английском языке, как и вся встроенная в Maple V документация. 1.3. Работа в диалоговом режиме 1.3.1. Начальные навыки работы После загрузки и пуска системы можно начать диалог с ней, используя ее операторы и функции (с параметрами) для создания и вычисления математиче- ских выражений. На рис. 1.2 представлен реальный диалог с системой (в виде прямой копии с экрана) при решении простейших арифметических задач.
> t* Рис 11 Начальный момент запуска системы Maple V R4 Уже из этого простого примера видны особенности диалога с системой и синтаксиса ее входного языка — т. е. языка задания системе вопросов Диалог идет в стиле: задал вопрос — получил ответ Вопросы и ответы занимают отдельные блоки, выделяемые в левой части квадратными скобками Длина квадратных скобок зависит от размера выражений — исходных (вопроса) и результатов вычислений (ответов на вопросы) Знак > является знаком пригла- шения к заданию вопроса. Мигающая вертикальная черта | — маркер ввода. ’* ВТ 1W 7ЛЖПГ < Пу« ||4> МдЫ» V ПЫемГз gp.rrn| ДСлЧНАР| “40 Рис 1.2. Начало диалога с системой Maple V R4
вычитания - , умножения * , деления / и некоторые другие. Операторы обычно используются с операндами в виде констант или переменных, например, в записи 2*(3+4) числа 2, 3 и 4 — это операнды, а знаки * и + — операторы. Скобки используются для изменения порядка выполнения операций. Так, без них выражение 2*3+4=10, тогда как 2*(3+4)=14, поскольку вначале вычисляется выражение в скобках. Пожалуй, самым распространенным оператором является оператор присваивания = Он используется для задания переменным конкретных значений, например: > х:=у; х := у > y=z; у :=z > z-2; z := 2 >х; 2 >у: 2 Этот простой пример наглядно иллюстрирует эволюцию переменных и особую роль оператора присваивания в системе Maple V. В частности, в этом примере переменные х, у и z взаимосвязаны с помощью операций присваивания. Поэтому задание значения числа 2 последней переменной приводит к тому, что н перемен- ные у и х принимают то же значение. Другой распространенный оператор равенства = используется для задания ра- венств и логических условий (например, а—Ь), указания областей изменения переменных (например, 1=1..5 означает формирование изменения i от 1 до 5) и значений параметров — опций в функциях и командах (например, color=black для задания черного цвета у линий графиков). Операторы сами по себе результат не возвращают. Но они, наряду с функциями и своими параметрами — операндами, позволяют конструировать математиче- ские выражения, которые при их вычислении также возвращают результат. В силу этого математические выражения, содержащие операторы и операнды, могут быть параметрами функций. Выражения в Maple V бывают очень простыми (например, имена переменных х и у или константы 1 или 2), а могут содержать многие тысячи знаков. С позиции символьной математики квадратный корень из двух уже является основным результатом вычислений, поэтому такая функция обычно не вычисля- ется в численном виде, а выводится в естественном виде — с применением знака квадратного корня V, Для вычисления в привычном виде (десятичного числа с мантиссой и порядком) надо воспользоваться функцией evalf(sqrt(2)) — эта функция обеспечивает эволюцию (в нашем случае просто вычисление) символь- ного выражения, заданного ее параметром (числом 2). Более подробно тонкости входного языка общения с системой и языка ее программирования описаны в главе 9.
1.3.3. Управление окном документа Пока мы вели вычисления в открывшемся окне редактирования с именем Untitled (I). Как любое окно в системе Windows 95, оно имеет титульную строку с тремя кнопочками в конце ее: для сворачивания окна, переключения в полное или частичное открытие окна и для закрытия окна (в последнем случае вся информа- ция в окне теряется и окно исчезает). Кроме того, окно можно перемещать, уцепившись курсором мыши за свободное поле титульной строки и удерживая нажатой левую клавишу мыши Наконец, окно можно растягивать в разные стороны, цепляясь курсором мыши за границы окна. 1.3.4. Примеры задания функции пользователя и построения ее графика На рис 1.3 показано продолжение наших начальных экспериментов после полного открытия окна редактирования. InnlEUl ,|ff| х| > f(»):Л > plot(f(»>IS IS) r> I _________________________________________________________________= Im 1U ВИм. 31Ж Гя* Г13М, Дп»с» |[4 v h«im»« « gi«co! | | 394 f<3 Рис I 3 Пример залания функции пользователя и построения ее графика В данном случае показано, как задается функция пользователя Кх) с одним параметром х. Нетрудно заметить, что параметр указывается в скобках после имени функции, а для записи выражения функции используется знак присваива- ния := (двоеточие со знаком равенства). Для построения графика функции f(x) используется функция plot в форме: plot(f(x),x=-15..!5) Нетрудно заметить, что при нескольких параметрах функции (в нашем случае их два) параметры указываются через запятые. Выражение х=-15.,15 задает указа- ние во-первых, относительно какой переменной строится график, а во-вторых, в какой области значений меняются значения этой переменной (в нашем случае от -15 до +15). Шаг изменения переменной задается автоматический с тем, чтобы график был достаточно представительным.
1.3.5. Пример построения графика трехмерной поверхности Столь же просто, как и график обычной функции в Декартовой системе коорди- нат. можно построить график трехмерной поверхности. Это показано на примере рис 1.4. В данном случае задана функция двух переменных Z(x,y):=sin(x*y) и ее график строится с использованием графической функции plot3d Правила задания пределов изменения переменных х и у соответствуют описанным выше Рис I I Построение графика трехмерной поверхности Вероятно, многих читателей вполне удовлетворят уже описанные возможности, но сила системы Maple V R4 прежде всего в том, что она выполняет аналитиче- ские (символьные) вычисления. Поэтому покажем лишь некоторые из этих возможностей. 1.3.6. Управление формой представления документа Приведенные выше примеры реализуют обычную форму представления докумен- та В нем имеются текстовые комментарии (для их ввода нажимается клавиша F5). заданные на Maple-языке задания на вычисления, результаты вычислений в виде обычных математических формул и, там где это надо, графики Эта выстраданная форма представления документов является компромиссом между наглядностью визуализации документа и простотой ввода исходных дан- ных. Может показаться, что в этом отношении продвинуты системы класса MathCAD — исходные данные и описание алгоритмов вычислений у них давно задаются в виде естественных математических символов и формул, за исключе- нием, правда, функций символьных вычислений, которые пока не имеют общепри- нятых специальных математических символов и вводятся именами Однако это кажется достоинством лишь на первый взгляд. Ввод сложных формул довольно трудоемок и требует специфических навыков, отсутствующих даже у самых опытных пользователей. В MathCAD эта проблема решена вводом панелей
(палитр) с полным набором всех математических символов и шаблонов для представления сложных формул, таких, как интегралы, суммы и произведения рядов, производные и т.д. Тем не менее, хотя их ввод при этом и становится простым, легким его не назовешь, а монотонность операций нервирует многих пользователей, В Maple V R4 ввод исходных данных задается привычными для языков програм- мирования средствами — с помощью функций и операторов, записываемых в командной строке. Зато результаты вычислений получаются по умолчанию в виде обычных формул (хотя есть возможность их представления в другом виде, например, принятом в редакторе математических текстов LaTeX или у языков программирования Fortran и С), И все же вид документа с таким заданием формул может озадачить математика и любого пользователя, не очень-то знакомого с основами программирования, В целом он отрицательно сказывается на визуализации документов. 1.3.7. Представление входных выражений в математической форме Для устранения этого недостатка (а скорее противоречия) Maple V R4 предлагает ряд средств. Во-первых, это текстовые комментарии, в которые можно вводить формулы. Во-вторых, это инертные функции, которые не вычисляются, но дают вывод на экран дисплея в естественной математической форме. И в-третьих, это быстрое преобразование строковых выражений ввода в естественные математи- ческие формулы. Об инертных функциях мы поговорим позже, по мере знакомства с функциями, а пока остановимся на преобразовании выражений ввода на Maple-языке в обычные математические формулы. Для этого достаточно при установленном на входном выражении маркере мыши активизировать первую клавишу панели форматирования входных выражений — соответствующее выражение тут же приобретает вид обычной математической формулы (рис. 1.5), показывающий назначение элементов панели форматирования и пример преобразования функ- ции интегрирования в обычное представление интеграла. Таким образом, всегда можно получить формульное представление входных выражений. Более того, другой кнопкой их можно превратить в инертную форму, когда выражение перестает вычисляться и становится, по существу, обычным комментарием. Заметим, что пока формула является входным выражением в активной форме, она может редактироваться, но не сама по себе, а в виде текстового выражения, имеющегося в поле редактирования панели форматирования. При этом изменение записи выражения в поле редактирования немедленно влечет соответствующее изменение вводимой формулы. Это тоже довольно удобное средство, имеющее свои преимущества перед прямым редактированием формулы — в MathCAD, например, прямое редактирование формул требует определенных навыков и усваивается довольно трудно. Следует, однако, учитывать, что представление входных выражений в виде формул обычно занимает заметно больше места в документе, чем описание выражения на Maple-языке, поэтому оно используется довольно редко. Кроме того, далеко не всякое входное выражение может быть представлено в виде
113 4 5 • 1 Переключение между стаядфгиой и reircr звой форме» математических выражений —1 2 Переключение между инертной и активной формой математических выражений 3 Автоаоррекция выражений для проверки синтаксиса 4 Выполнение текущего условия 5 Поле редактируемого выражения Вычисление с гаданием выражения в текстовом формате > Lnt<x| п,х) ; (»♦!) л я + 1 Вычисление с преобразованием выражения в стандартную математическую форму (и+1) к ЗВПуса | glHC ЧТМЫН___2________________)!♦*•** 2ЕЧ>Ч 0 »О Рис 15 Назначение элементов панели форматирования входных выражений и их представление в виде обычных математических формул. математической формулы — многие функции ядра, основной библиотеки и расширений Maple V попросту не имеют общепринятых обозначений в виде специальных математических знаков. 1.3.8. Управление от мыши Для управления состоянием ячеек можно использовать контекстно-зависимое меню, появляющееся при нажатии правой клавиши мыши. Если маркер ввода установлен во входной ячейке, то это меню имеет три позиции: Standart Math Включает и выключает показ входных математической форме выражений в естественной Maple Input Управляет статусом (текст/ввод) ячейки ввода Evalution Включает исполнение (эволюцию) ячейки Левая клавиша мыши может использоваться для активизации и расширения выделения выражений в строке ввода или полного ее выделения. К сожалению, роль управления мышью в реализациях R3 и R4 принижена Такие возможности, как работа с контекстно-зависимым меню правой клавиши мыши и перетаскивание с ее помощью объектов с одного места на другое, реализованы только в новейшей реализации системы Maple V R5. Они описаны в главе I4. 1.4. Примеры символьных вычислений На рис. 1.6 показано несколько примеров выполнения символьных вычислений: преобразование тригонометрического выражения с помощью функции упрощения Simplify, вычисление суммы ряда функцией Sum и вычисление неопределенного
интеграла функцией int. Кстати, на примере вычисления суммы видно, что Maple может выдавать результаты в виде специальных математических функций. •Ь V A dr два 4 |1—in*l вм| Л ’> t* I'** Овй» ttw -Iglxl Демонстрация символьных преобразовании и вычислении ±| > eq3:-co«(xrs ' «1п(х)'4 ?«coe(x) ? 7«stn(x) 2 <х»»(2*х) л»? гож(*)$ ♦ iuU|J • 2 eet(x - 2 lintt )* co»(2t) > « inpl 1 f у(eql) « 4 to»(t) ♦ t«(t) > oq4; -sqrt(ж 2) ft > Я1В^>1 iry(»q4) • rsgn(x)r > suet 1/1 1-1. . 100) Y( 1011 * у > int <x‘ n, X) ( ♦ I» ДПхаI УMerow* |mKO ||&>Ы«ЙГу gJoC-CH | | Cb UW Рис I 6 Примеры символьных вычислений Вычисления в символьном виде производных и интегралов, пожалуй, являются наиболее характерными областями применения систем символьной математики. На рис. 1.7 показаны примеры таких вычислений с применением функции dif для вычисления производной и int для вычисления интегралов. ЯП В Примеры вычисления производной и интегралов > ditf (sln(x) 2.x) .- 2 imO) co»(jt) 1 JWW327 Tnt(eip( t)/t (1/3). t-0 infinity) 1 .-s* Рис 1.7. Примеры вычислении производной и неопределенных интегралов
Обратите внимание на функцию Int — инертную форму функции int Инертная форма служит для вывода записи интеграла в естественной математической форме, но с отложенным на потом выводом результата вычислений. Как отмеча- лось, это один из путей наглядной визуализации входных выражений. Все инертные функции имеют имя. начинающееся с прописной буквы, тогда как обычные функции имеют имена, начинающиеся с строчной буквы. На рис. 1.8 показано вычисление интеграла, имеющего закрытую форму. Как известно, такие интегралы не имеют представления через элементарные функции, но могут системой Maple V R4 вычисляться в численном виде. Некоторые жктегрмы кмекл тирытио форму, т е жх символькое пргдстимение отсутствует В »тем сяччае интеграл просто повторяется > Il - int< аир< t ) / aqrKJ-l f).t • -1. 1 ) Однжо можн< вычислил численное значение такого интеграла > «Ч-ll (rl) ; 4 <Пус*| ум.-.щм | ЬЙИС ЫГМ ||фы«р|е V ДОеССГ | ДДр-лщг J 1415 Рис 1.8 Вычисление интеграла, имеющего закрытую форму Одной из проблем систем компьютерной алгебры является проблема разбухания результатов — как оконечных, так и промежуточных. Связано это с тем, что аналитическое представление порою даже для простых задач может оказаться весьма громоздким — пожалуй, это главная причина прохладного отношения к аналитическим вычислением со стороны инженеров, особенно практиков. К примеру, численное решение кубического уравнения не вызовет трудностей даже на калькуляторе 111, тогда как системы символьной математики выдают его в виде формул, едва умещающихся на экране дисплея. Это и иллюстрирует рис. 1.9, на котором показано решение квадратного уравнения (его знает каждый мало-маль- ски успевающий школьник) и решение кубического уравнения (оно вызывает бурный восторг или легкий шок — в зависимости от отношения учащегося к математике). Обратите внимание на применение в записи результата специальной переменной %1 для сокращения записи решения кубического уравнения. Переменные такого вида (%2, %3 и т.д.) могут встречаться в результатах решения и других задач. Могут также встречаться и другие обозначения — они будут описаны по мере появления в соответствующих примерах.
нпп S (1а Ь* ¥•* Щи* FcRM Qgaom tjap Решение квадратного и кубического уравнении 1/3 2 1 %1 2 3ae-t> I Ь 6 в ~3 1/з'Зя а 41 1 Н11/3 1 Зас-t/ !£ + 1 Г7 1 %1" ~ ^2 Здс-4~ 12 д *3 1/Э~За+2/1/3 6 а *3 1/3 д%1 д%1 1/3 2 ( 1/3 . 2) 2_%1 1 Зас-1> U 1 г 1*1 2 Зас-Г 12 а *3 1/3 За *2Z*’ 6 j +3 1/3 яЧ1 о 41 Н1- ____________________________________ 36 4еа - 108</о2 - 8 ь3 ♦ 12 /з J4aS - с2 Ь‘- \9bеad* 23d2а2 *4аа ДПу.| тумозао |a>NCHCM [I^MjpteV ДС«ОО1 | | gfc 425 Рис 1.9. Решение квадратного и кубического уравнения в символьной форме. Щепетильность системы в ее стремлении выдать полный и математически пре- дельно точный результат, безусловно, очень важна для математиков. Но для многих прикладных задач, с которыми имеют дело инженеры и техники, она оборачивается боком. Инженеры часто прекрасно знают, какие из членов мате- матических формул можно преспокойно отбросить, тогда как для математика-те- оретика или аналитика такое действо типичное кощунство. Порою системы компьютерной алгебры выдают настолько «заумный» и огромный результат, что его упрощение может занять куда больше времени, чем получение более простого результата с заранее выполненными упрощениями. Впрочем, каждому свое! И Maple V имеет множество функций, обеспечивающих преобразование результа- тов в ту или иную форму. Приведем еще один характерный пример — решение системы линейных уравне- ний с помощью функции solve (рис. 1.10). Обратите внимание на форму задания системы и выдачи результатов и поразительную естественность решения задачи. Слова solve, diff и int с их аргументами являются именами встроенных в систему функций, возвращающих символьные значения результата. Обычному пользова- телю может стать дурно, когда он узнает, что таких функций с их вариантами в системе Maple V R4 почти 2500! Да к тому же многие функции (та же solve для решения уравнений) подчас могут применяться во многих случаях и имеют массу опций и директив для уточнения направлений решения и расширения областей применения. В утешение можно отметить три важных обстоятельства: мало кто на практике из всей этой массы функций использует их более нескольких десятков, названия и формы представления многих функций интуитивно предсказуемы, система имеет превосходную справочную систему, с помощью которой при определенном терпении (и непременном желании) можно разобраться с любой из функций.
Необходимые функции и правила их преобразования система черпает в библио- течном модуле размером более 12 Мбайт (он содержит файлы maple.hdb, maple.lib и maple.ind). Это иногда занимает время — особенно при первом использовании определенной группы операторов (например, тригонометрических). При повтор- ном использовании этой группы система «обучается» (точнее, использует уже загруженные средства) и выполняет расчеты заметно быстрее. япс llnsimnis Пример решения системы из пяти линейных уравнении > eqsl (ж • 2*у 3*е S*u - I. | > 5*ж ♦ 5*у ♦ 4*а ♦ 3*t + 2*u - 1, > 3*у ♦ 4*z - 8*t ♦ 2*ч - 1, > x + y«»*t ♦ u - 9. > B*x ♦ 4*z ♦ 3*t ♦ 2*u - !>/ etpl (x ♦ ly ♦ 11 ♦ 44 ♦ 5 “ 6,Sx + 5ji ♦ 41 ♦ J r ♦ 2 « — 1, » « ♦ t ♦ I ♦ » • 4,8* ♦ 41 ♦ J« « 1» • 1, J/ + 4: - Jl » 1» • 1) > alBolveCoqsl, (i.y.z.t.u)) 8589 168 -1736 13983 e/ ’ • Тю 'х - » /- T ‘ - IF’*' “ПГ} _______________________________________________________________________________d Tn ao> ox r— rnm | -ДГМсюиЛ |a>UcNCM ||<t>M«phV ЦРчООТ | ^PoSIUP | fc ’«Ы Рис. 1.10. Решение системы из четырех линейных уравнений. 1.5. Работа с кнопками быстрого управления 1.5.1. Работа с панелью инструментов Пока мы в проведении вычислений пользовались лишь простейшими средствами управления системой — вводом выражений и текстовых надписей с клавишного пульта. Теперь пора расширить представления о работе с системой. Прежде чем работать с главным меню, надо отметить, что для многих (особенно начинающих) пользователей удобно работать с кнопками быстрого управления системой, рас- положенными на панелях управления и форматирования, которые находятся прямо под строкой главного меню. На рис. I.l 1 показано назначение кнопок панели управления (Tool Ваг). Эти кнопки дублируют наиболее важные операции главного меню и имеют наглядные и типовые для Windows-приложений обозначения. При необходимости панель инструментов можно убрать (см. главу 4). Окна графики также имеют свои панели инструментов. Их описание дано в главе 7. 1.5.2. Работа с панелями форматирования Другое полезное средство для облегчения работы по форматированию текстов, входных математических выражений и графиков — панели форматирования.
Ц [Й Yww )М«Г ГфПМЙ Ь»*огж del si [□ЕЖ 9 10 IT 1 - Coinaxoie иоваго документа 3 Сохранение ак Timi'ol и докумен!а 5 Перенос буфер выделенной чагтп 1 Капнровакне их вуфера в документ 2 Вывод окна хагруихп документа 4 Печать ак хинного документа 6 Котефованне выде.тегаи в буфер 8 - Уничтожение послешей операции 9 Вставка команды 10 Вставка пассивною комментария 11 Вставка новой ячейки 13 Сотламте закрытых секций 15 Вывод малым» символами I100* at 12 Восгтановв.текне закрытых секций 14 Прерывание вычислений 16 Вывод средними символами (150%) 17 Вывод круштым» символами (200%) 18 Вывал не печатаемых символов 19 Полное раскрытие активного окна Натначенне кнопок панели инструментна .Tool Bari ЛлнеЛм прокрутка по вертикали => £_ ____________Парень гт>ТУса < И- Тему______________________ el Там пщ Рим » Tim тдаж Ml*1***! ЗУМ» HtWoid Дочмв» Ц^ ИатИе V НаЫас» Г | Рис 111 Назначение кнопок панели управления Обычно выводится одна панель форматирования, соответствующая текущему режи- му работы. Панели форматирования Context Ваг являются контекстно-зависимыми. Рис. 1.12 показывает назначение средств, которые находятся на панели формати- рования (Context Ваг) при вводе текста. В их числе наиболее часто используемые средства — установка стиля надписей, выбор набора символов (шрифтов) и установка размера символов. Часто используются также кнопки для задания полужирных (Bold), курсивных (Italic) и подчеркнутых (Underline) символов. 1 2 3 4 5 6 7 8 9 10 11 12 ) 1 Поле стиля 3 - Поле набора шрифтов 5 Пол» размера символов шрифта Символы полужирны t 9 Стволы подчеркнутый сикху | 11 Равнение текста по середине 2 Переключатель стиля 4 Переклхочатолк шрифтов 6 Перек.ооча’е.тк шрифтов 8 Символы >1аьорниые 10 - Равнение текста 12 Равнение текста справа Назначение кнопок пине.тн форма nip о ванн ив (Corneil Ваг) d toe 00. Евк » flee вМЛВ. ЙПчс«||^Ы^УНеЫ«.е4 gtkW| | 1>2Э Рис I I2 Назначение средств управления панели форматирования текста
Полезно при работе с системой следить и за информацией в панели статуса системы (внизу экрана). В ней появляются надписи, поясняющие исполняемые операции. Кроме того, выводится текущее время, объем используемой памяти и объем памяти раздела диска, на котором установлена система. Как отмечалось (рис, 1.5), при наборе входных выражений панель форматирования приобретает иной вид. Панель статуса имеет вид линии (Status Line) внизу документа и отображает различную полезную и оперативную информацию — прежде всего о текущем времени и использовании памяти. Она также выдает контекстно-зависимые сообщения о характере работы с системой. Хотя панели управления, форматирования и статуса удобны для быстрого управ- ления системой, они обладают одним существенным недостатком — занимают часть площади экрана. Однако в позиции View главного меню имеются опции, позволяющие убрать с экрана любую из этих панелей или все их. В приведенных выше примерах применения системы Maple V R4 использовался этот прием. 1.6. Работа с системой помощи Maple V R4 имеет две взаимосвязанные системы помощи. Одна из них онлайновая (online) позволяет вызвать нужную справку в командном режиме. Для этого достаточно набрать в командной строке слово help или ? (вопросительный знак) с последующим указанием искомого слова, например: > help sin или > ? sin В данном случае после нажатия клавиши Enter будет получена справка по функции sin (рис. 1.13). Такое обращение применяется для библиотечных функ- ций и зарезервированных (ключевых) слов системы. Его недостатком является то, что нужно знать имя оператора или функции, по которой ожидается получение справки. При этом на экран дисплея будет выведено подробное сообщение (справка) на английском языке о назначении и правилах записи (синтаксисе) соответствую- щей функции, оператора или пакета применений. Весьма полезным средством является выделение и выбор примеров из справок. Для этого используется клавиша 1ns, которой намечают начало и конец выделений. Можно также выделить пример, перемещая мышь с нажатой левой клавишей. Наконец, исполь- зуя команду Copy Examples в позиции Edit главного меню окна справки (рис. 1.13), можно скопировать в буфер все примеры. После этого, закрыв окно справки, можно с помощью команды Paste в позиции Edit главного меню документа перенести в него имеющиеся в буфере примеры. Это показано на рис. 1.14. Таким образом, можно легко проверить работу примеров по любой функции системы. Как правило, дается несколько примеров на применение каждой функ- ции, так что общее число примеров трудно представить, поскольку число функций достигает двух тысяч. Помимо встроенных в ядро функций в систему входят дополнительные функции и пакеты прикладных программ. Чтобы получить помощь по ним, нужно ввести
нов •*» Maplr V R4e«ie 4 |«rig| ytfwnw a* Tnjonoaietnc fua.a «u Ci*f Function: unh. c ;L. The НуреЛкДг funiri-ns E*m -,lg| х| □ MBlIII Calling Sequence; tn(i) cox(x) uaU') kc(x) c^W coK*) smh(xj coahfc) ’anh(x) хкЫх) cach(x) cothix) Parameters: x - m expremoa № Description: S Examples: Г> alntOI > c a(Pi) ‘ .1 _LL-------—----------------------------------------------------------------—3 Lom *• « wesoe <o »w dobood зумстж» | Pine НС ||ф м«|*> gC*CT | |ДУо>нер | p, 1)19 Рис. I 13 Пример получения справки no функции sin RBG a E* E* Уж» lew" F<X"* Qpbons Wort». H»< □HDlnaa lai x| > sui(0| 0 > cos (Pi) -1 > ooeho.i-г. 5»i) I OOIIWJl + 0038964.106 «9/ > t-a.[>aud(ain(x<y) ) яи Ж ) t >X/) +• son ж) яи/) > aonbuic(", trig) HOUt/l > convert(tanh(x) exp)• ime uus ryw ur Лпу,ж| «уИстод | Вне NC ||<: gtoOQT j »3|Do>MAF | 31tf4 & Рис 1 14 Примеры, скопированные в документ их имя после вопросительного знака Например, чтобы получить помощь по функци- ям пакета расширения системы plots, достаточно ввести в командной строке: > ?ploto А чтобы найти полный перечень пакетов расширения, можно ввести команду: > '’packages
Обратите внимание на то, что после этих обращений к справочной системе никакие знаки (двоеточие или точка с запятой) не ставятся В конце каждой справки приводятся имена связанных с данным объектом слов, а также другие возможные формы получения справок Используя их, можно более подробно познакомиться с возможностями системы Удобно в описываемой версии Maple V решен и вопрос о предоставлении оперативной контекстно-зависимой справки по любой функции Достаточно ука- зать ее маркером и нажать клавиши Ctrl + Fl (или, что не документировано, просто F1) Тут же будет выведено окно справки по данной функции. Можно также выделить интересующее вас слово и получить справку по нему. 17. Главное меню системы и «горячие» клавиши Главное меню системы Maple V R4 расположено непосредственно под титульной строкой Оно дает доступ к основным операциям и опциям, присущим пользова- тельскому интерфейсу системы Ниже дан перечень позиций (подменю) главного меню в режиме открытого документа: File Работа с файлами и печатающим устройством Edit Редактирование документа и операции с буфером View Управление видом пользовательского интерфейса Insert Операции вставки Format Операции задания форматов Options Задание опций Window Управление окнами Help Работа со справочной системой Если все документы закрыты, то главное меню имеет только две позиции — File и Help При этом место для окон документов пусто и окрашено в серый цвет (рис 1 15) Позиция File имеет подменю всего с тремя операциями — это подменю также показано на рис 1 15 Для активизации позиций главного меню можно использовать сочетание клавиши Alt с одной из клавиш, выделенной в названии требуемой позиции подчеркивани- ем снизу Такое сочетание клавиш получило название «горячих» клавиш (Hot Keys) управления Активизация позиций главного меню Открытие подменю Edit Alt + Е Открытие подменю File Alt + F Открытие подменю Format Alt + R Открытие подменю помощи Help Alt + H Открытие подменю вставок Insert Alt + 1 Открытие подменю опций Options Alt + 0 Открытие подменю вида View Alt + V Открытие подменю управления окнами Window Alt + W
wtNl WCM lyMoow* - Д^Ыяй.У g.'^-OT I |$|С*»МР I ЗДц0 пи Рис I 15 Вид экрана Maple V R4 при всех закрытых документах - 1 Возможна активизация позиций главного меню и прямым указанием на них курсором мыши । с быстрым нажатием ее левой клавиши «Горячие» клавиши присвоены и многим другим наиболее распространенным операциям, которые облегчают и ускоряют (наряду с кнопками панелей управления и форматирования) быстрое управление системой Ниже приведен список других «горячих» клавиш, разбитых на ряд категорий Задание стиля символов и режимы ввода текстов Задание полужирных символов Ctrl + В Установка курсивных символов Ctrl + 1 Задание подчеркивания символов Underline Ctrl ♦ U Включение/выключение ввода текста F5 Установка режим ввода (Input Mode) Ctrl + М Задание режима ввода текста Text Input Mode Ctrl + Т Операции выделения Плавное выделение от маркера влево Shift + <- Плавное выделение от маркера вправо Shift + -» Плавное выделение от маркера вверх Shift + T Плавное выделение от маркера вниз Shift + i Выделение от маркера до начала строки Shift + Home Выделение от маркера до конца строки Shift + End Выделение от курсора влево и до начала документа Shift + Pg Up Выделение от курсора вправо и до конца документа Shift + Pg Dn
Операции удаления, вставки и замены Копирование выделенных объектов в буфер Ctrl + С Перенос выделенных объектов из документа в буфер Ctrl + X Вставка данных из буфера Paste Ctrl + V Удаление указанного объекта Ctrl + Delete Закрытие выделенной секции Ctrl + . Поиск вхождений Ctrl + F Вставка исполняемой группы ...После маркера ...До маркера Ctrl + J Ctrl + К Вставка параграфа ...До маркера ...После маркера Shift + Ctrl + J Shift + Ctrl + К Восстановление закрытых секций (Outdent) Ctrl + , Переходы по документу Переход к началу линии Home Переход в конец документа Ctrl + End Переход к концу линии End Переход в начало документа Ctrl + Home Создание новой строки Shift + Enter Перемещение к следующей линии ввода Tab Перемещение к предыдущей линии ввода Shift + Tab Создание, загрузка, сохранение и печать документа Создание нового документа Ctrl + N Вызов окна загрузки документов Open Ctrl + 0 Запись документа с текущим именем Save Worksheet Ctrl + S Запись документа с текущим именем Save Worksheet Ctrl + S Печать документов Print Worksheet Ctrl + P Закрытие активного окна (документа) Ctrl + F4 Завершение работы с Maple (Exit) Alt + F4 Операции просмотра Восстановление экрана Redraw Screen Ctrl + L Просмотр Show Region Ranges F9 Просмотр Show Section Ranges Shift + F9 Разделение строки на две части Split Group F3 Объединение смежных строк Join Group F4 Разделение секций на две части Split Section Shift F3 Объединение смежных секций Join Section Shift F4
] Отмена предшествующей операции Undo Delete Ctrl + Z Установка размеров символов I Размер (Zoom Factor) 50% Ctrl + I Размер 100% Ctrl + 2 Размер 150% Ctrl ♦ 3 [ Размер 200% Ctrl + 4 | Размер 300% Ctrl + 5 [ Размер 400% Ctrl ♦ 6 Разумеется, можно успешно работать с системой, вообще ничего не зная про •горячие» клавиши. Однако быстрое и профессиональное пользование системой Maple V R4 предполагает пользование этими клавишами, поскольку при этом реализуется минимум операций, нужных для ввода той или иной функции управления системой. При работе с русифицированной версией Windows 95 нередко латинские буквы в обозначениях «горячих» клавиш заменяются русскими буквами, не несущими никакого смыслового значения о выполняемой операции. В этом случае полезно знать, что соответствующая латинская буква (или иной знак) находятся на той клавише, которая имеет русскую букву. 1.8. Особенности версии Maple V R3 Третья реализация системы Maple V вполне современная математическая систе- ма, которая по своим математическим возможностям практически почти не уступает новым реализациям R4 и R5. Ее главное отличие от этих реализаций — несколько упрощенный пользовательский интерфейс. Это видно из рис. 1.16. Н _________M»pteVRel«»»e3 |0ММ<М| |< 1’1») file Edit Format View Options Help Ивтгаявп1Р1РД1пдои1з1п: Построение 3D графика для трех поверхностей > > kuenx:« (ну) > Z(co*(u) ♦ u’sin(u)rsin(v)/(1 ♦ (и sio(e))A2): > kueny * (u.v)-> 2*(«ln(u) • u'co«(u))‘ttn(v)/(1 ♦ (u'Bin(v))A2): > ku»nz“ (ил) > log(tan(v(2))♦ 24oi(v)/(1 ♦ (usin(v))'>2) > plot3d((ku»nx.kueny,ku»nz] -4. 4, .01 .. Pl-.01.gnd“[36.35].ort*ntetion-(134 70J) Рис. I 16 Экран математической системы Maple V R3
На экране можно обнаружить уже описанные кнопки быстрого управления, хотя и в меньшем количестве, чем у реализации R4. Надо отметить, что тенденция к увеличению числа таких кнопок проявляется все реже, поскольку разобраться в их назначении оказалось не проще, чем в многочисленных пунктах главного меню Поэтому система Maple V R3 по-прежнему пользуется успехом. Еше одна отличительная деталь этой реализации системы — заимствованная из версий под MS-DOS организация справочной системы виде последователь- ного поиска нужной функции. Этот поиск напоминает работу с тематическим каталогом и сводится к постепенному уточнению назначения искомой функции (рис. 1.17). ____________________________________________________________________*1 Ви*1 Owr FwMmov 32200Г ; gt uC-от | ||ам«ы 1337 Рис I 17 Поиск нужной функции в базе данных справочной системы Maple V R3 В реализации R4 создатели Maple V отказались от этой довольно удачной находки, сделав справочную систему подобной справочным системам большинст- ва приложений под Windows, например, таких, как компоненты системы Microsoft Office. Тем самым они выплеснули ребенка вместе с водой. Тем временем разработчики конкурирующей системы Mathematica 3, напротив, ввели подобную справочную систему в свой продукт. Спохватившись, Maple Software восстановила статус-кво своей справочной системы Maple V, включив тематический поиск в указанном виде в свою новейшую реализацию Maple V R5. Надо отметить, что только благодаря удачной справочной системе многие поль- зователи реализацией R3 предпочитают ее более новым реализациям R4 и R5. Особенностям последней посвящена глава 14.
Глава 2. Работа с файлами 2.1. Позиция главного меню File Позиция File (Файл) главного меню содержит основные операции для работы с файлами документов. Файлом называют имеющую имя упорядоченную совокуп- ность данных или кодов программ, размещенную на том или ином носителе — обычно на жестком или гибком диске или на диске с лазерным считыванием данных — CD-ROM. В системе Maple V R4 пользователями используются файлы различных форматов, которые задаются расширением того или иного файла (знак * означает произволь- ное имя файла): * ms Файлы документов для систем с графическим интерфейсом (Windows/Macintosh) * msw Файлы документов (Worksheets) * txt Текстовые файлы (включая формат Maple-текст) *.tex Файлы формата LaTeX * tnd и * lib Заархивированные файлы библиотек * m Файлы внутреннего Maple-языка Файлы документов содержат полный текст программы, выводящей документ в окно редактирования, с указаниями координат расположения блоков, фактическо- го содержания и характера выполняемых операций, форматов предоставления информации и т.д. Таким образом, файл является по сути программой, записанной на внутреннем (промежуточном) языке программирования системы. Файлы содержат и резуль- таты вычислений и все необходимые данные для построения графиков. Предусмотрена возможность записи документов и в особом формате документов LaTeX, принятом для подготовки книг и статей по математике Текстовые файлы (с расширением .txt) можно просматривать и редактировать текстовыми редакто- рами, работающими с ASCII кодировкой. Важно отметить, что даже при записи документов со сложными рисунками используется не прямая запись их BitMap-копии (битовой), а запись данных для построения графиков. Поэтому файлы Maple V невелики по размеру и их легко передавать по современным средствам телекоммуникаций, например по сети Internet. Они требуют небольшого свободного пространства на дисках для записи. Тем не менее, чем сложнее график содержится в документе, тем больше объем памяти, нужной под хранение файла. Помимо обычных операций по работе с файлами (их запись на диск и загрузка с диска), предусмотрены возможности распечатки документов принтерами различ- ного типа.
Если сделать позицию File главного меню активной, появится ниспадающее подменю (см. рис. 2.I). _______________________________________________________ _ - УМтмЫг IgpcOOT | [р£>МарЫУ 9^4 9 ИЯ Рис 2.1. Переднее панно системы Maple V R4 с активной позицией File главного меню Подменю содержит ряд операций, разбитых на группы. В первую группу входят следующие операции по работе с документами: New Ctrl+N Создать чистое окно для нового документа. Open... Ctrl+O Открыть существующий документ. Close Ctrl+F4 Закрыть документ. Save Сохранить на диске текущий документ. Save As... Ctrl+S Сохранить на диске текущий документ под новым именем Export As... Экспорт файлов различного формата Вторая группа команд служит для записи состояния (конфигурации) системы: Save Setting Запись конфигурации (установок системы). AutoSave Setting Автоматическая запись конфигурации. Третья группа команд служит для подготовки к печати и печати документов: Print Preview... Предварительный просмотр документа перед печатью. Print... Ctrl+P Печать документа Printer Setup... Установка параметров принтера для печати Вторая из этих операций позволяет распечатать весь текст документа с коммен- тариями. математическими формулами, таблицами и графиками. Печать произво- дится принтерами в графическом режиме и не очень быстро. Зато печатаются все
шрифты и математические спецзнаки. Можно печатать и части документа. Лазерные принтеры дают превосходное качество печати — но обычно черно-бе- лой (цветные лазерные принтеры пока безумно дороги). Струйные принтеры могут легко реализовать печать в цвете. Скорость печати современными персо- нальными лазерными и струйными принтерами достигает 4 — 12 страниц формата А4 (обычный лист писчей бумаги). Четвертая группа представлена командой | Exit Alt+F4 Выйти я» среды Maple У. Вернемся к широко используемым операциям первой группы и рассмотрим их более подробно. Заметим, что некоторые из них могут быстро вводиться нажати- ем функциональных клавиш (они указаны в квадратных скобках после наимено- вания операции). 2.2. Подготовка к вводу нового документа (New) Операция New (Создать новый документ) обычно применяется, когда пользова- тель намерен создать новый документ. Она выводит на экран новое текущее окно редактирования и переводит систему в режим редактирования. При исполнении операции New выводится пустое окно редактирования, показанное на рис. 2.2. a Е* * ¥•» Imel F«rM< Q₽Honi tfrd*. Цес [пн|тп W Г- irgT!fll*l-l т»Т*1Г<1МЧ Tim OCh byu. О F<w ПМ» *2=1 ITMcraoli | g&oCiQl | fl|DoiNAF ||^>М«цЫУ ”53 Рис. 2.2. Окно редактирования, выведенное операцией New При открытии документа с пустым окном редактирования появляется ячейка ввода со знаком приглашения >. после которой виден мигающий маркер ввода в виде вертикальной черты I . Ячейка ввода обрамляется квадратной скобкой. Становятся доступными все операции ввода объектов документа и их редактиро- вания. Текущий документ приобретает имя Untitled (N) (в переводе «Безымян- ный»), и после его имени в круглых скобках указывается номер документа.
Обычно после применения этой операции пользователь начинает ввод документа с клавишного пульта и его редактирование, используя для этого оконный редак- тор. Текст текущей строки ввода повторяется в специальном поле панели форматирования. Как уже отмечалось, используется строчный режим редактиро- вания — это. пожалуй, главный недостаток системы Maple V R4 по сравнению с системами класса MathCAD, позволяющими задавать ввод в виде обычных математических выражений и формул. Хотя в реализации R4 (и тем более R5) этот недостаток во многом устранен. Операция New дублируется кнопкой с пиктограммой в виде чистого листка, помещенной в инструментальную панель. Разумеется, ее применение возможно только в том случае, когда эта панель (строка с пиктограммами) присутствует. 2.3. Ввод документа с диска (Open) Операция Open... (Открыть) служит для загрузки документа из его файла с выбором из директории файлов При исполнении этой операции появляется диалоговое окно выбора файла (см. рис. 2.3). К аналогичному действию приводит активизация пиктограммы в виде открывающейся папки в инструментальном ящике системы. Maple Text Рис. 2.3. Окно поиска н загрузки файла документа В этом окне с помощью меню выбора дисков и вертикальной линейки прокрутки можно пройтись по всем именам дисков, их директориям и файлам текущей директории, чтобы выбрать нужный файл для загрузки. Имя файла и директорию можно указать в двух первых позициях окна. Для выбора файла или директории используются мышь и клавиши перемещения курсора. Выбор завершается нажа- тием клавиши Enter или указанием курсора мыши на изображение кнопки ОК в окне выбора файлов с последующим нажатием левой клавиши мыши. Это приводит к загрузке документа в текущее окно системы. Использование кнопки Cancel позволяет отказаться от выбранной операции. Можно поступить и иначе: указав курсором мыши на нужный файл, быстро нажать дважды на левую клавишу мыши Активизация курсором мыши кнопки Cancel диалогового окна (или нажатие клавиши пульта Esc) ведет к отказу от операции выбора файла.
После загрузки файла с документом его содержимое появляется в текущем окне и можно начинать работу с ним. Возможно открытие файлов с расширениями *.ms, *.mws и .txt (текстового формата). Переключатели типа файлов и дисководов расположены внизу диало- гового окна открытия файлов. Это окно порождается графическим интерфейсом Windows и для локализованных под Россию версий данной операционной системы будет содержать надписи на русском языке — это относится и к ряду других окон, которые используются в пользовательском интерфейсе. Во многих системах открытие нового окна операцией New отменяет все установки системы. Но в Maple V это не так — все установки (в том числе введенные в других окнах сохраняются), поскольку система предполагает совместную работу в нескольких окнах. Если тем не менее вы хотите отменить все установки для нового окна — исполните в нем команду restart. 2.4. Запись документа на диск без переименования (Save) Эта операция записывает содержимое активного в данный момент окна в виде файла на диск с использованием его текущего имени и с учетом всех изменений, которые вводились в документ в ходе его редактирования, доработки или допол- нения. Такая операция удобна, если вы совершенствуете ранее созданный и уже имеющий свое имя документ. Она дает быстрый способ записи файла на диск без поиска его места в файловой структуре и без изменения имени. Следует с осторожностью пользоваться этой операцией в том случае, когда вы модернизируете какой-либо документ, но желаете сохранить оригинал в неизме- ненном виде. В случае применения операции Save (Сохранить) исходный файл- оригинал будет заменен новым. Чтобы этого не произошло, следует пользоваться операцией записи Save As... (Сохранить как), описанной в следующем разделе. Операцией Save рекомендуется пользоваться периодически при подготовке слож- ных документов. Это позволяет сохранить все изменения в документах и избе- жать потери документа при ошибочных действиях, например, при случайном выключении компьютера до записи файла. Операция Save выполняется без выдачи каких-либо предупредительных сообщений. 2.5. Запись документа на диск с переименованием (Save As) Операция Save As... (Сохранить как) отличается от предыдущей тем, что перед записью файла на диск в появившемся диалоговом окне появляется запрос на ввод имени файла (рис. 2.4), что позволяет задать любое имя, в том числе отличное от имени дорабатываемого файла-оригинала. Тем самым можно отдельно записать доработанный документ и сохранить оригинал. Имя файла может быть коротким, без указания дисковода и поддиректорий. Тогда файл будет помещен в текущую директорию. Однако можно указать и полное имя файла, например: d:\mapleV\book\demo.ms
Экспорт файлов различного формата (Export As) 45 Тогда файл demo.ms будет записан на диск d в поддиректорию book, имеющуюся в директории mapleV. Рис 2.4 Диалоговое окно для записи файла с указанием его имени Документ данной операцией можно сохранять в одном из следующих форматов: Maple Worksheet (*.mws, *.ms) Файлы формата документов Maple V Maple Text (* txt) Text ( txt) LaTeX Source Файлы в формате Maple-текст. Файлы в текстовом формате ASCII. Файлы в формате системы LaTeX Переключатель выбора формата файла имеется в окне записи. Остальные элемен- ты окна подобны описанным для окна открытия файлов. Данная операция особенно полезна при доработке и модификации файлов, например входящих в комплект поставки системы, когда надо сохранить ориги- нальные файлы в неприкосновенности. Для этого достаточно записать изменен- ные файлы под новыми именами. Maple V не предусматривает создания резервного bak-файла при использовании операции Save Поэтому надо внима- тельно следить за ее использованием и применять операцию Save As.... когда есть подозрения даже в случайной модификации исходных файлов. 2.6. Экспорт файлов различного формата (Export As) Maple V R4 имеет возможность экспорта файлов различного формата. Он может задаваться из подменю, которое появляется при активизации операции Export As Это подменю задает следующие форматы экспортируемых файлов: ' Plain Text ... Формат обычного текста (ASCII) Maple Text ... Формат Maple-текста LaTeX ... Формат системы LaTeX I При использовании любой из этих операций появляется диалоговое окно, анало- гичное описанному для операции Save As .... Возможность экспорта файлов расширяет возможности связи системы Maple V R4 с другими прикладными программными системами.
2.7. Закрытие документа (Close Document) Эта операция закрывает окно с текущим документом, и система переходит к работе с окном предшествующего документа (либо к пустому серому окну, если другие документы не вводились). Как уже отмечалось, система Maple V для работы с каждым документом создает свое окно. Возможно задание многих окон Текущее окно обычно видно на переднем плане. Если все окна уже использованы, то попытка загрузки еще одного документа станет невозможной (о чем будет выведено соответствующее сообщение). Операция Close (Закрыть) позволяет убрать ставшее ненужным окно текущего документа. Если какой-либо из документов в закрываемых окнах подвергался модификации, то система спросит, надо ли записывать документ на диск (рис. 2.5). Рис 2.5. Диалоговое окно, появляющееся при закрытии окна модифицированного документа Если документ не модифицировался, соответствующее окно просто закрывается. Окно, показанное на рис. 2.5, создает система Windows. Поэтому надписи на его кнопках могут быть на русском языке, если установлена русифицированная версия Windows. Закрыть окно также можно, используя кнопку с треугольником, острие которого обращено вниз, или команду Close меню управления окном. Следует помнить, что каждое окно, будучи сложным графическим объектом, занимает определенный и немалый объем памяти. Поэтому команда Close является эффективным средством освобождения памяти, особенно когда закры- вается окно с большим документом Однако надо помнить, что бывшие в нем определения (например, значения переменных, введенные функции пользователя и т.д.) сохраняются в памяти, даже когда окно закрыто Не рекомендуется использовать более десятка окон. Опыт показал, что иногда при заполнении всех окон вместо команды Close удобнее просто задать выход из системы с помощью команды Exit Тогда все окна, содержащие документы, не подвергнутые модификации, закроются автоматически (см. ниже). Закрытие модифицированных документов сопровождается запросом о том, желаете вы сохранить документ в измененном виде или нет. При таком способе закрытия окон, разумеется, теряются все введенные в них определения — иногда это, кстати, и хорошо Затем надо вновь загрузить Maple V. Быстро закрыть окна по одному без выхода из системы Maple V можно, нажимая клавиши Ctrl и F4 (каждое такое нажатие закрывает очередное окно).
Запись установок (Save Setting и Auto Save Setting) 47 2.8. Запись установок (Save Setting и Auto Save Setting) Для записи конфигурации системы со всеми выполненными установками в позиции File главного меню предусмотрены две операции. Операция Save Setting используется для ручной записи текущей конфигурации системы. Другая операция Auto Save Setting в сущности является опцией. Она включается, если установить перед ее именем знак птички. В этом случае конфигурация новой системы будет записываться автоматически при завершении работы. Никаких окон эти операции не выводят. 2.9. Печать документов (Print) Операция Print... (Печать) служит для запуска печати. Нередко эта операция используется как основная для печати, если формат страницы и установки принтера были обеспечены ранее и устраивают пользователя. Операция Print ... имеет в инструментальной панели дублирующую пиктограмму с изображением принтера. При запуске операции Print... появляется диалоговое окно, показанное на рис. 2.6. Это окно также не принадлежит системе Maple V — используется стандарт- ное окно печати Windows. Ilewrk K7I3'I Пряляр Имя См0пая С-ас*йл«е Выбряи по p«un»t«o Г<иое Тл HPLaseJ«4l Порт СРП Зэмгт.и Г ПритъвФаия Печввгь Котам (• fee стр»я«»ы (9999) Число г опий F 3 гс^сГ" r|5F ОК | | Рис 2 6 Окна печати н установки параметров принтера Есть возможность вывода из окна печати диалогового окна установки параметров принтера. Поскольку различные принтеры имеют различное программное обеспе- чение (драйверы) печати, вид окна рис 2.6 может заметно отличаться от приведенного для известного лазерного принтера Hewlett Packard Laser Jet 4L. В связи с этим воздержимся от детального описания данного окна — тем более, что функции его элементов довольно очевидны. При печати прежде всего следует установить тип принтера — Windows позволяет осуществлять печать с помощью принтеров нескольких типов. Один из них задан как рабочий (основной). В диалоговом окне можно указать диапазон страниц печати, число копий и разрешение принтера. В целом диалог с компьютером при осуществлении этой операции прост и нагляден. При печати, как правило, сохраняется вид исходного документа. Разумеется, если он многостраничный, то печатаются отдельные страницы. На экране дисплея они
разделены характерной пунктирной линией, которая принтером не печатается Современные принтеры (особенно лазерные и струйные) имеют более высокое разрешение при печати, чем разрешение дисплея Поэтому качество отпечатан- ного документа у них заметно выше, чем видимое на экране. Для получения цветных распечаток, особенно графиков с цветной функциональной окраской, следует применять цветные принтеры. 2.10. Предварительный просмотр страниц печати (Print Preview) Даже одна страница большого документа не видна полностью на экране дисплея. Поэтому перед печатью полезно просмотреть расположение элементов документа на странице. Для этого служит команда Print Preview... (предварительный просмотр), которая выводит контрольное окно с изображением будущей напеча- танной страницы (рис. 2.7) Imo Ih Вм» 1Л» Fm> Л37». ДПу.| ITtfcromll | JgCxOQT | latloSWP ||ф И opto V 9 20 Эв Рис 2.7. Предварительный просмотр страницы печати На окне просмотра имеется ряд кнопок управления просмотром: 1 » и « Смещение области просмотра для больших документов + и - Увеличение и уменьшение области просмотра 100% Установка 100% размера документа в окне просмотра Full Page Просмотр страницы целиком Facing Установка области просмотра для двух страниц (левой и правой) | Cancel Отказ от операции Работа с этими кнопками очевидна и не имеет смысла описывать ее более подробно. Отметим лишь, что только после устранения недостатков, видных при предварительном просмотре, стоит начинать печать страницы.
Установка параметров принтера (Printer Setup) 49 2.11. Установка параметров принтера (Printer Setup) Печать документов — важная возможность системы. В общем случае она предполагает установку параметров принтера. Для этого служит операция Prin- ter Setup... (Установка принтера). При ее исполнении появляется диалоговое окно, показанное на рис. 2.8, в центре экрана. Рис 2 8 Диалоговое окно установки параметров печатаемой страницы. Следует отметить, что это окно принадлежит системе Windows и установленному в ней драйверу принтера. Поэтому вид окна для разных принтеров может отличаться от приведенного, поскольку его вид определяется загруженным драй- вером соответствующего принтера. 2.12. Выход из системы (Exit) Операция Exit (Выход) используется при полном окончании работы с системой. Перед этой операцией необходимо побеспокоиться, чтобы все загруженные ранее документы, подвергавшиеся редактированию и модификации, были сохранены на диске с помощью команд Save As... или Save. Тогда при использовании операции Exit можно наблюдать последовательное исчезновение окон документов. Если пользователь забыл записать какой-либо документ на диск, система сообщит об этом, выдав запрос. Нужно ответить Y. если документ нужно сохранить, и N. если сохранение не требуется. После выхода из системы Maple V происходит возврат в среду Windows. Не следует применять эту команду, если вам необходимо временно выйти из системы. Тогда лучше свернуть Maple V в пиктограмму, активизировав курсором мыши кнопку с жирной горизонтальной чертой в конце титульной строки окна. Можно также воспользоваться переключателем программ Windows, нажимая клавиши Alt и Tab и выбирая программу по названию, появляющемуся в верхней части экрана. Исклю- чением из этого правила является описанный выше прием очистки всех окон с помощью команды выхода из системы. При этом выход из системы и ее повторная загрузка займут меньше времени, чем последовательная очистка всех окон.
Глава 3. Редактирование документов 3.1. Общие приемы редактирования документов (Edit) Большая часть процессов редактирования производится непосредственно с ото- бражением объектов документов в текущем окне редактора Разумеется, редакти- рование возможно только после ввода в текущее окно редактора одного или ряда объектов — ячеек активного (текущего) документа В противном случае часть операций редактирования осуществить будет нельзя и в меню редактирования Edit (Правка) такие операции будут указаны затененным шрифтом (надписи видны как бы в тумане). Оставив на потом описание некоторых деталей ввода (например, выделение частей объектов, перемещение курсора по объектам и др.), рассмотрим операции, вводимые при активной позиции Edit главного меню (рис. 3.1). 3 Ft ml 4 s*toohor» «о tM ctcfcvd Лп^с«| NCM ||фМ«Ы«У | gr<lOT ] | ft 658 Рис 3 I Экран системы при активной позиции Edit главного меню Как видно из рис. 3.1. позиция Edit главного меню выводит подменю, содержащее различные операции редактирования. Они делятся на ряд групп. Первая группа содержит следующие операции: Undo Delete Ctrl+Z Отменить последнюю операцию редактирования. Cut Ctrl+X Переместить выделенное в буфер Copy Ctrl+C Скопировать выделенное в буфер Copy As Maple Text Копирование выделения в буфер в формате Maple-текста. Paste Ctrl+V Вставить выделенное из буфера в документ.
| Paste Maple Text Вставить данные из буфера в формате Maple-текста Delete Paragraph (Ctrl+Del) Стирание выделенных объектов I Select All (Ctrl+A) Выделение всех объектов документа Операции первой группы используют буфер обмена (Clipboard) Так называется специально организованная и динамически изменяющаяся область памяти в операционной системе Windows В нее могут помещаться различные (обычно предварительно выделенные) объекты и документы Буфер можно использовать для организации обмена частями документа как в пределах текущего документа, так и между различными документами и даже приложениями. Рассмотрим операции редактирования более подробно. Вторая группа представлена одной операцией: ! Find... Ctrl+F5 Найти заданную текстовую или математическую строку В третьей группе содержатся операции по работе с объектами: Insert OLE Object Вставка объектов по механизму OLE Object Доступ к указанному объекту. Show OLE Object Показать OLE-объект Четвертая группа команд представлена командой: Input Mode F5 Включение/выключение ввода текстов Эта команда позволяет менять статус строк ввода — они могут содержать подлежащие исполнению математические выражения или неисполняемые тексто- вые комментарии Именно благодаря текстовым комментариям документы Maple V приобретают достаточно наглядный вид. Наглядность документов существенно повышается благодаря возможности представления результатов вычислений (а иногда и вводимых выражений) в естественной математической форме. Пятая группа команд задает операции с ячейками и секциями документа: —: । Split or Join Разделение или объединение объектов Execute Исполнение выделенных или всех строк. Remove Output Удаление вывода для выделенных или всех строк Эта группа операций позволяет легко модифицировать вид документов, путем разделения строк и секций с ними надвое, а также путем объединения смежных строк или секций Кроме того, здесь присутствуют команды исполнения строк и удаления строк вывода 3.2. Отмена последней операции (Undo Delete) Команда Undo Delete (Отменить последнее действие) служит для устранения последней операции редактирования. Обычно она применяется, если в ходе редактирования установлено, что введен неправильный знак или неверный текст. Тогда следует отменить последнюю операцию редактирования, что и делает
52 зпп Редактирование документов команда Undo Delete Применение этой операции нередко уменьшает время редактирования, поскольку позволяет быстро устранить ошибку ввода. К сожале- нию, на более глубокий уровень, чем одно действие, эта операция не работает. 3.3. Выделение объектов и перенос их в буфер (Cut) Операция Cut (Вырезать) пересылает выделенный сплошным или пунктирным прямоугольником объект в буфер системы Windows. Выделить объект можно установив в его начало курсор мыши и начав перемешать его при нажатой левой клавише мыши. Можно также пользоваться клавишами перемещения курсора при нажатой клавише Shift. Выделенный фрагмент отмечается черным фоном и инверсией цвета входящих в него символов (рис. 3.1), на котором выделена первая группа ячеек. Пересылаемый операцией Cut объект поступает в буфер, а его изображение в окне редактирования исчезает (это напоминает вырезку рисунка и его наклейку в другое место — буфер). Таким образом операция Cut стирает выделенные объекты и переносит их в буфер. Эта команда выполняется также комбинациями клавиш Shift+Del и Ctrl+X. На рис. 3.2 показан результат выполнения операции Cut — видно исчезновение выделенного фрагмента (группы) в документе. > Hit -t)/t (1/3) t t«O. » infinity) _____________________________________________________ ________ T«w ОЛ № ’«• Л6Э«» JBnr«| нем ||4>м«р1«у | Дьсоот | фрояме | Рис.3.2. Окно рис 3.1 после выполнения операции Cut Щелчок левой клавишей мыши при курсоре, помещенном за пределы выделенных объектов, снимает все выделения. 3.4. Копирование объекта в буфер (Сору) Операция Сору (Копировать) полностью аналогична Cut, но с одним существен- ным различием — выделенный объект (или блок объектов) переносится в буфер и не уничтожается в окне редактирования. Эта операция обычно используется в том случае, когда нужно перенести заданный объект в несколько документов.
оставив при этом оригинал на своем месте. Или если нужно объект или блок объектов повторить в другом месте документа. Особенно полезна операция Сору при составлении документа из частей других документов — рис. 3.3. Если переключиться в другое окно, то скопированная и помещенная в буфер информация может быть помещена в это окно с помощью операции Paste (Вставить), описанной ниже. Ей («й ]пмй Qptnra fcfefc айда n TSI; । .inw i-ui апФнлa • - --3 F~3 Bjzlul IF.jBl QDInnn Демонстрация работы с системой Maple V еализация 4 2 an; x) co*( x) United |11 Демонстрация работы с системой Maple V реализация 4 1ва 00i (К Fme 717М4К NCM |[фм«р1еУ ДГМооюН | gDoDOT | | Ol 711 b Рис 3.3 Пример переноса выделенной в одном документе части выражения в окно другого документа. К сожалению, более продвинутые средства переноса объектов из одного окна в другое (например, перетаскивание их мышью по методу Drag and Drop «Тащи и отпускай») в системе Maple V R4 не реализованы. Но они уже появились в новейшей реализации Maple V R5 — см. главу 14. 3.5. Копирование объекта из буфера в окно (Paste) Операция Paste (Вставить) переносит изображения объектов из буфера в окно и располагает их по текущему местоположению графического курсора. Помещенные в окно объекты выделяются (рис. 3.3). Для снятия выделения достаточно установить курсор в свободное поле окна и нажать левую клавишу мыши (или нажать клавишу Enter). Эта операция выполняется также нажатием клавиши F4. комбинацией клавиш Shift+Ins и комбинацией Ctrl+V. При использовании операции Paste содержимое буфера сохраняется, и команду можно использовать неоднократно, что особенно удобно при необходимости дублирования объектов, когда, например, какой-либо текст или математическое выражение используются в документе несколько раз.
3.6. Копирование в буфер в формате Maple-текста (Copy As Maple Text) Операция Copy As Maple Text (скопировать в буфер как Maple-текст) исполь- зуется в тех случаях, когда необходимо, чтобы скопированная в буфер информа- ция была представлена в формате Maple-текст. Заметим, что в этом формате математические выражения, записанные в строках ввода, копируются непосред- ственно. А другие выражения (вывода) не копируются. Это можно заметить только после вывода содержимого буфера в документ командой Paste As Maple Text (рис. 3.4). A » Hokuaa 4 НП В |гмИ QphopH Й1УЖ1.1 R141 i:: > -Л-1 lil±! Tae Ote (Ж. Fim 1ЙЖ <Hk*| t»NC NfM ||фМяй»У ЗУМсто«М1 I gtj<OQl I | <b BiB Рис 3.4 Пример использования операции Copy As Maple Text и Paste As Maple Text Обратите внимание, что текстовый комментарий в данном случае выводится стандартным шрифтом. Атрибуты (признаки) стиля, цвета и размеров символов теряются. 3.7. Вставка из буфера в документ (Paste) Операция Paste (вставить) копирует содержимое буфера, заданное командами Сору или Cut в место, указанное маркером. При этом сохраняются форматы всех объектов документа (рис. 3.5). Как видно из рис. 3.5. применение этой операции возможно не только в пределах окна одного документа, но и при переносе данных из одного окна в другое. Если данные в буфер поступили в результате исполнения операции Copy As Maple Text, то при операции Paste в документ будут скопированы данные с преобразованием их в формат Maple-текста (рис. 3.6). Обратите внимание, что стандартное представление интеграла в строке вывода превратилось в его отображение в текстовом формате.
УВЫ. ДРоССТ | ИОоЫЙР |ЕВЧМ 2106 Рис 3.5 Пример использования операции Сору и Paste у в.).». 4 ЯГ Р» Ег* VW*» |n«M Fofmef Qpftom Wrdow T«ne Ofc Bvte. О Fw 716239 <|П<С«| |»HC NCM |[^.Мм*>У умоок* | g&oDOI | jgOgSHAP | 7S3 Рис 3 6 Пример использования операции Copy As Maple Text и Paste Надо отметить, что при копировании в буфер математической формулы из ячейки вывода и переносе ее в строку ввода формат формулы меняется — она автомати- чески превращается в строчное выражение ввода. Это иллюстрирует рис. 3.7. Различные варианты преобразования форматов при использовании операций копирования в буфер и переноса данных из него в документ надо учитывать при подготовке сложных документов.
Я П ,.. »NC нем |{4>М<Й«У учииог | Дмют | j|Oo6MP J одь 809 Рис 3 7 Пример переноса формулы из ячейки вывода одного документа в ячейку ввода другого документа 3.8. Вставка из буфера в формате Maple-текст (Paste As Maple Text) Операция Paste As Maple Text служит для вставки данных из буфера с одновременным их преобразованием в Maple-текст формат. Пример применения этой операции был дан на рис. 3.4. Здесь уместно еще раз обратить внимание на потерю ряда элементов форматирования текста при выполнении данной операции. 3.9. Уничтожение выделенного объекта (Delete) Операция Delete (Стереть) служит для уничтожения объекта, на котором расположен маркер (в том числе блока выделенных объектов). При этом в буфер объекты не заносятся. Команда полезна для редактирования документов. В отличие от операции вырезки Cut. ее применение не загружает буфер и предотвращает нехватку оперативной памяти. Будьте, однако, осторожны с этой операцией — можно легко стереть нужный объект, причем в этом случае восстановить его не удастся и придется создавать заново. 3.10. Выделение всех объектов (Select All) Операция Select АП (Выделить все) выделяет все объекты. Это полезно, напри- мер, для копирования всего документа в буфер с целью создания его модифици- руемой копии. Пример применения этой операции представлен на рис. 3.4. где в верхнем окне выделены все объекты документа.
3.11. Поиск подстроки (Find) Операция Find (Найти) служит для поиска фрагментов текста или имен перемен- ных в математических выражениях. При ее выполнении появляется окошко Find с запросом искомого фрагмента — подстроки (рис. 3.8). Можно вести поиск такого фрагмента вверх или вниз. Демонстрация работы с системой Maple V реализация 4 > «lift(xln(x) 2,х) > int(l/«qrt(1-х 2),х-0..1) | ЖЫС нем ||<8>м^*.у аумстж* | ДЬсООТ I | 0*4 & ч» Рис 3 8 Поиск заданного фрагмента текста (слова «символьном») При обнаружении указанной подстроки она выделяется и маркер устанавливается в начало найденной подстроки. После этого можно приступить к ее редактирова- нию. В текстовом блоке найденная подстрока выделяется. Окошко Find имеет две опции-кнопки: Previous и Next Первая опция задает поиск от текущего положения курсора вверх до первого обнаружения подстроки. Вторая позволяет провести поиск подстроки от текущего положения курсора вниз. Если подстрока поиска не обнаружена, из динамика раздается короткий щелчок. 3.12. Вставка объекта (Insert OLE Object...) Большие возможности в создании сложных документов и в их визуализации предоставляет вставка объектов с применением механизма связи Maple V R4 с другими прикладными программами и порожденными ими данными — файлами, рисунками и т.д. При этом данные могут иметь самую разнообразную и подчас неожиданную форму — вплоть до музыкальных фрагментов или фрагментов видеофильмов. Для организации такой вставки используется операция Insert OLE Object (Вставить OLE-объект). Она выводит окно со списком тех приложений, с которы- ми возможна связь с применением механизма OLE (рис. 3.9).
Рис 3 9 Окно объектной связи с другими приложениями Объект может быть создан заново с помощью подходящего приложения. Для этого надо активизировать опцию «Создать новый». А можно в качестве объекта выбрать подходящий файл — в этом случае следует активизировать опцию «Создать из файла». Файл можно найти с помощью стандартного диалогового окна, которое появляется, если активизировать кнопку «Обзор». На рис. 3.10 показан поиск графического файла lntel.pcx с эмблемой микропроцессоров фирмы Intel Pentium MMX. й— ~~3 eJ gJIiTaJ _|Л«Й -JIWOT _IMMx«d7 _i Tkwa _J Hodboo» _)Mc5 IE _J _J MkS Me wnj ДПу.| 6»NC NC ||ф.Мм.*. Tyttomo | ДРсООГ | «jOobHAP | ШЧЧ Л 85' Рис 3 10. Поиск графического файла После выбора файлов надо решить, какой вид будет иметь пиктограмма связи с файлом — уменьшенной копии изображения или стандартного значка. Рис. 3.11 показывает пример настройки окна объектной связи на вызов объекта стандарт- ным значком. При этом с помощью окна смены значка можно подобрать значок подходящего вида.
Рис 3 11 Подбор значка для установления объектной связи. Закончив установление связи нажатием кнопки ОК в окне задания связи можно наблюдать появление в документе по месту расположения курсора значка (рис. 3.12). Если активизировать значок, то записанное в файл изображение появится в окне приложения, связанного с файлом В нашем случае этим приложением является графическая программа Imaging для Windows 95. Ф Д...:. <Пу.| trIHC NC I I lyMww I jgCcOOT I IgOo^llHlniri ЕЕЧЧ Л iOl Рис 3 12 Пример наблюдения изображения графического файла при активизации объекта Intel
Закрыв связанное с файлом приложение, можно деактивировать изображение, и оно исчезнет из окна документа. 3.13. Операции с объектами (Object) Если объект выделен (как обычно, установкой на него курсора .мыши и однократ- ным нажатием левой клавиши), то позиция Object становится активной и может даже модифицироваться в зависимости от вида объекта, с которым установлена связь. Например, если объектом является .рсх-файл, то эта позиция порождает подменю с тремя операциями: 1 Edit Редактирование объекта. । Open Открыть приложение, связанное с объектом | Print Распечатать объект. На рис. 3.13 показан вид экрана Maple V R4 при активизации позиции Edit подменю. Как видно из рисунка при этом открывается приложение, в котором можно редактировать данный объект. Гмнчрои-П I «11________________ п* аь ей» » я» лмо* ^Пуж| |>НС НС. | $>Му,У | зумкюи | gCoTOT | ДРоёЧАР |[В1ыЫ~ 1254 ft эи Рис 3.13 Редактирование графического файла — объекта вставки Редактирование файла-объекта производится в среде того приложения, с которым объект связан. Естественно, что изменение файла повлечет за собой вызов его измененного варианта. 3.14. Показ объекта (Show Object) В сложном документе бывает нелегко найти внедренный объект среди множества других объектов. Операция Show Object служит для выделения объекта прямо- угольником из пунктирных линий. На рис. 3.13 выделенный таким образом объект показан в верхнем левом углу экрана текущего документа
3.15. Включение и выключение режима ввода текста (Input mode) Maple V позволяет вводить в ячейки либо тексты, либо математические выраже- ния, записанные на языке Maple-текст, Операция Input mode служит для включения или выключения режима ввода текста. Для этого служит и клавиша F5. Если режим текстового ввода включен, приглашение в виде знака > исчезает и имеется возможность ввода текстовых комментариев с применением панели форматирования для задания параметров текста. Если этот режим отменен, то можно вводить математические выражения, придерживаясь синтаксиса языка Maple-текст, 3.16. Операции разделения или объединения объектов (Split or Join) Операции Split or Join служат для разделения или объединения объектов документа. При их исполнении появляется подменю со следующими операциями: Split Execution Group F3 Разделение строки на две. Join Execution Group F4 Соединение смежных строк. Split Section Shift+ F3 Разделение секции на две. Join Section Shift+ F4 Объединение смежных секций. Эти операции довольно очевидны и используются для редактирования документов. 3.17. Исполнение выделенных ячеек или всего документа (Execute) Операция Execute (Исполнение) служит для запуска вычислений во всех выде- ленных ячейках или во всех ячейках документа. Соответственно, она имеет подменю с позициями: Selection | Исполнение выделенных ячеек. | Worksheet | Исполнение ячеек по всему документу. | Эти операции достаточно очевидны и не нуждаются в подробном описании. Заметим лишь, что без них пришлось бы нажимать клавишу Enter для каждой исполняемой строки документа, что при больших документах довольно утомительно. 3.18. Удаление ячеек вывода (Remove Output) Операция Remove Output (Удаление вывода) служит для устранения всех ячеек вывода. Это полезно для редактирования ячеек ввода, поскольку объем документа при этом заметно сокращается. Эта операция порождает подменю с двумя командами: | From Selection | Удаление вывода только для выделенных ячеек.______I [From Worksheet Удаление вывода для всего документа. I
Рассмотрим, к примеру, документ, который был представлен на рис. 1.7 (с несколько измененной титульной надписью). После выполнения для него опера- ции Remove Output From Worksheet, документ принимает вид. показанный на рис. 3.14. | Mapte V Release 4 |<1е»м>1 Я Г* У*** И**1 Qphom Нас Демонстрация работы с системой Maple V реализация 4 [> int < l/scjrt (1 х ?) х-0 1) (> Int (еж(>< t)/t (1/3) t-0 infinity) [> vj1u«x<") [> T*w QOt «им » Fim ПЛЛ I Рис 3.14 Документ после удаления всех ячеек вывода. Заметим, что документ можно вернуть к исходному виду, исполнив операцию Execute Worksheet, описанную выше.
Третья группа опций управляет показом некоторых объектов документа: Show Innisible Characters Показ невидимых (управляющих) символов Show Section Ranges Shift + F9 Показ областей секций Show Group Ranges Показ областей групп. В четвертой группе содержатся следующие опции: Expand All Sections Расширение всех секций Collapse All Sections Коллапс (свертывание) всех секций Действие всех перечисленных опций подробно описано ниже. Рекомендуется пользоваться опциями по мере действенной необходимости в них, поскольку исходный вид интерфейса системы тщательно продуман и соответствует потреб- ностям большинства пользователей. 4.2. Управление показом панелей инструментов (Tool Ваг) Панель инструментов (Tool Ваг) служит для быстрого управления системой без постоянного обращения к операциям главного меню. Она позволяет вводить наиболее часто используемые операции нажатием одной кнопки на панели инструментов. Назначение всех кнопок этой панели было описано выше и представлено на рис. 1.11. Несмотря на удобства, предоставляемые панелью инструментов, в ряде случаев она не нужна. Например, для ввода входных данных и их редактирования достаточно иметь на экране панель форматирования. Панель инструментов полез- на при общей отладке документов, в начале открытия нового документа, загрузки имеющегося документа, записи документа на диск, печати документа и т.д. В ряде случаев она просто отнимает часть места, нужного для лучшего обзора документа. Опция Tool Ваг управляет показом панели инструментов. Если против ее имени установить жирный знак птички, то панель инструментов будет видна. При отсутствии знака птички она будет отсутствовать. Для установки такого знака удобнее всего поместить курсор мыши на позицию Tool Ваг подменю View и нажать левую клавишу мыши. Повтор этих действий снимает знак птички. 4.3. Управление показом панелей форматирования (Context Ваг) Панель форматирования в Maple V R4 является контекстно-зависимой. Это означает, что ее вид зависит от того, в какой части документа находится маркер ввода и что именно редактируется в данный момент. Выше был приведен вид этой панели для двух случаев — редактирования текстов и математических выраже- ний в строках ввода. Свои панели форматирования имеют и графические объекты. По указанной причине панель форматирования названа Context Ваг. Опция Context Ваг задает показ или отсутствие панели форматирования для заданного режима редактирования. Панель будет видна, если установить (напри- мер, мышкой) знак птички против имени этой операции в подменю View главного
меню. Поскольку панель форматирования весьма удобна для оперативной работы, единственным мотивом временного удаления ее является необходимость высво- бодить побольше места на экране дисплея для наблюдения рабочего документа. Не стоит забывать, что это же дает просто увеличение разрешающей способности видеосистемы ПК. например, переключение ее с режима 640x480 пикселей на режим 800x600 пикселей, возможный у всех современных видеоадаптеров и дисплеев. Режимы с еще большим разрешением возможны только при использо- вании достаточно дорогих дисплеев с размерами экрана по диагонали не менее 15 или 17 дюймов. 4.4. Управление показом строки статуса (Status Line) Строка статуса, как отмечалось, выводит контекстно-зависимую информацию о состоянии (статусе) системы в данный момент времени. В ряде случаев ее можно считать элементом контекстно-зависимой справки Опция Status Ваг служит для управления показам строки статуса. Как и для других подобных опций показ задается установкой символа птички против имени опции. При отсутствии знака птички строка статуса будет отсутствовать. Чаще всего особой необходимости в этой строке нет, хотя в начале освоения системы появляющаяся в ней информация полезна и облегчает освоение системы. 4.5. Установка масштаба просмотра документа (Zoom Factor) Операция Zoom Factor (Фактор масштаба) задает масштаб просмотра текущего документа. Он задается в процентах относительно масштаба просмотра, заданно- го по умолчанию, который принят за 100%. Активизация позиции этой операции выводит подменю с перечнем возможных масштабов просмотра (рис. 4.2). Z» 100* 150* Sho* fn-лмЫе Oatectett сис * Show Sfdhon Rengm SMt«FS «Г. fill. хв* он-* ализация4 Со*«ри 41 2 sin(x) cos(a ) л •дгмюо— | амс NO I gttaOOT I at'dSHAP I 2 4t 4 В в «0 Рис 4 2 Установка масштаба просмотра документа
Заодно на рис. 4.2 показано, как будет выглядеть документ при установке масштаба просмотра в 200%. Нетрудно заметить, что все символы документа увеличились при этом в размерах вдвое. Эта возможность безусловно полезна для пользователей с ослабленным зрением или для учителей, желающих показать примеры решения задач в среде Maple V крупным планом для группы учащихся. Для оперативной установки масштаба удобно использовать комбинацию «горя- чих» клавиш — клавиша Shift плюс цифровые клавиши от 1 до 6. Как отмечалось, при работе в русифицированной операционной системе Windows 95 иногда возможна подмена обозначений вторых (в паре) «горячих» клавиш иными и не главными обозначениями на них. Этот случай также иллюстрирует рис. 4.2. Обратите, однако, внимание на то. что каждому такому символу однозначно соответствует основной символ — в данном случае числа от 1 до 6. 4.6. Установка маркеров — закладок (Bookmarkers) При работе с большими документами полезно, как и при чтении книг, устанавли- вать в документах специальные маркеры — закладки. Для установки такой закладки достаточно разместить в нужное место документа маркер ввода и выполнить операцию Bookmarkers (Закладки). Это приведет к появлению подменю с позицией Edit Bookmark... (Редактирование закладки) и списком ранее созданных закладок (рис. 4.3). НГЛП |пм« Г<апм1 Qpuora frrtow Цао * lodBe * CcrtMta Демоне ZuntKt„ «ои Maple V реализация 4 boot пай Show Imwfet Ommcihi > int < I * Show Sjdon A<en, < Sho* Gm* Rnrgnr F9 > Tnt (.-T.TTTrXSSr-.------linfinfty) f> »«lue("); АЛ mxMv a Мм а bockmmt on Iha smart мир** ДПад||4.М<ф1е V -умстс* | jpNC NCM |ДГ'оООГ | ^OdSNAF | В 6* Рис 4.3. Подменю создания маркеров — закладок. В нашем случае в списке представлена единственная ранее созданная закладка с именем «Ввод интеграла». Если теперь ввести операцию Edit Bookmark..., то появится небольшое окошко с предложением ввести имя следующей закладки. Этот случай иллюстрирует рис. 4.4. Кнопка ОК вводит новую закладку, а кнопка Cancel позволяет отказаться от данной операции. После ввода очередной закладки она попадает в список
Установка маркеров — закладок (Bookmarkers) 67 закладок данного документа, который виден при активизации позиции Bookmar- kers подменю View (рис. 4.5). MaarTWii№iMiwi(nB < — Демонстрация работы с системой Maple V реализация 4 > d4tf(ain(x) 2 х). п Add > Int (схр( t)/t ( О ----~41 1/3 > valua("): -тумсиж* ; >»Nt NCM I Дм»! l^jthSW I ES«jf ; a Рис 4 4 Окно ввода очередной закладки 1м ОЪ ВИ* V Flw ЛКЖ | -уМс*— I И>НС хм |Додот IgtHtw I BiM ATй» Рис 4 5 Пример использования маркера — закладки При активизации закладки строка, в которой она установлена, размещается в верхней части окна редактирования и маркер ввода устанавливается в то место, которое определено закладкой. Таким образом закладки — эффективное средство для быстрого перехода в отмеченные ими места документа.
4.7. Управление показом невидимых символов (Show Invisible Characters) В любом документе незримо присутствуют различные невидимые управляющие символы — например, символы перевода строки или задания пробелов Это хорошо известно работающим с текстовыми процессорами класса Word под Windows. Иногда полезно вывести все эти символы — например, если вам неясно, сколько пробелов стоит между какими-то словами. Для вывода невидимых символов служит опция Show Invisible Characters (Показ невидимых символов) — рис. 4.6. Ее можно также ввести, активизируя кнопку в панели инструментов с изображением управляющего символа перевода строки 1| *’nta> Нее Демонстрация работы с системой Maple V реализация 45 ||ан|шв О 1 1 _ <| ( t ) И (1/i), I О infinity) Я е 1-АЗ t U t«w аоа FlM rtfSW ДПтсж||4>Ма|4»У ЗУМскж* | 1УНС НСМ | gOoC-OT I .gdaSKAP | 524ч Л ’13 Рис 4 6 Вил документа с выводом невидимых управляющих символов Помимо символа перевода строки наиболее часто встречающимся невидимым символом является символ пробела в виде точки на середине строки. По числу точек между словами можно судить о том. сколько пробелов установлено между словами. Свои символы имеют операция табуляции и другие операции, встречаемые в материалах документов Maple V. 4.8. Управление показом областей секций (Show Section Ranges) 4.8.1. Понятие о секциях и подсекциях Как уже отмечалось, документ Maple V состоит из отдельных ячеек (в оригинале групп — Groups). Они выделяются слева длинными и тонкими квадратными скобками. Есть еще один способ выделения ячеек — объединение их в секции.
Секция начинается с кнопки со знаками + и - (рис. 4.7). Они показывают, что можно делать с секцией — открыть ее или, напротив, закрыть. . у н«1— 4 МОИ 3 (й |n>ert Fcfnui QfMm -l tf| Xj IO|^lH)gin "И 'llГдГтТс»]я*]7]ГГПх||j] g ]ж|.>| I _ __ Демонстрация создания секции и подсекции [ Ввод секции (операция Section а позиции Insert главного меню; в [> int(x*«xp( х).х) • (-») I-*) -хе - е Ввод подсекции (операция Subsection в позиции Insert главного меню) S > diff (и Hi (х)/х, к) со»(х' 1»(х) ~ 2 Я Тми 001 Вуй« (Ж Free 71ИЧЖ Ji Пест Цфмяи» V умсотсе | кем | ДОоООТ | I Л »Т6 Рис. 4.7. Пример документа с секцией и подсекцией. Способ создания секций и подсекций указан на рис. 4.7 и мы в дальнейшем опишем его более подробно при рассмотрении операций Section и Subsection позиции Insert главного меню. Секции и подсекции выгодно отличаются от ячеек тем. что они могут быть при необходимости закрыты и представлены только кнопкой со знаком ♦+». Таким образом, в секции удобно помешать различные вспомогательные вычисления, которые не стоит обозревать постоянно. Хотите посмотреть на них — активизи- руйте кнопку и содержимое секции появится под ней с выделением вертикальной чертой (рис. 4.8). Секции весьма удобны и для подготовки документов в форме электронных книг. В этом случае секции снабжаются текстовыми заголовками и по существу являются главами книги, а подсекции — параграфами. Этот способ представления документов нашел широкое применение в сети Internet, где он (наряду с гипер- текстовыми и гипермедиа ссылками) используется при создании страниц — сайтов. Реализация Maple V R5 позволяет готовить и сохранять на диске документы в формате HTML, поддерживающем форму представления электрон- ных документов. 4.8.2. Управление показом областей секций Итак, обычно секции и подсекции выделяются вертикальной чертой, заканчиваю- щейся коротким горизонтальным штрихом. Это позволяет судить о размерах области экрана, представляющей секцию — особенно если секция большая и начало ее находится в одном экране документа, тогда как конец может оказаться в другом экране.
•S Mdplr V Relcnte 4 |i net с «и mi J Я P* £л У*** I™* r4m* Qpaom Нас ^Igl Ml Демонстрация создания секции и подсекции [ Ввод сещяа ^опершим Section • позиции Iniert главного меню) а Г> lnt(>««xpC-x).x) (-*) (-») -Ж • -И Ввод подсекции (операция Subsection а позиции Insert главного меню) а Тт 00а Е)Ш V Г<а> Л ТОМ». ДПасаЦфМавааУ ЗУ Мота» | t>NC ХСМ | ДОоСОТ | -jjboSHAP | 907 Рис 4.8 Пример документа рис 4.7 с закрытой подсекцией Тем не менее в окончательно отлаженном документе необходимость в примене- нии линии показа области секции или подсекции отпадает. С помощью опции Show Section Ranges (Показать области секции) можно управлять показом линий выделения областей секций и подсекций. Если эта опция включена установкой знака птички, то линии показа областей секций и подсекций видны (рис. 4.7). Если же знак птички снять, то эти линии исчезнут (рис. 4.9). Обратите внимание, что линии выделения групп остаются. Ввод секция (оперши* Section в позиции Insert глинного меню) ’> 1п1(ж*вжр( к), к) (->) (-л) -л и — • Ввод подсекции (оперши* Subsection в позиции Insert гяивиого меню) S > сП f Г (в 1п (ж )/ж , к) соц ж) кп/х) Рис 4 9 Вид документа рис 4 7 при снятии показа областей секции и подсекции
4.9. Управление показом областей ячеек (Show Group Ranges) Опция Show Group Ranges (Показ областей ячеек) служит для управления показом областей ячеек (групп), т.е. длинных квадратных скобок, обрамляющих слева ячейки. Если против имени этой опции стоит знак птички, то линии показа областей ячеек видны (рис. 4.7. и 4.9). Если птичку убрать, то эти линии исчезают (рис. 4.10), где убраны линии выделения как секции и подсекции, так и ячеек. ЙЕВ51ИИЕ в Е* У** |пм« ГЧПЧ< Ослоп-. gnto. в»4> -If I xl w то-гаи гтагсд, Демонстрация создания секции и подсекции Ввод секи ям (операция Sectton • позиции Insert пивного меню) 9 > lnt(x*exp( х),х) (-х) (-х) -хе - е Ввод подсекция (опершие Subsection в позиции Insert главного меню) > rtitf(stn(l)/i,i) co»(xl пп(х) —ж 2 X > ___________________________________ Той ОСИ б|М> СК Гп» Л6ЯЖ Д|1уж||<Ь>Мм^«V ТУМом* I B1»L NCM I go«oo: I Hdosmp I Me Рис 4 10 Документ рис 4 9 после удаления линий показа областей ячеек Убирать линии показа областей ячеек целесообразно, если документ уже отла- жен. В таком документе необходимость показа областей выделения ячеек, секций и подсекций отсутствует, хотя иногда их разумно оставлять, так как они способ- ствуют систематизации содержимого документов. 4.10. Закрытие всех секций (Collapse All Sections) Все секции и подсекции документа можно закрыть, используя операцию Collapse All Sections. К примеру, если применить ее к документу, показанному на рис. 4 7. то документ примет вид, показанный на рис. 4.11. Документ с закрытыми секциями (и подсекциями) занимает на экране (и распе- чатке принтером) минимальное место. При этом, естественно, содержимое секций и подсекций не видно. 4.11. Раскрытие всех секций (Expand All Sections) Для раскрытия всех секций служит операция Expand All Sections. Она откры- вает и все подсекции. К примеру, если применить эту операцию к документу, показанному на рис. 4.11, то он вернется к исходному виду (рис. 4.7).
V ЗУМццмл I нСМ IgDcOOT Тм 00> ИЖ ОК Г«я Л72ИК | j П »1Л Рис 4 11 Документ рис 4 7 при закрытии всех секций. Таким образом Maple V имеет достаточно простые, но в то же время полные, средства по управлению видом пользовательского интерфейса (окна) системы. Это позволяет пользователю настраивать интерфейс под привычные ему возмож- ности и обеспечивать комфортную работу с системой.
Глава 5. Вставка объектов в документ 5.1. Обзор операций позиции Insert главного меню Документ системы Maple V R4 состоит из различных объектов — текстовых областей, областей ввода, ячеек, параграфов, секций, подсекций и т.д. Некоторые из них формируются автоматически по мере ввода и исполнения документа. Но, в позиции Insert (Вставка) главного меню сосредоточены основные операции по обеспечению вставок различных объектов в редактируемый документ. Это позволяет существенно модифицировать документ и добиться его большей выразительности. Операции вставки разделены на две группы. В первой группе содержатся следу- ющие операции: Гтех( Input Ctrl + Т Установка режима ввода текста. | j Maple Input Ctrl + BM Установка режима ввода выражений. | Во второй группе содержатся следующие операции: ^Execution Group ]Paragraph Исполнение ячеек, расположенных до или после маркера. Вставка текстовой области (параграфа). [Section Вставка кнопки секции. [ Subsection Вставка кнопки подсекции. | | Math Input Вставка входного выражения в математической форме. | | HyperLink... Вставка гиперссылки. | Перейдем к более подробному рассмотрению этих операций. 5.2. Установка режима ввода текста (Text Input) Вставка текстовых областей уже неоднократно рассматривалась. Данная опера- ция в подменю Insert реализует вставку с помощью средств главного меню. При этом в строке, в которой установлен маркер ввода исчезает приглашение > и можно сразу же начинать ввод текстового сообщения или комментария. Напоми- наем, что эта же операция вводится нажатием функциональной клавиши F5. Текстовая область носит характер комментариев. Входящие в нее математические выражения не эволюционируют и не вычисляются. 5.3. Установка режима ввода выражений (Maple Input) Операция Maple Input в позиции Insert главного меню превращает текущую строку в строку ввода математических выражений. В начале строки появляется приглашение к вводу в виде значка >, после чего можно начинать ввод выраже- ния, используя возможности строчного редактора и синтаксис Maple-языка. Кнопка со знаком «х» в начале панели форматирования позволяет представить вводимое выражение в естественной математической форме, если таковая воз-
можна. Однако редактирование вводимого выражения выполняется в поле редак- тирования панели форматирования. 5.4. Исполнение ячеек до и после маркера (Execution Group) Обычно исполнение ячеек документа обеспечивается (при наличии в них маркера ввода) нажатием клавиши Enter. Однако для больших документов такое поочеред- ное исполнение неудобно. Поэтому введено средство исполнения группы ячеек. Операция Execution Group обеспечивает вывод подменю с двумя опциями: Before Cursor Ctrl 4- К Исполнение части документа до маркера | After Cursor Ctrl + J Исполнение части документа после маркера. Исполнение соответствующей части ячеек документа ведет к выводу результатов в ячейки вывода (если выражения в ячейках ввода завершаются знаком «точка с запятой»). По-видимому, это и дало основание поместить их в данное подменю вставок. Ввиду очевидности указанных операций дальнейшее пояснение их не требуется. 5.5. Вставка текстовой области (Paragraph) Для вставки строки для текстовой области служит операция Paragraph. Она создает строку без приглашения >, в которую можно вводить текст. Единствен- ным отличием этой операции от операции Text Input, является то, что она вставляет новую строку, не меняя статуса имеющихся строк. При вводе длинных текстов число строк ввода автоматически увеличивается. 5.6. Вставка кнопки секции (Section) Операция Section (Секция) служит для установки кнопки со знаком задающей начало секции. После этого можно начинать создание секции, которая (как и обычная часть документа) может состоять из различных объектов — текстовых комментариев, строк ввода, строк вывода, графиков и других секций (подсекций). Как отмечалось, секция служит для создания специально выделенной группы ячеек, которые могут скрываться или, напротив, выводиться при активизации кнопки секции. Кнопка может модифицироваться, превращаясь в кнопку откры- тия секции со знаком «+». Рис. 4.7 иллюстрирует создание секции. Благодаря возможности использования кнопок секций документы Maple V имеют форму электронных документов. 5.7. Вставка кнопки подсекции (Subsection) Подсекцией называют секцию внутри другой секции. Создавая подсекции можно строить документы со сложной древообразной структурой, напоминающей разде- лы книги с хорошей рубрикацией. Это может оказать большую помощь в создании электронных вариантов книг и обучающих программ на базе среды Maple V R4. Операция Subsection создает кнопку секции внутри уже созданной секции. Все, сказанное о секции, распространяется и на подсекцию. В частности, рис. 4.7 показывает создание секции, внутри которой создана подсекция.
5.8. Вставка входного выражения в математической форме (Math Input) Иногда желательно задавать входные математические выражения в естественной форме с применением обычных математических символов. Как уже отмечалось, кнопка в начале панели форматирования ввода с символом «х» позволяет преоб- разовать входные выражения на Maple-языке в обычные математические форму- лы. Но речь шла об уже готовых выражениях ввода. Операция Math Input позволяет наблюдать за построением формулы по мере подготовки ее описания на Maple-языке. Вначале эта операция вставляет в строку ввода прямоугольник с красным знаком вопроса. Теперь в поле выражений панели форматирования можно записывать выражения на Maple-языке одновременно наблюдая создание формулы. 5.9. Вставка гиперссылки (HyperLink...) Еще одна возможность украсить документы и сделать их более удобными в работе и более современными заключается в создании гиперссылки. Гиперссылка это текстовая надпись, подчеркнутая снизу. Она может быть связана с: • с файлом любого документа (опция Worksheet:); • с заданной страницей справочной системы (опция Help Topic:); • с «книжной» закладкой в документе (опция Book MarkrK- Для создания гиперссылки надо установить на место будущей ссылки маркер ввода и исполнить операцию HyperLink.... При этом появится окни еаязи гиперссылки с указанными объектами, показанное на рис. 5.1. Пример соз. Для с от дли к я гт операцию Нуре главного меню а <жие создания Та* Q01 «ИМ № Г ж П&27» ДГМСТЖ | Рис НС | Дсоот 31М& па Рис. 5.1. Пример создания гиперссылки В этом окне надо задать название гиперссылки (в виде короткой текстовой надписи) и выбрать одну из трех опций, перечисленных выше. Если вы намерены
Глава 6. Операции форматирования 6.1. Обзор операций подменю Format Операции форматирования служат для придания объектам документа и ему в целом определенного стиля путем изменения как общего вида объектов, так и ряда частных их характеристик, например, цвета и размера надписей, выбранного набора шрифтов и т.д. При этом возможна подстройка под «вкус и цвет» любого пользователя и подготовка документов с их распечатками высокого полиграфиче- ского качества. Стиль является центральным понятием для современных докумен- тов, будь то документы текстового процессора класса Word или системы символьной математики Maple V. Операции форматирования в подменю Format (Формат) разбиты на четыре подгруппы. В первой подгруппе содержится одна, но довольно мощная операция: [Sty lei... fУстановка стилей для всех объектов | Во второй подгруппе имеются три наиболее распространенные опции изменения стиля надписей: Italic Ctrl + I За мние надписей курсивными символами Bold Ctrl + В Задание надписей полужирными прямыми символами Underline Ctrl + U Задание надписей символами, подчеркнутыми снизу В третьей группе заданы операции: [Paragraph... I Character... Форматирование параграфа Форматирование шрифтов И, наконец, в четвертой группе имеются операции: Indent Ctrl + . Ввод строки с маркером в секцию Outdent Ctrl + , Вывод строки с маркером из секции. I Рассмотрим применение операций форматирования. 6.2. Установка стиля (Styles) Операция Styles (Стили) является основной, поскольку задает стили для всех объектов. Единство стилей документов важно при включении их в отчеты, курсовые и дипломные проекты, диссертации и иные документы. Придерживаться определенных стилей — это правило хорошего тона при работе как с текстовыми процессорами, так и математическими системами. Именно поэтому ориентация на определенный стиль подготовки документов стала неотъемлемой частью пользовательского интерфейса системы Maple V.
Операция Styles выводит диалоговое окно Style Management с перечнем объек тов, стиль которых подлежит установке или модернизации (рис. 6.1). Рис. 6.1 Окно задания и модернизации стилей. В большинстве случаев пользователя Maple V R4 вполне удовлетворят стили, заданные по умолчанию. Более того, надо помнить, что задание своего стиля неизбежно означает повышение риска несовместимости при обмене документами Maple V как между отдельными пользователями, так и с применением сетей — например, Internet. Поэтому без особой на то необходимости изменять стандарт- ный стиль любого объекта не рекомендуется. Однако бывают принципиальные обстоятельства, когда изменение стиля необхо- димо. Например, при выводе титульных надписей для графиков Maple V R4 использует стандартный англоязычный шрифт Courier New. При задании в вводе русскоязычных надписей Maple V R4 воспринимает их вывод как ошибку, поскольку набор символов при вводе не соответствует набору символов, отведен- ному под вывод. Таким образом, для организации вывода русскоязычных надписей необходимо сменить набор символов, т.е. изменить стиль. Покажем, как это делается. Вначале в списке стилей надо выбрать наименование Title, после чего активизировать кнопку Modify,... теперь появится окно Para- graph Style с опциями установки стиля для Title — рис. 6.2. В этом окне надо активизировать кнопку Font..., с помощью которой можно выбрать любой набор символов из числа наборов, инсталлированных при установ- ке Windows 95 и ее приложений. Появится новое окно (рис. 6.3) для выбора стиля шрифтов — включая выбор их набора. В нашем случае достаточно заменить набор по умолчанию Courier New на набор Courier New Суг. Он, в дополнение ко
всем латинским буквам и многим символам, содержит символы кириллицы, т.е. буквы русского языка. После этого задание титульных надписей для графиков на русском языке перестает быть проблемой. Рис, 6.2. Окно установки параметров стиля для параграфа. Рис.6.3 Окно выбора стиля шрифтов
Разумеется, в понятие стиль входит не только выбор набора шрифтов, но и изменение из размера, начертания, цвета и т.д. Все это можно изменять, используя описанные выше окна. При необходимости можно изменения стилей записать в специальный файл, используя кнопку Save As Default При этом указанные изменения становятся принятыми по умолчанию. Кнопка Revert As Default позволяет вернуться к типовым стилям, которые заданы разработчиками системы. Если стили подверглись небольшим изменениям, то можно записать только их с помощью кнопки Merge Existing. Наконец, окно стилей позволяет задавать свои новые стили. 6.3. Прочие средства форматирования текстовых надписей 6.3.1. Оперативное изменение стиля символов (Italic, Bold, Underline) Следующие три операции позиции Style главного меню служат для оперативного задания стиля символов в текстовых строках. Это: Italic Ctrl + I — задание надписей наклонными символами: Bold Ctrl + В — задание надписей полужир- ными символами и Underline Ctrl + U — задание надписей символами, подчеркнутыми снизу. Заметим, что все они полностью дублируются кнопками В, / и JJ на панели форматирования. При оперативном редактировании документов использование этих кнопок более удобно. 6.3.2. Форматирование параграфов (Paragraph) Для форматирования параграфов служит операция Paragraph..., Она сразу выводит окно установки параметров параграфа. Это окно было показано на рис. 6.2. Правила работы с этим окном уже были описаны выше, так что не станем их повторять. 6.3.3. Форматирование символов (Character) Операция Character... служит для форматирования символов, и прежде всего выбора их набора, размера и цвета. Она выводит окно, показанное на рис. 6.3. О работе с этим окном также говорилось выше. 6.4. Операция ввода в секцию (Indent) Ранее описывалась операция вставки кнопки секции. При ней сама секция пуста и ее надо вводить. Операция Indent (или комбинация клавиш Ctrl + .) позволяет оформить секцией уже введенные ячейки. На рис. 6.4 показано такое оформление для третьей ячейки документа рис. 4.6. На возможностях применения секций мы уже останавливались ранее, и их не стоит снова повторять. 6.5. Операция вывода из секции (Outdent) Операция Outdent (или комбинация клавиш Ctrl + ,) отменяет оформление ячейки в виде секции. Она действует в том случае, если маркер ввода стоит в ячейке, оформленной как секция. Например, для случая, показанного на рис. 6.4,
применение этой операции к третьей ячейке приведет к восстановлению исходно- го вида документа, показанного на рис. 4.6. > Int (ехр(-t)/t (1/3). t-0 Infinity) (*) е — о V НЫмм4 Рис 6 4 Применение операции Indent для третьей ячейки документа рис 4 6.
Глава 7. Работа с опциями и окнами 7.1. Обзор опций позиции главного меню Options Помимо ряда уже рассмотренных опций в позиции Options главного меню сосредоточены средства для установки некоторых глобальных опций для ввода к вывода документов. При активизации этой позиции появляется подменю, имею- щее следующие опции и операции: Replace Output Управляет характером вывода Insert Mode Устанавливает режим вставки при вводе. Output Display Устанавливает режимы показа результатов вычислений Assumed Variables Контроль за предполагаемыми переменными. Plot Display Управление отображением графики. С помощью этих опций можно подстроить систему на наиболее приемлемые формы вывода результатов вычислений без задания специальных опций в составе функций системы. Однако последние могут отменять опции, заданные с помощью меню. 7.2. Управление выводом (Replace Output) Опция Replace Output задает вывод результатов вычислений, заданных в ячейке, в одно и то же место. Это означает, что если входные данные меняются, то при включенной опции первый результат вычислений появляется на месте исходного выражения, а каждый последующий результат замещает предыдущий. Если же опция отключена, то каждый новый результат будет помещаться в новое место, т.е. в документе будут выведены подряд (сверху вниз) все результаты вычислений. Для включения опции достаточно установить против ее имени жирный знак птички (как это делается уже описывалось). Не следует применять опцию Replace Output в том случае, когда желательно знать суть промежуточных преобразований и самих исходных выражений, поскольку они (а возможно, и предшествующие результаты преобразовании) исчезают. 7.3. Установка режима вставки новой ячейки (Insert Mode) Эта опция, будучи включенной, обеспечивает при нажатии клавиши Enter ввод новой пустой ячейки. Если опция выключена, то такая вставка не осуществляет- ся. Для включения опции достаточно установить знак птички напротив ее имени. Как и предыдущая опция, она работает как переключатель — при одной активи- зации (например, мышью) опция включается, а при другой — выключается. Если работа с системой происходит в форме простейшего диалога по типу «задать вопрос — получить ответ», то рекомендуется установить режим вставки новой
ячейки. При этом по окончанию вычислений в последней ячейке тут же появля- ется новая пустая ячейка для новых вычислений. 7.4. Установка опций вывода (Output Display) Операция Output Display выводит подменю, имеющее три опции, влияющие на вид результатов вычислений — вывода: Linepr int Notation Вывод в одну строку (как в Maple-языке). Character Notation Вывод в виде формулы.______________________________ _ Typeset Notation Вывод в виде обычной математической формулы. Рис. 7.1 наглядно иллюстрирует эти три формы вывода. Последняя форма наиболее наглядна и задается по умолчанию. * Maple V Reiedie 4 (oHdiip mi| FIO О a Eh C* * У"» I™* Qphm tfrxfc» t!»c .Igl x| Примеры вывода разного типа d Здесь вывод типа lanepnrit NoUton > int(xintx)/х,x-0..J); int fsinW /«,x • 0 .. 1) Здесь вывод типа Character Notihon > Inf(ein(x)/x,r-0 1) • 1 I nnixi I -------dx I X z 0 Л здесь вывод тип» Typeset Notanon. > Int (ain(x)/x, x—0. . 1) • -t «00 . ------Д» X J0 1 ДИгстЦфМир!» V HeSn-м» Г | 'У мсгомК Wort flmyww | d 004 9 Ж 00 Рис. 7.1. Демонстрация вывода в трех формах Первая форма наиболее компактна, но менее всего наглядна. Вторая форма имитирует построение формул с помощью отдельных знаков, расположенных на разных уровнях (строках). Эти две формы позволяют использовать Maple даже в том случае, когда используются устройства вывода (дисплеи и принтеры), рабо- тающие только в текстовых режимах. Третья форма позволяет представить результат вывода, там где это возможно, в виде обычных математических формул с применением типовых математических знаков — интегралов, производных, сумм, произведений, квадратных корней и т.д В большинстве случаев именно эта форма вывода является наиболее нагляд- ной. Как отмечалось, нажатием кнопки с символом «х» в панели инструментов документа можно и вводимое выражение представить в виде обычной математи- ческой формулы, если это возможно, поскольку далеко не все однострочные функции системы Maple V R4 можно представить таким образом.
7.5. Контроль за предполагаемыми переменными (Assumed Variables) На переменные в системе Maple V могут быть наложены различные условия. Для этого используется специальная функция assume (условие). Например, если переменной х нужно придать статус только положительной, то для этого доста- точно исполнить команду assume(x>0). Будем называть такие переменные пред- полагаемыми. поскольку предполагается, что они имеют какие то дополнительные признаки, помимо тех, что связаны с их типом. В подменю Assume Variable позиции Options главного меню имеются три опции, управляющие контролем признаков предполагаемых переменных: Trailing Tildes Включает маркировку предполагаемых переменных знаком тильды ’. No Annotation Включает опцию «без аннотаций*, т е запрещает вывод аннотации Phrase Включает опцию вывода комментарии (фраз) для предполагаемых пере- менных Предполагаемые переменные в выводе обычно обозначаются значком тильды после их имени. Он и отображается при включении опции Trailing Tildes по умолчанию. Однако с помощью опции No Annotation можно отключить как это обозначение, так и короткий текстовый комментарий, который сопровождает предполагаемые переменные. Наконец, опция Phrase включает вывод таких комментариев. Рис. 7.2 наглядно иллюстрирует применение этих опций. ОпцилНо AsnotMK«включен* > ж»2 Опция РЬгаяе включена > х«-3 tw аса Eyto а. гйе ябжж. Jgllioj jflthjMCcciawHP || ^ Марй V R«W*»* * I ES^'i 8!в Рис 7.2 Применение опций контроля предполагаемых переменных Благодаря применению предполагаемых переменных облегчается реализация ряда алгоритмов, критичных к выбору переменных. Например, если использовать вычисление квадратного корня без привлечения понятия о комплексных числах,
то на численные значения переменных надо наложить условие их положительно- сти Контроль за статусом таких переменных и дают описанные опции. 7.6. Управление показом графики (Plot Display) Графические результаты могут быть представлены прямо в документе в ячейках вывода или в отдельных окнах. Это обеспечивается двумя опциями подменю Plot Display Inline Вывод графиков в ячейках вывода Window Т7 1 Вывод графиков в отдельных окнах. 1 На рис. 7.3 показан пример вывода двух графиков — один выводится с примене- нием опции Inline в ячейку документа (сразу после ввода), а другой с применени- ем опции Window в отдельное окно. Какой из этих двух вариантов предпочтительнее, зависит от пользователя системой. Рис 7 3 Пример построения двух графиков с их выводом в отдельные окна. Следует отметить, что из всех окон (документов или графиков) в данный момент активным может быть только одно окно. Если это окно графическое, то для него выводится своя панель инструментов, позволяющая менять вид графика и неко- торые опции, используемые при его построении. Кстати говоря, запись заданного жжумента на диск возможна только при активном окне этого документа. 7.7. Управление построением двумерных графиков Двумерные графики обычно строятся с применением функции plot. На рис. 7.4 в окне документа представлено назначение кнопок инструментального ящика дву- верной графики. Кнопки обозначены номерами под ними, а в окне документа дано их краткое назначение.
Рис 7 4. Окно двумерного графика с его панелью инструментов. Панель инструментов графиков появляется только при активном окне графики или при выделении графика в ячейке документа. В противном случае доступа к панели инструментов графики нет. 7.8. Управление построением трехмерных графиков Аналогично построению двумерных графиков задание построения трехмерных графиков приводит (при включенной опции Window) к появлению на экране окна трехмерной графики. Оно содержит свою панель инструментов (рис. 7.5) с кнопками задания наиболее распространенных опций для построения ЗО-графи- ков. Следует отметить, что панели инструментов графических окон дают доступ лишь к части опций построения графиков. Более подробно состав и назначение таких опций будет рассмотрено в дальнейшем — см. главу 13. Читателю настоятельно рекомендуется опробовать действие кнопок быстрого управления форматами различных графиков, что позволит быстрее освоить огромные возможности Maple V в создании цветных и монохромных графиков самого разного типа. 7.9. Установка расположения окон (Window) 7.9.1. Установка расположения окон документов (Cascade, Tile, Horizontal, Vertical) При серьезной работе с системой Maple V пользователь нередко вынужден работать одновременно с несколькими документами. Удобства такой работы зависят от того, как окна расположены в пределах экрана. Maple V дает возможность расположить их любым известным способом (за исключением разве что кругового расположения).
!ШаааааЭЕИиааа|тИР 5 F<M 501 ЖЖ ДПг-»| фо«»ссосто»«J^MwteVRrt. Долот| g|Dc6HM> | ШчН 574 Рис 7 5 Окно 31>графика и назначение кнопок панели инструментов Основные команды по установке расположения окон сосредоточены в позиции Windows главного меню. Первые четыре команды управляют расположением вгон документов: Cascade Каскадное расположение окон. Tile Равномерное расположение окон Horizontal Расположение окон по горизонтали. Vertical Расположение окон по вертикали. Каскадное расположении окон напоминает стопку карточек, сдвинутых так, чтобы были видны их титульные строки. Такое расположение окон показано на рис. 7.6. Подобное расположение окон удобно, если в них предусмотрена титульная строка. При этом активным является только то окно, которое находится как бы сверху. На нем видна часть других ячеек, впрочем тем меньшая, чем больше документов было введено. При исполнении операции Tile устанавливается равномерное расположение огон, показанное на рис. 7.7. При этом каждое окно занимает примерно равную часть общей площади экрана и в нем видна часть документа. Эту часть (область просмотра) можно менять с помощью линеек прокрутки. К сожалению, при большом числе окон область просмотра настолько мала, что работать с докумен- тами при таком расположении окон становится неудобно. Равномерное расположение окон достаточно удобно при работе с двумя (или. при дисплее с большим экраном, с тремя) окнами. Оно может быть полезно, например при переносе содержимого отдельных ячеек с одного документа в другой. К сожалению режим переноса с помощью мыши «Drag and Drop» (Тяни и Отпускай) в Maple V R4 пока не реализован, поэтому для переноса содержимого ячеек надо
копировать их в буфер в одном окне, а затем, переключившись в другое окно, вставлять содержимое буфера в нужную ячейку, используя команду Paste Этот режим уже есть в реализации Maple V R5 — см. главу 14. Рис 7 6 Каскадное расположение окон документов 1Ы«««г 4 т™ ОШ Etta В JBoy«| Цфмэдму sfmoctoiiw | gocoo- | iso? Рис 7 7 Равномерное расположение окон При использовании команды Horizontal окна расположены на экране в виде узких горизонтальных полос (рис. 7.8). Этот вариант расположения окон, как и
каскадное расположение, дает обзор титульных надписей документов — если область просмотра каждого документа расположена сверху окна. Вй □QDlLlOn Хнирокснмшмя рядом Гейлора [Задание трех Г Тор с обмоткой Примеры вычисления производной и интегралов Демонстрация работы с системой Maple V реализация 4_______________________ Too Q0* «йм » Гт «ЙО» й0.юоосто V ЗУ««row»w |gMMT I ^ОоеЛ»Р GS5-X '5» Рис 7 8. Горизонтальное расположение окон Команда Vertical задает расположение окон в виде вертикальных полос. Такое расположение окон представлено на рис. 7.9. Такое расположение окон удобно, если содержимое ячеек документов представлено короткими выражениями. ПГЯ11П.,',’Т—-<У Г Ч [й Горл* Црмгм ^rdow оо« еим » <1Тщ| ЦфИм-МУ зуноомнмт | До«ОСт | ДРп ЧМ» | «’0 Рис. 7.9. Вертикальное расположение окон
Следует отметить, что описанным командам подчиняются только те окна, которые развернуты Расположение области просмотра при записи документов на диск не фиксируется и при загрузке любого документа область просмотра вначале уста- навливается сверху документа 7.9.2. Приведение в порядок пиктограмм свернутых окон (Arrange Icons) Загруженные, но свернутые окна представлены бирками-пиктограммами Они могут перемещаться курсором мыши по всему свободному полю экрана, поэтому в общем случае пиктограммы оказываются хаотично разбросанными по всему экрану (рис. 7.10). •S V R«4e«ie 4 ЯПП f* умн 1лмп Гчтв Qstom Дак) I 1®11Я [хГтК>1[-I&I [31 Rilxl Л1 Г<5 Рис. 7 10 Хаотическое расположение пиктограмм свернутых окон Для наведения порядка с расположением пиктограмм можно, разумеется, пере- местить каждую из них в удобное место. Но это довольно утомительное занятие. Можно воспользоваться специальной командой Arrange Icons, которая автомати- чески наводит порядок с расположением пиктограмм закрытых окон, строго располагая их снизу экрана. Действие этой команды показано на рис. 7.11. Как и окно, каждая бирка-пиктограмма имеет титульную строку с четырьмя своими маленькими пиктограммами. Первая из них открывает меню управления, а три другие используются соответственно для свертывания пиктограммы, ее развертывания в окно и закрытия. В действительности свертывание невозможно, так как пиктограмма уже представляет свернутое окно 7.9.3. Закрытие всех окон одновременно (Close АН) Операция Close АП (Закрыть все) служит для закрытия всех окон одновременно. Эта команда выполняется только в том случае, когда все документы не модифи- цировались или были записаны на диск после модернизации. Если какой-либо
документ модифицировался, то в центре экрана появится предупреждающее сообщение в специальном окошке (рис. 7.12). Разумеется, такое окно будет появляться столько раз. сколько имеется модифи- цированных документов. | ДОоЗМАР | [35/4 1S12 Рис 7.11 Экран после исполнения команды наведения порядка с расположением пиктограмм QE |lO*VQl|t) , 10ч F от< 1ГрИЬГК 1рлфккиТ spacecurve((oos(t)"(10 Ъ)). 2*оои ( t♦ Аппроксимация pi Вычислим предстшлеиие функции яп(х) в форме ряд» ТеВлора 6-го ворлдм в окрести ости точки х"0 > with(plots) : > opts :• t-0. . 2«P1, on apo Hit» > pl - tubeplot ((cos(t) . sin style—PATCH) > p2 tubeplot((0,cos(t) . s , T«w 17. бЯх 1727» IKI'jW <Пуга.1 ДОюдсапо Ц^МаЫ» V ДГМпокКН/ | gbcOO^ | ^DoSHAP | 160» Рис 7.12 Экран системы с окном в центре, предупреждающим о модификации закрываемого документа.
7.9.4. Закрытие всех окон справочной системы (Close All Help) В Maple V R4 использована многооконная справочная система с гипертекстовыми ссылками. Поэтому при работе с ней экран системы довольно быстро оказывается забитым окнами справочной системы. Разумеется, их можно последовательно закрывать одно за другим, но это очень неудобно. Операция Close All Help обеспечивает закрытие разом всех окон справочной системы, что позволяет продолжить работу с текущим документом. Окна осталь- ных загруженных в систему документов находятся в свернутом состоянии и на них операция Close All Help влияния не оказывает.
Глава 8. Справочная система Maple V R4 8.1. Обзор позиции Help главного меню Как уже отмечалось, в позиции Help главного меню сосредоточены средства управления справочной системой Maple V или справочной базой данных. Издавна система Maple V имела мощную и подробную справочную базу данных, рассчи- танную на интенсивную работу с ней пользователя и удовлетворение всех его запросов на подробную справочную информацию — даже в условиях отсутствия типовой документации на систему в виде обычных книг. В реализации Maple V R3 справочная база данных имела очень удобную древооб- разную структуру контекстно-зависимого поиска. При этом в ходе поиска инфор- мации вначале указывались ее общие признаки, затем более частные — и так до пяти ступеней. В реализации Maple V R4 эта структура изменена и справочная база данных стала похожей на подобные справочные базы данных других приложений под операци- онную систему Windows. Однако по-прежнему остались главные достоинства справочной системы: обширность сведений, огромное число практических приме- ров применения системы, легкость поиска информации и разнообразие средств поиска. Основные операции по работе со справочной системой Maple V R4 сосредоточены в позиции главного меню Help (Справка) (рис. 8.1). Ц|«ЧН* I aift Itr JipUy И ЬМкмп чет ДП>с»[ fcju»cicoc.n»«. | »у v/ad J i '12 Рис. 8.1 Начало работы со справочной системой Maple V R4 Она содержит следующие команды и операции:
Contexts Включение раздела справки по контексту Help on Context Ctrl + Fl Оперативная справка по контексту Topic Search... Предметный поиск по заданному образцу. Full Text Search... Предметный поиск с полным обзором текста справки. History... Вывод истории справочного поиска Save to Database... Формирование базы данных Remove Topic... Восстановление базы данных предметного поиска Using Help... Использование справочной системы. Ballon Help Включение всплывающих «шпаргалок» About Help Вывод окна с информацией о системе Рассмотрим детально работу справочной системы Maple V R4. Для краткого знакомства с ней рекомендуется просмотреть материал по применению справоч- ной системы в главе I. Следует отметить, что ценность справочной системы для наших читателей намного снижается из-за того, что она написана на английском языке. Тем не менее обширность справочных данных и множество примеров делают работу со справочной системой принципиально необходимой. В первую очередь она дает представление о синтаксических правилах применения всех функций и команд системы, входящих в ее ядро и расширения, а также о примерах их использования. 8.2. Справка по контексту (Contexts) Команда Context выводит диалоговое окно помощи по контексту, или ин»<е — тематической помощи (рис. 8.2). Рис. 8.2. Начальное окно справочной системы при поиске справки по контексту.
Как видно из рис. 8.2. в этом окне можно найти следующие разделы помощи: Vbat's New Описание новинок системы Mathematics Graphics Описание математических возможностей системы. Описание графических возможностей системы Programming Описание средств программирования системы System Описание системных возможностей. Index Доступ к индексному каталогу справочной системы Каждый раздел открывается активизацией кнопки перед его заголовком со знаком «•*». указывающим на то, что раздел может быть открыт. При этом появляется перечень подразделов, а кнопка меняет знак «+» на знак «-». указывающий на то, что раздел можно закрыть. При активизации гипертекстовой ссылки на любой подраздел (напоминаем, что гипертекстовые ссылки задаются подчеркнутыми снизу символами, словами или фразами) появляется окно с его содержанием. Как правило, в конце статьи каждого подраздела содержится список слов (гипертек- стовых ссылок) на близкие по тематике определения. Это позволяет легко расширить поиск нужных сведений. 8.3. Оперативная справка по контексту (Help on Context) Оперативная помощь по контексту — сравнительно новая возможность справоч- ных систем. Она особенно удобна при разборе примеров, содержащих незнакомые пользователю функции и иные объекты системы Maple V. Полезна она и в том случае, когда пользователь в общем знаком с применяемым объектом, но хотел бы уточнить его свойства и синтаксис задания. Для получения оперативной справки по контексту достаточно установить курсор иыши на соответствующий объект, например на имя какой-либо функции, и открыть подменю Help. В нем можно обнаружить, что операция Help on Context кодифицируется и приобретает вид Help on где на месте многоточия оказывается слово, по которому ищется справка — на рис. 8.3 показан пример, когда справка ищется по функции diff. Теперь выполните операцию Help on — тут же появится окно со справкой об объекте. Эту команду можно исполнить и нажав одновременно клавиши Ctrl к Fl. Пример справки по функции diff представлен на рис. 8.4. Как видно из рис. 8.4, справка по контексту позволяет судить о назначении функции, синтаксических правилах ее задания и примерах применения. Реализо- вана она по единым правилам справочной системы и содержит открываемые или закрываемые разделы и гипертекстовые ссылки. 8.4. Предметный поиск (Topic Search) Операция Topic Search (предметный поиск) — одна из самых мощных. Она выводит окно поиска (рис. 8.5), содержащее в верхней части поле ввода образца. Образцом может быть слово (например, имя функции) или даже часть слова. В ине под этим полем появляется список всех объектов системы Maple V R4, в названия которых входит заданный образец.
ROC [йМя!а>1 L Г №1 (П Гг1тТг>1 [_ Демонстрация работы £ омеге* > diff(sln(x) ? х) lope €—ch £ui TmI Smcb > int(l/aqrt<l x 7).X~O. 1). SMtoQaMbaia Qxnove Took UMxjHrt. > Int (exp(-t)Zt <!/.<) t-o 4t»dMid«v (-/) r ------Л 1/3 о Д1'У»| ftOwco | yucatad ||фМ«*Г~ gPdOOI | jjtxAHAP | J ДОч 122 Рис. 8 3 Начало оперативного поиска данных по функции diff. •Ь Мсц*> v 4 |Mt) япп з > I.» 1.. ««м». а* Е Function: ifforDiff - ГчйкеайаЬсипсРхпиНийёгепЬааи: Calling Sequence: adiJjSj “1 «MRi.xl.x2, ,».* LMRa.xi.x2, .a) xffic [xl, x2, , xr.|) WRa. [xl. «2. .xaD Parameters: a -an algebraic expreanon xl, x2.........xn - tl«Ml H Examplet: [> ditf(«in(x) i) eo<x) f> dill (st»<a> y) в Г> x«3j -cm(a> ДПуж| feo.mco | ЗУМК.ОМ» ||<£>Ы^Й gOoOQT | jOojHtf* | wa< ззг Рис 8.4 Пример справки no функции diff Теперь остается из заданного списка слов выбрать нужное, что приведет к появлению окна справки с информацией по данному слову. Например, для слова diff будет выведено окно справки, которое уже было представлено на рис. 8.4. Окно предметного поиска в правой части имеет четыре кнопки со следующим назначением:
Предметный поиск с полным обзором текста справки (Full Text Search) 97 Рис 8.5. Окно предметного поиска (Topic Search) Search Поиск по образцу. Apply Вывод окна выбранного раздела справки при сохранении окна поиска ОК Фиксация поиска (выводится окно с выбранным р—ином и исчезает окно поиска). Cancel | Отказ от работы. Кроме того, имеется возможность задания двух опций: Same Window Auto-Search Установка однообразия окон. Автоматический поиск по образцу по мере ввода последнего. Заметим, что если опция Auto-Search включена, то кнопка Search перестает действовать, поскольку при этом необходимость в ней пропадает. 8.5. Предметный поиск с полным обзором текста справки (Full Text Search) Предметный поиск с полным обзором текста справки (Full Text Search) — еще один эффективный метод получения справочной информации. Он напоминает ранее рассмотренный, но ищется вхождение заданного образца во все темы справочной системы (а не заданные одним словом). При этом выводится окно, показанное на рис. 8.6. В этом окне использованы те же кнопки управления, что и для окна поиска справки по образцу. Опция Goodnees of Math включает вывод статистики повторяемости образца в темах справочной системы. 8.6. Работа с просмотренными ранее разделами справки (History) Было замечено, что пользователь, занятый решением определенного класса задач, обычно неоднократно возвращается к просмотру ранее просмотренных разделов
справочной системы. Для того чтобы не искать их по-новому, справочная система имеет список просмотренных в данном сеансе работы с системой разделов справочной системы. Он выводится операцией History (История) (рис. 8.7). Рис 8 6 Окно предметного поиска с полным обзором текста справки Рис. 8 7 Окно ранее просмотренных разделов справки Достаточно найти в этом окне нужный раздел справки и нажать кнопку ОК, чтобы вывести его на экран дисплея. Кнопка Apply позволяет просматривать окна разделов без удаления окна ранее просмотренных разделов справки. 8.7. Модернизация справочной базы данных (Save to Database и Remove Topic) В справочной базе данных предусмотрена возможность ее расширения путем записи в заданный ее раздел текущего документа, составленного пользователем Для этого по операции Save to Database выводится специальное окно, в котором надо указать соответствующие данные о модернизируемом разделе справки Ограничимся этим указанием, учитывая, что для нашего пользователя модерни-
заиия англоязычной справочной базы данных явно отдает «экзотикой». Для удаления разделов базы данных служит операция Remove Topic. 8.8. Справка о справке (Using Help) Сама по себе справочная база данных является самостоятельным, достаточно сложным и отдельно функционирующим приложением. Поэтому предусмотрена короткая справка по работе с этой базой. Она вводится операцией Using Help (Использование справки). Рассматривать эту часть справочной системы не имеет смысла, поскольку ей, по существу, посвящена данная глава. 8.9. Включение всплывающих «шпаргалок» (Ballon Help) На первом этапе знакомства с пользовательским интерфейсом системы Maple V удобно использовать всплывающие «шпаргалки*. Они вводятся опцией Ballon Help Для получения «шпаргалки» по какому-либо объекту достаточно устано- аить на пару секунд курсор мыши и задержать его на этом объекте пару секунд. Пример вывода всплывающей «шпаргалки» показан на рис. 8.1 — она указывает на назначение позиции подменю Help — Ballon Help 8.10. Вывод окна с информацией о системе (About Help) Последняя команда позиции Help главного меню About Help выводит окно с информацией о версии Maple V. На рис. 8.8 показано такое окно для полной университетской версии системы Maple V R4. Как отмечалось, университетская версия системы свободно распространяется на CD-ROM и по сети Internet. Однако она может использоваться пользователями только для целей образования, но не для коммерческих целей. Рис 8 8 Окно с информацией о системе Maple V R4
Глава 9. Основные понятия входного языка системы Maple V 9.1. Выражения и основы работы с ними 9.1.1. Алфавит Maple-языка и его синтаксис Maple-язык является входным языком общения с системой Maple V и одновре- менно языком ее программирования. Входящие в него средства (прежде всего операторы и функции) подобраны настолько полно и удачно, что при решении подавляющего большинства типовых математических задач от пользователя не требуется знаний даже основ программирования. Достаточно составить алгоритм решения нужной задачи и подобрать набор нужных для его реализации функций и иных средств Maple-языка. В тоже время Maple-язык один из самых мощных языков программирования математических задач, намного превосходящий по своим возможностям такие известные языки программирования, как Fortran, Algol, PL, Basic, Pascal и др. Это связано прежде всего с возможностью использования в его программных модулях почти 2500 (в реализации R5 2700) операторов, команд и функций, входящих в ядро, основную библиотеку (см. Приложение I) и в пакеты расширений (см. главу 12) системы Maple V. В тоже время относящаяся к традиционному программиро- ванию часть Maple-языка реализована с помощью довольно скромного набора специальных знаков и зарезервированных слов. Maple-язык является как бы саморасширяющимся и легко адаптируемым к решению конкретных задач любого пользователя. Свыше 90% всех определении системы Maple V. в частности все пакеты расширений и огромная SHARE-библи- отека пользователей, написаны на этом языке. Поэтому знание этого языка является определяющим в серьезном изучении системы Maple V. Ниже Maple- язык описывается как типичный язык программирования. Алфавит Maple-языка содержит 26 малых латинских букв от а до г, 26 больших латинских букв (от А до Z), 10 арабских цифр (от 0 до 9) и 32 специальных символа (арифметические операторы +. -, *, /, знак возведения в степень ‘ ) и др. Все они будут рассмотрены в данной главе. Имеется пять пар альтернативных символов: • и •• | и (| 1 и |) ( и (• ) и *) К специальным одиночным и составным знакам относятся элементы синтаксиса языка: # Фиксатор выражения, предотвращающий вывод результата вычисления в ячейку вывода Фиксатор выражения, дающий вывод результата вычисления в ячейку вывода Указатель программного комментария. Ограничитель строки (например, string ).
= \ Оператор присваивания (например, х.=5>. I Пустой оператор Указатель типа переменной (например, n::integer или z::compiex). Комментарии в программе, не выводимые в ячейки вывода, задаются после символа # В них допустимо использовать все символы кодовых таблиц, что важно при вводе русскоязычных комментариев, использующих символы кирилли- цы Применение последних для идентификаторов (имен) объектов недопустимо. Зарезервированные слова используются для создания условных выражений, циклов, процедур и управляющих команд. Список зарезервированных слов дан ниже. Зарезервированные слова языка программирования ! # ERROR assignment break by do done elif else empty ft for from function if in next od proc quit read restart save separator stop then while К зарезервированным относятся также слова, испол>зуемые при работе с множест- вами (intersect, minus, union), логические операторы (and, not и or) и оператор модуля mod. Зарезервированные слова имеют особый статус. Их нельзя использовать в качестве идентификаторов для переменных, функций, процедур и т.д. Совокупность правил, по которым записываются определения всех объектов Maple- языка, называются его синтаксисом. Некоторые особенности синтаксиса полезно знать сразу, в начале освоения системы. Например, то. что знак - (минус) имеет двойное значение. Применительно к одному числу, переменной или выражению он меняет их знак. Однако два знака минус подряд (например, в записи —3) задавать нельзя Другое назначение знака минус — создание операции вычитания, например, 5-2 или а-b. Соответственно двойное назначение имеет и знак +. причем число без знака считается положительным, так что +5=5. При вводе действительных чисел с порядком для ввода порядка используется символ е (например lOelOO или 10е-100). Для изменения общепринятсго приоритета вычислений используются круглые скобки, в них же задаются параметры функций и процедур. Более подробно синтаксис Maple-языка рассматривается ниже. Некоторые операторы представлены двумя символами — например оператор, присваивания переменным их значения := содержит двоеточие и знак равенства. В таких операторах между символами недопустим знак пробела. Однако его можно использовать между отдельными частями выражений; так, (а+Ь)/с экви- валентно (а + Ь) / с. По набору операторов и функций Maple-язык намного превосходит любой универ- сальный язык программирования. Это позволяет, наряду с обычными программ- ными конструкциями, задавать множество специальных конструкций, подчас резко упрощающих запись математических выражений. К примеру, возможна работа со списками имен функций. Язык Maple V имеет множество операций над символьными выражениями и гибкий аппарат создания и преобразования типов данных и результатов вычислений.
Для большинства пользователей возможности языка Maple V кажутся явно избыточными, так как большинство наиболее распространенных операций в нем реализуется несколькими способами. Однако каждый пользователь волен выби- рать из множества возможностей именно те, которые ему необходимы в его конкретной предметной области. Поскольку таких областей превеликое множест- во, обширные возможности Maple V лишними не являются. 9.1.2. Выражения и их ввод Фактически Maple V — это система для манипулирования с математическими выражениями. Выражение в системе Maple V — это объект, вполне соответству- ющий сути обычного математического выражения. Оно может содержать опера- торы, операнды и функции с параметрами. В этой главе выражения записываются на Maple-языке без использования специальных средств по их представлению в естественном математическом виде. Благодаря этому запись выражений и приво- димых примеров одинаково пригодна для любой реализации системы Maple V — даже под MS-DOS. Такая запись получается наиболее короткой, ее можно выводить и распечатывать без применения графических средств. Кроме того, она соответствует виду, принятому в справочной системе Maple V, Однако пользовательский интерфейс системы Maple V R4 под Windows позволяет представлять как вводимые, так и выводимые выражения в самых различных формах, в том числе в естественном математическом виде (примеры этого многократно приводились и будут приведены в дальнейшем). Maple V имеет многочисленные функции преобразования форматов, позволяющие менять форму представления данных. Там. где нужна повышенная наглядность примеров, они будут приводиться в виде копий экрана. Выражения в Maple могут эволюционировать, т.е. изменяться в соответствии с заданными математическими законами и правилами преобразования. Например, функция упрощения выражений simplify способна упрощать многие математиче- ские выражения, записанные в качестве ее параметра (в круглых скобках): > simplify(sin(x)A2+cos(xl*2); 1 > simplify((aA2-2,a*b+bA2)/(a-b)); а - b Символьные преобразования и вычисления математических выражений более подробно будут рассмотрены в следующей главе. Для выполнения любых математических операций необходимо обеспечить ввод в систему исходных данных — в общем случае математических выражений. Для ввода таких выражений и текстовых комментариев служат два типа строк ввода — для ввода математических выражений и текстовых комментариев. Переключение типа текущей строки ввода осуществляется клавишей F5. Строка ввода математических выражений имеет отличительный символ >, а строка ввода текстов никаких призна- ков не имеет. В строке ввода может быть несколько выражений. Фиксаторами их могут быть символы ; (точка с запятой) и : (двоеточие). Символ ; фиксирует выражение и задает вывод результатов их вычислений. А символ : фиксирует выражения и
блокирует вывод результатов их вычислений. Фиксаторы выполняют также функцию разделителей выражений, если в одной строке их несколько. Ввод фиксируется нажатием клавиши Enter. При этом маркер ввода (жирная мигающая вертикальная черта) может быть в любой позиции строки. Если надо перенести ввод на новую строку ввода, следует нажимать клавиши Shift и Enter совместно. С помощью от одного до трех знаков ” (прямые кавычки) можно вызывать первое, второе или третье выражение с конца сессии: >12:3: >1 3 > 12:3: >... 2 >12:3: 1 >2+3: »•; 5 Следует отметить, что в реализации R5 знак ", называемый ditto-оператором, заменен на знак % (процент). Особая роль при вводе выражений принадлежит знакам прямого апострофа (одиночного ’ или двойного ”). Заключенное в такие знаки выражение освобож- дается от одной пары (закрывающего и открывающего знака '): > factor(aA2+2‘a'b-bA2)": 2 2 factor(a +2ab-b )’ > tactor(aA2+2,a*b-bA2)’; 2 2 f ас tor (a + 2 a b - b ) > factor(aA2+2*a,b+bA2); 2 (a + b) Некоторые другие возможности обрамления выражений апострофами мы рассмот- рим позже. Наиболее важная из них — временная отмена выполненного ранее присваивания переменным конкретных значений. Для завершения работы с текущим документом достаточно исполнить команду quit, done или stop набранную в строке ввода (со знаком ; в конце). При всех закрытых документах экран системы модифицируется — окна документов исче- зают, экран приобретает серый фон, а главное меню имеет всего две позиции (File и Help). Позиция File дает доступ к команде открытия нового документа New или к операции загрузки документа Open.
9.1.3. Оценивание выражений Встречая выражение. Maple V оценивает его. т.е. устанавливает возможность эволюции выражения. Если выражение — скалярная переменная, то ее значение будет выведено в ячейке вывода. Для переменных более сложных типов выводит- ся не их значение, а просто повторяется имя переменной. Просто повторяются также имена неопределенных переменных. Для оценивания выражений различного типа существует группа функций, основ- ные из которых перечислены ниже: eval(array) Возвращает содержимое массива array. evalf(expr. n) Вычисляет ехрг и возвращает вычисленное значение в форме числа с плавающей точкой, имеющего п цифр после десятичной точки. evalhKexpr) Вычисляет ехрг и возвращает вычисленное значение с точностью, присущей данной компьютерной системе evalf(int(f, х=а. b>) Оценивает и возвращает значение определенного интеграла int(i,x=a Ь) evalf(lnt(f, x=a b)) Оценивает и возвращает значение определенного интеграла, заданного инертной функцией Int(f.x=a Ь) evalf(Int(f. x=a. b, digits, flag)) Аналогично предыдущему, ио возвращает значение интеграла с задан- ным числом цифр после десятичной точки digits и со спецификацией метода вычислении flag evalm(mexpr) Вычисляет значение матричного выражения mexpr и возвращает его. evalb(bexpr) Вычисляет и возвращает значения логических условий. evalc(cexpr) Вычисляет значение комплексного выражения. evalHexpr, ampl) Оценивает и возвращает значения интервальных выражений (функция должна вызываться из библиотеки). shake(expr. ampl) Вычисляет интервальное выражение. Для функции evalf параметр п задается опционально, при его отсутстии полага- ется п=Ю. т.е. вещественные числа выводятся с мантиссой, имеющей десять цифр после десятичной точки. В выражении ехрг могут использоваться константы (например, Pi. ехр( I), гамма) и функции (например, exp. In. грех, arctan. cosh, GAMMA и erf). В матричном выражении mexpr для функции evalm могут использоваться операнды в виде матриц и матричные операторы <&*,+,- и ". В комплексных выражениях сехрг наряду с комплексными операндами вида (а + 1*Ь) могут использоваться многие математические функции: sin cos tan CSC sec cot sinh cosh tanh csch sech coth arcsin arccos arctan arccsc arcsec arccot arcsinh arccosh arctanh arccsch arcsech arccoth exp In sqri • abs conjugate polar argument signum CSgn Re Im Ei LambertW dilog surd Примеры на применение функций оценивания даны ниже:
>evalh((sin<1)); 8414709848078965 >evalm(20*A+1); (21 40J ( (60 81J >1<3. 1 <3 >evalb(1<3); true >readhb(evalr) >readlib( shake) > evalr(min(2.sqrt(3))); 1/2 3 >evalr(abs(x)); (INTERVAL^. 0 . infinity), -INTERVAL^. -infinity 0)] > shake( Pi,3); INTERVALS 1102 .3.1730) В дальнейшем мы многократно будем применять функции оценивания для демон- страции тех или иных вычислений. 9.1.4. Последовательности выражений Maple V может работать не только с одиночными выражениями, но и с последо- вательностями выражении. Последовательность выражений — это ряд выраже- ний, разделенных запятыми и завершенных фиксатором; >12+3, a-b. sin(1 0); 1,5,а-b, 8414709848 Для автоматического формирования последовательности выражении применим специальный оператор $. после которого можно указывать число выражений или сдавать диапазон формирования выражений: >55. f. f. f. f. f >$1 6; 1,2, 3. 4. 5.6 >fr*2+1)$i=1 .5. 2. 5,10,17. 26 V[1], V[2J, V[3], V(4], VT5] Для создания последовательностей выражений можно использовать и функцию seq: >seq(2‘sin(x/10 0),х=0 .5); 0. .1996668333. 3973386616, .5910404134, 7788366846, 9588510772
> seq(f(1).f=[sin,cos.tan]); sln(l), cos(1). tan(1) > seq(f(1 ),f=[sin,cos,tan]); 8414709848, .5403023059, 1 557407725 9.1.5. Наборы выражений Любые выражения могут включаться также в неупорядоченные наборы. Они создаются с помощью фигурных скобок ( }: > {d.a.c.a.a.c.d.e}; {d. а, с. е) > {1+2.3.5.2+3.6}; {3. 5.6} > {'Hello’,'my1.friend!'}; {friend’, Hello, ту} Отличительная черта наборов — автоматическое устранение из них повторяю- щихся по значению элементов. Кроме того. Maple может переставлять элементы наборов. 9.1.6. Списки выражений Для создания упорядоченных наборов-списков служат квадратные скобки | ]: > [d.a.c.a.a.c.d.e]; [d. а. с. а. а. с. d. е] > [1+2.3.5.2+3.6]; [3. 3. 5. 5.6} > ['Hello'.’my'.'friend!'}; [Hello, ту, friend!] Как нетрудно заметить, элементы списков преобразуются и выводятся строго в том порядке, в каком они были заданы. Списки широко применяются для задания векторов и матриц. В ряде случаев, например, для подготовки данных для 20-графи- ков, возникает необходимость в подготовке списка парных списков — например, координат точек (х,у) графика. Для этого можно использовать функцию: zip(f. u, v) или zip(f, u, v, d) Здесь f — бинарная функция, u.v — списки или векторы и d — опционально заданное значение. Примеры применения функции zip даны ниже; >Х:«[1,2.3.4.5): > Y;=[3,2,1,2.5.35): > pare:=(X,Y}->[X.Y); pare := (X. Y) -> [X. Y] > CoordXY:=zip(pare,X,Y,2); CoordXY :« ([1. 3], [2. 2]. [3. 1], [4. 2.5], [5, 3.5]] > zip((X,Y)->X*Y,X,Y); [4, 4. 4, 6.5, 8.5]
Описанные выше преобразования выражений составляют небольшую часть воз- можностей. которые система Maple предоставляет пользователю. Некоторые другие возможности мы рассмотрим в дальнейшем (см., в частности, главу II). а пока приступим к более систематизированному обзору средств входного языка системы Maple V. 9.1.7. Метки % в выражениях и вывод выражений При выполнении порой даже простых операций результаты получаются чрезвы- чайно громоздкими. Для повышения наглядности выражений Maple V выводит их с выделением общих частей выражений и с присвоением им соответствующих меток Метки представлены символом %N. где N — номер метки. Помимо меток при выводе результатов вычислений могут появляться и другие специальные объекты вывода, например, корни RootOf. члены вида О(хп), учиты- вающие погрешность в разложении функций в ряд и обозначения различных специальных функций, таких, как интегральный синус, гамма-функция и др. Примеры этого показаны на рис. 9.1. •Ь М<ч4*> V 4 (BpjNHbf Ргагегаш, .'larauotr гпрццши , результаты d RootOe.Z -.Z-1) 12 11 42- 1 1 1 I 1 3*2 41 - l 1 3 1 5 7 ’ Kiaplify(NI) Г(Х<-1) ДПу«| -ДГ Меток» Wad од _|1^VlldMul-|. d Рис. 9.1 Примеры, в решении которых фигурируют специальные обозначения. Часто встречаются также знаки ‘ для отметки предполагаемых переменных, постоянные интегрирования и другие специальные обозначения. Такие объекты вывода будут описаны по мере их появления. 9.2. Типы данных 9.2.1. Числа и числовые константы Maple V работает с числами следующего типа: целыми десятичными (0. I, 123. -456 и т.д.). рациональными в виде отношения целых чисел (7/9, -123/127 и тд ), вещественными с мантиссой и порядком (1.23Е5, 123.4567Е-10) и комплек-
иными (2+3*1). В качестве разделителя целой и дробной части мантиссы исполь «уется десятичная точка, мнимая единица у комплексных чисел обозначается как I. Функции Re(x) и 1т(х) возвращают действительную и мнимую часть комплек- сных чисел. Примеры чисто численных операций приведены ниже: > 2+3/4; 11/4 > 2+3*4; 14 > (2+3)4; 20 >1.0/3; 3333333333 > 1/3; 1/3 > 1.234Е10; 11 .1234 10 > х:=2+7Ч; х:«2 + 71 > Re(x); 2 > lm(x); 7 Как видно из этих примеров, ввод и вывод чисел имеет следующие особенности: • для отделения целой части мантиссы от дробной используется разделительная точка; • нулевая мантисса не отображается (число начинается с разделительной точки); • мантисса отделятся от порядка пробелом, который рассматривается как знак умножения; • мнимая часть комплексных чисел задается умножением ее на символ мнимой единицы I (квадратный корень из -1); • в выводе комплексного числа знак умножения на I заменяется пробелом. Десятичная точка в числах имеет особый статус: указание ее в любом месте числа, а также в конце, делает число вещественным и ведет в переводу вычисле- ний в режим вычислений с вещественными числами. При этом количеством выводимых после десятичной точки цифр можно управлять, задавая их значение системной переменной Digits: > restart; > 12/5; 12/5 > 12./5; 24СКХХХХХЮ
>12/5.; 2400000000 >0igits:=3, Digits .= 3 > 12345678/7.; 7 .176 10 >Digits:=30; Digits:» 30 > 12345678/7,; 7 176366828571428571428571428571 10 > Digits =10; Digits := 10 >ln(2.); 6931471806 Для работы с числами Maple V имеет множество функций. Они будут рассмотре- ны в дальнейшем. 9.2.2. Контроль за числами Числа могут служить объектами ввода, вывода и константами, входящими в математические выражения Функция type(x, numeric) позволяет выяснить, явля- ется ли х числовой константой. Если да. то функция возвращает логическое значение true (ИСТИННО), а если нет. то — false (НЕ ИСТИННО). Например: >type(10, numeric); true >type(0.01, numeric); true >type(Pi. numeric); false > type(4/3, numeric); true >type(x*3, numeric); false Функцию type(x. integer). type(x, racional) и type(x, fraction) можно использовать мя оценки того, имеет ли х значение соответственно целого числа, рационально- го числа или простой дроби. 9.2.3. Преобразования чисел с разным основанием Возможна работа с числами, имеющими различное основание (base), в частности, с бинарными числами (основание 2 — binary), восьмеричными (основание 8 — octal) и шестнадцатеричными (основание 16 — hex). Функция convert позволяет легко преобразовывать форматы чисел;
> х:= 12345; х := 12345 > b:=convert(x,binary); b:« 11000000111001 > o:=convert(x.octal); о:« 30071 > h:=convert(x,hex); h:» 3039 > convert(h,decimal,hex); 12345 > convert(o,decimal, octal). 12345 > convert(b.decimal.binary); 12345 Помимо приведенных форм функция convert имеет ряд других. С ними можно познакомиться с помощью справки по этой мощной функции. В дальнейшем будет приведен ряд других применений этой функции. 9.2.4. Строковые данные Строки как тип данных — это просто цепочки символов. Они обычно использу- ются для создания текстовых комментариев. Строки должны каким-либо образом выделяться, с тем чтобы Maple-язык не отождествлял их с именами констант и переменных. Для этого строки-комментарии имеют внутренний разделительный признак, который устанавливается при их вводе в строке ввода (нажатием клавиши F5 с исчезновением знака >). В других случаях последовательность символов рассматривается как строка, если она заключена в обратные апострофы, т.е. значки '. Два апострофа подряд формируют апостроф как знак символьной строки, например ‘abc“def‘ дает строку abc'dei. Любое математическое выражение может входить в строку и, разумеется, оно при этом не выполняется: > '2+2 не всегда "четыре’"; 2+2 не всегда четыре' Кроме того, любой текст строки после знака # рассматривается как невыводимый строчный комментарий, даже если это математическое выражение. При этом он не вычисляется. Например: > 2+3. # Это пример 4+5; 5 В данном случае строка «Это пример 4+5;» не выведена в область вывода и ее можно рассматривать как программный комментарий, не выводимый при ее исполнении, но видимый при просмотре документа. 9.2.5. Списки, массивы, векторы и матрицы Как отмечалось, важным типом данных являются списки (lists). Они создаются с помощью квадратных скобок, например:
a b c d |l,2.3,4| — список из четырех целых чисел; 11.,2 .34.5] — список из двух вещественных и одного целого числа; |а,Ь.‘Привет‘| — список из двух символов (переменных) и строковой константы; |sin(x). 2*cos(x),a"2-b| — список из трех математических выражений. Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в форме; arrayla..b.s 11 — возвращает вектор с индексами от а до b и значениями в одномерном списке si, arrayla..b,с..d.s2| — возвращает матрицу с номерами строк от а до Ь. столбцов от с до d и значениями в двумерном списке s2. Примеры задания вектора и матрицы представлены ниже: аггау(1..3.|х,у.х+у|) — создает вектор с элементами х, у и х+у аггау(1..2.1..2.||a,b|.|c.d||) — квадратная матрица Двумерные списки часто путают с матрицами. Следует помнить, что векторы и матрицы создаются с помощью функции array и являются отдельным типом данных. Элементами векторов и массивов могут быть константы, переменные, выражения, списки и иные объекты. Эти элементы являются индексированными переменными, и их положение указывается индексами. Имеется множество функции для работы со списками, массивами и матрицами. Они будут рассмотрены в дальнейшем. В принципе размерность массивов, создаваемых списками, не ограничена и массивы могут быть многомерными. 9.2.6. Таблицы Еще одним важным типом данных являются таблицы. Они задают множественные данные с произвольной индексацией. Для создания таблиц служит функция table, которая в простейшем виде table() создает шаблон пустой таблицы: > tablet); tabled 1) Пустая таблица резервирует память под данные. Когда параметром функции table является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации: > table([12.34,5,x.y+z]), tabled 3 = 5 4 = х 5 = у + z 1 = 12 2 = 34 )) > S =table(((one)=1, (two )=2, (three )=3]); S:=tabled one = 1 three = 3
two = 2 I) >S[1]; S(1J > SfthreeJ; 3 > S[one]; 1 > entries(S); [3]. [2], [1] > indices(S); [three], [two], [one] В конце приведенных примеров показано, как можно выделить отдельные компо- ненты таблицы и вывести значения и индексы таблицы с помощью функций entries и indices. Следующие примеры показывают, что таблицу можно использо- вать для выполнения математических преобразований: > F := table((sin=cos,cos=-sin]): > op(op(F)); [cos = -sin. sin = cos) > F[cos)(Pi/2); -1 > F[sin](O); 1 > evalf(cos(Pi/2)); 0 > evalf(stn(O)); 0 Следует внимательно присмотреться к этим примерам, они демонстрируют замену функции косинуса на отрицательный синус, а синуса — на косинус. 9.3. Константы 9.3.1. Числовые константы Константы — это простейшие поименованные объекты, несущие заранее предоп- ределенные значения. Их имена (идентификаторы) также заранее определены в системе и не могут меняться. Подробную информацию о константах можно найти, исполнив команду ?constant. Числовые константы не имеют имени и представлены просто числами, типы которых указаны выше. Можно считать, что именем такой константы является само ее значение. Например, в выражении 2*sin(1.25) числа 2 и 1.25 являются числовыми константами. При этом указание десятичной точки делает константу действительным числом, например. 2 — это целочисленная константа, а 2. или 2.0 или 1.25 — это уже действительные константы.
9.3.2. Строковые константы Строковыми константами являются произвольные цепочки символов, заключен- ные в обратные апострофы, например. ‘Hello', 'Привет', ‘Му number' и т.д. Числа, мключенные в апострофы, например, ‘123456', также становятся строковыми константами, и подобные константы нельзя использовать в арифметических выражениях. Строковые константы представляют значения строковых перемен- ных В строковых константах можно использовать символы кириллицы при условии, что имеются соответствующие наборы шрифтов. 9.3.3. Встроенные в ядро константы Есть также ряд констант, которые правильнее считать заведомо определенными глобальными переменными: false — логическое значение «НЕ ИСТИННО»; gamma — константа Эйлера, равная 0.5772156649..; infinity — положительная бесконечность (отрицательная задается как -infinity); true — логическое значение «ИСТИННО»; Catalan — константа Каталана, равная 0.915965594.. FAIL — специальная константа (см. ?FAIL); I — мнимая единица (квадратный корень из -1); Pi — константа р=3.141.... Любопытно, что в этот список не входит основание натурального логарифма — число е. В качестве этой константы рекомендуется использовать ехр( 1). Оно отображается как жирная прямая буква е. A exp(l.O) выводит 2.71828... (что и следовало ожидать). 9.3.4. Идентификация констант Функции type(x, constant) и type(x. realcons) возвращают логическое значение true, если х представляет целочисленную или вещественную константу, и false, если х не является константой. Таким образом, эти функции можно использовать для идентификации констант, например: > type(2. constant); true >type(0 0025. constant). true > type(ln(-Pi),constant); true > type!infinity.constant); true > lype(xA3,constant); false > type(4, realcons); true > type(3+2*l, realcons); false
> type(23.5, realcons); true > type(ln(Pi),realcons); true > type(sin(2).realcons); true > type(infinity.realcons); true > type(xA3, realcons); false Имена встроенных констант (как и имена функций) защищены специальным атрибутом protected. Поэтому (без его снятия) константам нельзя присваивать какие-либо значения: > Pi; Pi >Pi:«1; Error, attempting to assign to Pi' which is protected > gamma; gamma > gamma=10; Error, attempting to assign to gamma' which is protected Стоит упомянуть о такой экзотической возможности, как задание в Maple V собственных констант, путем описания алгоритма генерации входящих в констан- ту цифр (это позволяет получать в представлении константы любое число цифр). Большинство пользователей довольствуется применением вместо таких констант обычных переменных подходящего типа. Зато пользователи-истинные математики соревнуются друг с другом в создании все новых и новых констант и алгоритмов их вычислений. 9.4. Переменные 9.4.1. Типы переменных Как следует из самого названия, переменные — это объекты, значения которых могут меняться по ходу выполнения документа. Пока мы рассматриваем лишь глобальные переменные, доступные для модификации значений в любом месте документа. Тип переменных в системе Maple V определяется присвоенным им значением, это могут быть целочисленные (integer), рациональные (racional), вещественные (real), комплексные (complex) или строчные (string) переменные и т.д. Переменные могут быть также символьного типа (их значением является математическое выражение) или списочного типа (см. далее). Для явного указа- ния типа переменных используется конструкция mame::type
где: name — имя (идентификатор) переменной, type — тип переменной, напри- мер, целочисленный integer, вещественный с плавающей точкой Float, со значени- ем >=0 nonneg, комплексный complex и т.д. 9.4.2. Идентификаторы (имена) переменных Переменные задаются своим именем — идентификатором, которое должно начи- наться с буквы и быть уникальным. Это значит, что ключевые слова языка Maple нельзя использовать в качестве имен переменных. Хотя имена ряда команд и функций можно использовать в качестве идентификаторов переменных, делать это крайне нежелательно. Ограничений на длину идентификатора практически нет — точнее, она не должна содержать более 524275 символов! Так что сложностей с подбором идентификаторов для переменных нет. Имена переменных могут содержать одну букву — например х, Y или Z, либо ряд букв — Xmin или Хтах. В любом случае имя переменной надо начинать с буквы. Некоторые символы, например знак могут использоваться в именах, например Var_l. Var_2. Не рекомендуется, однако, вводить в имена переменных знаки, обозначающие операторы — например, а/b или а-b будет истолковано как деление а на b или вычитание из переменной а переменной Ь. Имена могут задаваться в обратных апострофах. При этом они просто тождест- венны именам без апострофа: > var1:=123;var2:='Hello'; var1 :с 123 var2 := Hello >Var1;'var2'; 123 Hello Строчные и прописные буквы в идентификаторах различаются, так что Vari и varl — это разные переменные. Для проверки предполагаемого имени на уникальность достаточно выполнить команду ?name, где: name — выбранное имя. Если при этом откроется окно справки с этим именем, значит оно уже использовано в системе. Лучше воздер- жаться от его применения, так как связанная с этим именем команда или функция перестает работать, как только это имя закрепляется за какой-либо переменной. 9.4.3. Присваивание переменным значений Поскольку Maple V прежде всего система символьной математики, то по умолчанию любые переменные рассматриваются как объекты символьного типа. Благодаря этому такие переменные могут фигурировать в математических выражениях, напри- мер, таких, как sin(x)/x, без их предварительного объявления. В отличие от обычных языков программирования такое использование переменных не влечет за собой появления сообщений об ошибках и является более естественным. Для присваивания переменным конкретных значений используется комбиниро- ванный символ например: п:=1 — переменной п присваивается целочисленное значение 1; х:=123.456 — переменной х присваивается вещественное значение 123.456;
у:=17/19 name:='Piter* expr :»2*Pi/3 V.=|l,2,3| M:=IU.2.3].|4.5,6ll (:=x->x‘2 — переменной у присваивается рациональное значение 17/18; — переменной name присвоено строковое значение 'Piter*; — переменной ехрг присвоено значение выражения 2п/3; — переменной V присвоено значение списка чисел 11.2.3); — переменной М задано значение двумерного массива; — переменной f задано значение функции пользователя Цх)=х*2. Правая часть выражения присваивания определяет тип переменной. Например, она может быть целочисленной, действительной, строковой, индексированной (элемент массива) и т.д. 9.4.4. Отмена операции присваивания и команда restart Переменная, имеющая какое-либо значение, занимает в памяти намного больше места, чем неопределенная переменная. Поэтому нередко целесообразно отме- нить присваивание у тех переменных, которые в дальнейшем можно не использо- вать. Это может понадобиться и в том случае, когда какую-либо переменную с численным или иным значением нужно использовать просто как неопределенную переменную. Рассмотрим следующий пример: >х:=10; х:«10 >х; 10 > int(xA2.x); Error, (in int) wrong number (or type) of arguments Здесь не удалось вычислить интеграл с подынтегральной функцией х'2 из-за того, что переменная х уже определена ранее как целочисленная переменная со значением 10. тогда как для вычисления интеграла она должна быть необъявлен- ной или строковой (убедитесь в этом сами). Для уничтожения присваивания надо использовать следующее выражение: > х:='х'; х := х Итак, заключение имени переменной в прямые апострофы ликвидирует присваи- вание. Так что запись х:=’х’ означает, что переменной х возвращается статус неопределенной переменной. Теперь можно вычислить интеграл: > int(xA2,x); 3 1/3 х Можно сделать переменную х неопределенной и с помощью выражения вида x:=evaln(x). Это поясняет следующий пример: >х:=10; х:=10 > х;
>x:=evaln(x); х.-х >К х Для отмены присваивания значений разом всем переменным (и введенным функциям пользователя) можно использовать команду restart. Следующие приме- ры поясняют ее применение: >х.=10; х:»10 >2*х*2; 200 > restart: >х; х >2*х*2; 2 2х Следует отметить, что команда restart отменяет все предшествующие определе- ния, что иногда чревато осложнениями. Применяйте ее только тогда, когда вы уверены, что предшествующая заданной часть документа (или даже ряда доку- ментов) действительно не важна. Важно отметить, что Maple V сохраняет в памяти все определения и присваива- ния. которые были сделаны во всех загруженных в систему документах. Поэтому результаты вычислений в текущем документе могут зависеть от определений в других документах. Команда restart позволяет исключить эту зависимость. 9.4.5. Придание переменным статуса предполагаемых оператором assume IB большинстве расчетов пользователей Maple V вполне удовлетворяет статус переменных, соответствующий присвоенным им значениям. Однако серьезные расчеты предполагают, что переменные могут иметь определенные признаки; например, они не должны принимать отрицательных значений при обычном вычислении квадратного корня или логарифма числа. Для придания переменным статуса предполагаемых используется оператор assume: »ssume(x,prop); где х: — переменная, имя или выражение, prop — свойство. Следующие примеры показывают применение оператора assume: I» restart, > assume(x, positive); > х; х-
> s:=x->sqrt(x); s := sqrt > 8(2.); 1.414213562 > s(-2); 1/2 12 > is(x,positive); true > about(x); Originally x. renamed x-: is assumed to be. RealRange(Open(0),infinity) Обратите внимание, что в этом примере переменная х помечена как положитель- ная и при выводе сопровождается знаком тильды ”, что предупреждает нас о ее особом статусе. Это не означает, что она не может принять отрицательное значение. Однако с помощью функции is можно убедиться в ее особом статусе и при необходимости программным путем исключить вычисления для х<0. Кроме того, о свойствах переменной можно узнать с помощью функции about(name) . Иногда к уже имеющимся признакам надо добавить новые. Для этого использу- ется функция additionally: > assume(a.nonneg); > additionally (а<=0); > aboutfa); Onginally a. renamed a~; is assumed to be; 0 В этом примере переменной а вначале задан признак положительности, а затем а<=0. Оба признака удовлетворяются только при а=0, что и подтверждает вывод информации о статусе этой переменной функцией about(a). Для отмены переменным статуса предполагаемых используются те же приемы, что и при отмене переменным присвоенного значения. Например, запись х:«’х’ отменят статус предполагаемой для переменной х. 9.5. Операторы и операнды 9.5.1. Виды операторов Операторы во входном языке и языке программирования системы Maple V служат для конструирования выражений и применяются совместно с операндами. Име- ется пять типов операторов: binary Бинарные операторы (двумя операндами). unary Унарные операторы (с одним операндом) nullary Нульарные операторы (без операнда — это одна, две и три пары кавычек. precedence Операторы старшинства (включая логические операторы). functional Функциональные операторы
Для просмотра операторов и их свойств можно использовать команды: > ?opecators[binary) > ?operators[unary] > ?operators(nullary] > ?operators(precedence] > ?operators|functk>nal) Для изучения примеров применения операторов нужно задать и исполнить команду > ?operators[examples] Команда >?define позволяет ознакомиться с функций define, с помощью которой можно определить новые операторы. 9.5.2. Бинарные (инфиксные) операторы Бинарные (инфиксные) операторы используются с двумя операндами. В ядро Maple V включено около трех десятков бинарные операторов. Основные из них: ♦ Сложение. — Вычитание. • Умножение. / Деление. или " Возведение в степень. mod Вычисление модуля $ Оператор последовательности. • Разделительная точка Оператор композиции. @@ Повторение композиции Задание области (интервала) •ж Присваивание. Л’ Некоммутативное умножение » Разделитель выражений. \и Конкатенация (объединение). &string Нейтральный оператор. Примеры использования бинарных операторов: >2+3; 5 >2*3-10; -5 > 2*3+5; 11 >1+2/3; 5/3 > 7 mod 5; 2 >2**3; 8 >3*2;
> 3@2; 3 > 3@@2. (2) 3 > х@х; (2) х > х@@х; (х) X >х$5; X, X. X. X, X > int(xA2.x=1 .4); 21 > int(xA2,\ > x=1..5);'h'ghlj'ghli ;lg'hl gh 124/3 > S:-Hello’.' my friend!'; S := Hello my friend! Оператор композиции @@ может использоваться для создания сложных функ- ций, содержащих цепные дроби: > f:=a->1/(1+a);(f@@3)(a); 1 f := а ->------ 1 ♦ а 1 1 ♦----------------- 1 1 ♦---------- 1 ♦ а 1/6 >g:=a->1/(1+aA2);(g@@3Xa); 1 g = а ->----- 2 1 ♦ а 1 1 1 ♦---------------- / 1 \ 2 Г* ~2 2 | \ (1 ♦ а ) /
>9(2); 1/5 9.5.3. Операторы объединения, пересечения и исключения для множеств Бинарные операторы union, intersect и minus определены для множеств: union Включает первый операнд (множество) во второй intersect Создает множество, содержащее общие для операндов элементы. minus Исключает из первого оператора элементы второго. В любом случае в результирующем множестве повторяющиеся элементы устра- няются. Действие этих операторов поясняют следующие примеры. >{a.a.b.c,c.d} union {e.e.f.g}: (a. b. d. c. e, f, g} >(a,a.b.c.c,d} intersect {a.c.e.f.f.g}: {a. c) > {a,a.b,c,c,d} minus {a.d}: <b . c} Напоминаем, что эти операторы заданы ключевыми словами. 9.5.4. Унарные арифметические операторы Унарные операторы используются с одним операндом. Они могут быть префикс- ными, если оператор стоит перед операндом, и постфиксными, если он стоит после операнда. К унарным арифметическим операторам относятся следующие семь операторов: 4- Унарный плюс (префикс) — Унарный минус (префикс). 1 Факториал (постфиксный). Десятичная точка (префикс или постфикс). $ Последовательность (префикс). not логическое отрицание (префикс). % Метка (префикс). Примеры применения унарных операторов: >-х; -х >Х*<-Х). О >х*(+х); 2х >100!, 9332621544394415268169923885626670049071596826438162146859296389X5217599993 2299156089414639761565182862536979208272237582511852ЮХ 916864000000000000000000000000
> .125; .125 > 125.; 125 9.5.5. Логические операторы Логические (или Булевые) операторы указывают на логическую связь величин (или выражений). Прежде всего они представлены следующим рядом бинарных операторов; < Менее чем. <в Менее чем или равно > Более чем. >= Более чем или равно. = Равно. о Не равно. and Логическое И. ог Логическое ИЛИ Конструкции с этими операторами (например х=у) возвращают логическое зна- чение true, если условие выполняется, и false, если оно не выполняется. Кроме того, к логическим относится унарный оператор not — он представляет логическое НЕТ. Для возврата логических значений выражений с этими операто- рами используется функция е\а1Ь(условие), например: >2«2; 2 = 2 > evalbf): true > evalb(2<>2); false > evalb(not(true)); false > evalb(2=2 and 3>1); true >eval(2=2or3<1); true > evalb(x*y=y*x); true Логические операторы часто используются в управляющих структурах программ, составленных на языке программирования системы Maple V. Такое применение мы рассмотрим позже. 9.5.6. Специальные типы операторов Операторы в Maple V описывают операции по преобразованию данных, в частно- сти выражений. В свою очередь их можно отнести к данным абстрактного типа. Могут быть описаны следующие типы операторов;
• неопределенные (f); • нейтральные (&); • процедурные; • функциональные; • композиционные (@). Оператор относится к неопределенным, если он не был заранее определен. Такой оператор не выполняет никаких действий и просто повторяется в строке вывода: >Ч1.2.а); К1.2.а) Композиционные операторы (на базе знака @) уже описывались. Другие типы операторов рассмотрены ниже. 9.5.7. Функциональные операторы Функциональные операторы Maple-языка являются альтернативами функций и записываются в двух формах: Нотация Запись оператора "arrow" (стрелочная) vars —> result "angle bracket" (в угловых скобках) <result | vars> Вторая форма задания функционального оператора имеется только в ранней версии Maple V R3. Они могут использоваться для реализации подстановок. Например, запись х -> х‘2 или < х'2 | х > означает подстановку х'2 на место переменной х. Возможны и такие подстановки в множественной форме: (х.у) -> х'2 + у*2 х-> (2*х, 3*х'4) (x.y.z) -> (х*у, y*z) Ниже приведены примеры работы с функциональными операторами, записанными во второй форме (только для Maple V R3): > F := <sin(x)|x>; F:« sin >F(t); stn(t) >A:=<1>; A:« 1 ><1>(x); 1 >1(x); 1 >B := <314>; В:» 3 .14
> <3.14>(х,у); 3.14 > 3.14(х.у), 3.14 > <x>(t); t > (a*b)(t); a(t) ♦ b(t) >(a+1Xt): a(t) * 1 > (<ln(x)+1>@@2 )(t); ln(ln(t) ♦ 1) ♦ 1 > (<sin(x)>@<arcs4n(x)> )(t): t Функциональный оператор в Maple V часто используется для задания функций пользователя, что будет рассмотрено несколько позднее. 9.5.8. Нейтральные операторы, определяемые пользователем Для создания нейтральных операторов, определяемых пользователем, служит знак амперсанда &. Синтаксис нейтрального оператора следующий: &пагпе Имя оператора строится по правилам задания допустимых идентификаторов Однако в имени не должны быть цифры и следующие символы и слова: & | ( ) { I | | : : ’ * # <ENTER> <SPACE> Максимальная длина имени 495 символов. Нейтральные операторы могут быть унарными и бинарными. Пример задания бинарного нейтрального оператора приведен ниже: > х&/у; х &/у > z+x&Zy; z + (x&/y) > &/<Х.у). х&Уу > х&/у-&/(х,у); О 9.5.9. Определение операторов с помощью оператора define Большие возможности в задании операторов с заданными свойствами предостав- ляет специальный оператор define. Он записывается в форме: define(aa(oper)) или definefoper, property 1, property2, ...)
Здесь орег — имя определяемого оператора, аа — имя абстрактного алгебраиче- ского пространства (группового Group или линейного Linear), property!, proper- ty.... — наименование свойства. В принципе оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему. Могут быть указаны следующие свойства операторов: unary — унарный оператор;. binary — бинарный оператор; associative — ассоциативный оператор f(x.f(y,z)) = f(f(x,y),z) = f(x,y,z);. commutative или symmetric — коммутативный симметричный оператор f(x.y) = f(y.x); antisymmetric — асимметричный оператор f(x,y) = -f(y.x); mverse=g — инверсный оператор; iero=x — определение нуля — если любой из элементов оператора равен х, то оператор возвращает х; identity=x — определение бесконечности. Следующий пример задает линейный оператор L: >define(Linear(L)); >Ца,х+Ь‘хА2+с,х*3); 2 3 L(a х) * L(b х ) ♦ L(c х ) Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описатель forall. Так, приведен- ный ниже пример задает оператор F, который вычисляет n-е число Фибоначчи (п>2): > define(F, forall(mteger(x), F(x) = F(x-1)+F(x-2)), F(0)=0, F(1)=1); >F(3); 2 »F(4); 3 »F(10); 55 »F(20); 6765 >tone(F(20)); 3.228 Обратите внимание на то, что здесь описателем forall задана целочисленная переменная х. А соотношения F(0)=0 и F(l)=l задают начальные значения пассива чисел Фибоначчи, которые нужны для реализации обычного итерацион- ного алгоритма их нахождения. Напоминаем, что очередное число Фибоначчи равно сумме двух предшествующих чисел Фибонначи. Последний пример иллюстрирует применение системной функции time для опре- деления времени, затраченного на вычисление значения функции F(20). Это
время задается в секундах. Нетрудно заметить, что даже для ПК с процессором Pentium 200 MMX это время оказалось довольно значительным (более 3 с), поскольку каждое новое число Фибоначчи вычисляется заново. 9.6. Математические функции Maple V имеет полный набор элементарных математических функций. Все они, кроме арктангенса двух аргументов, имеют один аргумент х. например sin(x). Он может быть целым, рациональным, дробно-рациональным, вещественным или комплексным числом г. В ответ на обращение к ним элементарные функции возвращают свое соответствующее значение. Поэтому они могут быть включены в математические выражения. Как правило, если аргументом функции является фундаментальная константа, целое или рациональное число, то функция выводится с таким аргументом без получения результата в форме действительного числа с плавающей точкой. Например: > Sin(Pi); Sin(Pi) >ехр(1); ехр(1) > 1п(2); 1п(2) > arcsin(1/3); arcsin(1/3) > arcsin(1/2); 1/6 Pi Нетрудно заметить, что есть и исключения из этого правила — например, на экране дисплея ехр(1) будет выведено как константа е, а значение функции arcsin(l/2) все же вычислено и результат получен как 1/6 от константы Pi. Вообще говоря, если результат просто выражается через фундаментальную константу, то он будет вычислен и представлен ею. Для получения подробной информации о некоторой произвольной функции <(> достаточно задать команду ?<(> Ввиду общеизвестности элементарных функций мы не будем обсуждать ни их свойств, ни допустимых пределов изменения аргумента. Приведем перечень наименований этих функций, представленный по различным их категориям с примерами применения некоторых функций. 9.6.1. Некоторые целочисленные функции и факториал Ниже представлены наиболее распространенные целочисленные функции Maple V, используемые в теории чисел: | factorial Функция вычисления факториала (альтернатива — оператор!). I iquo(a.b) Частное для а/Ь.
irem(a.b) Остаток для a/b. igcd(a b) Наибольший общий делитель. lcm(a.b) Наименьшее общее кратное Примеры применения: > factonal( 10); 3628800 > factorial( 100); 9332621544394415268169923885626670049071596826438162146859296389V5217599993 229915608941463976156518286253697920827223758251185210\ 916864000000000000000000000000 >к)ио( 123,5); 24 >lrem( 123,5); 3 >igod( 1240,24); 8 >кэт>(13,7); 91 >301: 265252859812191058636308480000000 >3!!; 720 720 В последних двух примерах применения оператора факториала полезно обратить внимание, что запись п!! означает лишь (п!)!, а не п!!=2*4*6*..., т.е. произведение четных целых чисел. 9.6.2. Тригонометрические функции В Maple-языке в ядре определены следующие тригонометрические функции: sin Синус. CSC Косеканс sec Секанс. tan Тангенс. cos Косинус. cot Котангенс. Примеры вычислений: > simplify(sin(x)*2+cos(x)A2); 1 > sr»(1.0); 8414709848
> sin(1); sin(1) > cos(0 5); 8775825619 > tan(1.0); 1 557407725 > lan(1); tan(1) > sec(1.): 1 850815718 > csc(1.): 1.188395106 > cot(1.*2*l); 03279775553 - 9843292265 I > sin(2+3*l); 9 154499147 - 4.168906960 I 9.6.3. Обратные тригонометрические функции К обратным относятся следующие тригонометрические функции: arcsin Арксинус. arcsec Арксеканс arccos Арккосинус. arccsc Арккосеканс. arctan Арктангенс. arccot Арккотангенс Примеры вычислений: > arcsm(0.5); .5235987756 > arccos(0 5); 1.047197551 > evalc(arcsin(5)); 1/2 1/2 Pt -1 ln(5 * 2 6 ) > arctan(1); 7853981634 > arccot( 1); 1/4 Pi К этому классу функций принадлежит еще одна полезная функция: arctan(y.x) = argument(x+l*y) Она возвращает угол радиус-вектора в интервале от -Pi до Pi при координатах конца радиус-вектора х и у (см. пример ниже):
»arcten(2 .3); 5880026035 9.6.4. Гиперболические функции Гиперболические функции представлены следующим набором: sinh Гиперболический синус. sech Гиперболический секанс. cosh Гиперболический косинус csch Гиперболический косеканс tanh Гиперболический тангенс coth Гиперболический котангенс Примеры применения: 1 175201194 >oosh(i); cosh(1) >1anb(2.); 9640275801 >coth(1.); 1 313035286 9.6.5. Обратные гиперболические функции Как и тригонометрические функции, гиперболические имеют свои обратные функции, называемые ареафункциями: arcsinh I Гиперболический арксинус arcsech I Гиперболический арксеканс arccosh Гиперболический арккосинус arccsch Гиперболический арккосеканс arctanh Гиперболический арктангенс. arccoth Гиперболический арккотангенс. Примеры применения: >arcsin(2*3.'*l); 5706527843 + 1 983387030 I >jrccos(1.); 0 >arclan(1.); 7853981634 >«rcsecb(2.); 1.047197551 I 9.6.6. Алгебраические функции К алгебраическим относятся следующие функции системы Maple V: ехр Экспоненциальная функция. iloglO Целочисленный логарифм по основанию I0
I ilog Целочисленный логарифм (библиотечная функция). In Натуральный логарифм 1 log Логарифм по заданному основанию (библиотечная функция) 1 loglO Логарифм по основанию 10. sqrt Квадратный корень. Примеры применения: > ехр(2); ехр(2) > ехр(2.0); 7 389056099 > Иод 10(1 000); 3 > readlib(ilog); ргос(х)... end > ilog[2]( 100); 6 >ln(2.); 6931471806 >log(100); ln(100) >tog(100); 4.605170186 >log[ 10](100.); 2 000000000 > log[2](9); ln(9) ln(2) > readlib(loglO); proc(x)... end > Iog10(1000 ); 3000000000 > evalc(sqrt( 2+3*1)); 1/2 1/2 1/2 1/2 1/2 (4 ♦ 2 13 )♦ 1/2 I (4+ 2 13 ) > sqrt(10+90.); 10.00000000 9.6.7. Функции с элементами сравнения В алгоритме вычисления ряда функций заложено сравнение результата с некого рым опорным значением. К таким функциям относятся:
ceil Наименьшее целое, большее или равное х. floor Наибольшее целое, меньшее или равное х. frac Дробная часть числа. trunc Меньшее целое, округленное в направлении х=0 round Округленное значение числа. signum Функция знака (-1 при х<0, 0 при х=0 и +1 при х>0) Для комплексного аргумента х между этими функциями существуют следующие аютношения: trunc(x) = trunc(Re(x)) + I*trunc(!m(x)); nund(x) = round(Re(x)) + l*round(im(x)); ж(х) = frac(Re(x)) + l*frac(Im(x)). 1= Поог(х) запишем a = Re(x)-floor(Re(x)) и b = !m(x)-floor(lm(x)). Тогда Boortx) = floor(Re(x)) + l*floor(lm(x)) + X, О если a+b < 1 I если a+b > I и a J b I если a+b 2 1 и a < b ced(x) = -floor(-x). Примеры применения: WB; 4 ’tunc(Pi); 3 >fcor<Pi>. 3 >hc(Pi). Pi-3 >fraclevalf(Pi)); 141592654 raundfPi); 3 crt(-Pt). -3 Hrunc(-Pi): -3 >hjnc(2.6*l*3.4); 2 ♦ 3 I
> floor(-Pi); > floor(3 7-4.2’l); 3-4 I > round(-Pi); -3 > signum(Pi); 1 > signum(O); 0 > signum(-5); -1 9.6.8. Функции комплексного аргумента Для комплексных чисел и данных, помимо упомянутых в предшествую, разделе функций, определен следующий ряд базовых функций: abs Абсолютное значение действительного или комплексного числа argument Аргумент комплексного числа. conjugate Комплексно-сопряженное число. Im Мнимая часть комплексного числа. Re Действительная часть комплексного числа polar Полярное представление комплексного числа (библиотечная функция) max Максимальный по значению элемент списка. min Минимальный по значению элемент списка. Примеры применения: > z:=2+l*3; Z 2 + 3 I > abs(z); 1/2 13 > argument(z). arctan(3/2) > conjugate(z); 2-3I > lm(z); 3 > Re(z); 2 > readlib(po(ar); proc(r, th)... end
>pc»ac<z); 1/2 polar(13 , arctan(3/2)) >potar(-3.PiZ2); polar(3. 3/2 Pi) >min(Pi/2.Pi.2’Pi); 1/2 Pi >max(Pi/2,2*Pi.Pi); 2 Pi >sort([2.1.3]); |1.2. 3] Обратите внимание, что при выводе значений факториальной функции в виде больших чисел используется знак перевода на следующую строку \ Встречая такой знак, надо мысленно его игнорировать, так что записанное многострочное число является одним целым. 9.6.9. Специальные математические функции Специальные математические функции обычно являются решениями линейных афференциальных уравнений различного типа и имеют представления в виде «нтегралов. не представимых через элементарные функции Maple V имеет практически полный набор таких функций. Их представления можно найти в справочной литературе, а также в справочной базе системы В связи с этим ограничимся приведением названий специальных функций: AiryAi (Bi) Функции Эйри. AngerJ Функция Ангера Bernoulli Числа и полиномы Бернулли Bessel! (J. К. Y) Функции Бесселя разного рода , Beta Бета-функиия hnomial Биноминальные коэффициенты Qu Интегральный гиперболический косинус. G Интегральный косинус. csgn Комплексная сигнум-функция ®og Дилогарифм Drrac Дельта-функция Дирака E Экспоненциальный интеграл HlipticCE (CK. CPi. E F K. Modulus. Some. Pi) Эллиптические интегралы eri Функция ошибок. [trie Дополнительная функция ошибок. | tuler Числа и полиномы Эйлера FresnelC (i.g.S) Интегралы Френеля
GAMMA Гамма-функция. GaussAGM Гаусса арифметико-геометрическое среднее. HankelHl (H2) Функции Ханкеля. harmonic Частичная сумма серии гармоник. Heaviside Функция Хевисайда. JacobiAM (CN. CD. CS. DN. DC. DS. NC. ND. NS. SC. SD. SN) Эллиптические функции Якоби. JacobiThetal (2, 3. 4) Дзета-функции Якоби. JacobiZeta Зет-Функция Якоби KelvinBer (Bei, Her. Hei. Ker. Kei) Функции Кельвина Li Логарифмический интеграл. InGAMMA Логарифмическая Гамма-функция MeijerG Мейера G-функция pochhammer Символ Постмайера. polylog Полилогарифмическая функция. Psi Полигама-функция Shi Синусный гиперболический интеграл. Si Интегральный синус. Ssi Синусный интеграл смещения StruveH (L) Функции Струве. surd Не главная корневая функция LambertW Ламберта W-функция WeberE Вебера Е-функция. WeierstrassP P-функция Вайерштрассе. WeierstrassPPrime Производная P-функции Вайерштрассе WeierstrassZeta Зета-функция Вайерштрассе. WeierstrassSigma Сигма-функция Вайерштрассе. Zeta Зета-функция Римана и Гурвица. Ввиду большого числа специальных функций, ограниченности их применения и наличия множества примеров на их вычисления в справочной системе Maple V ограничимся несколькими примерами на вычисления наиболее распространенных специальных функций. Примеры применения: > eq1 :=xA2*diff(y(x),x$2)+x*diff(y(x).xH(xA2-pA2)*y(x)=0; / 2 \ 2| d | /d \ 2 2 eq1 := х | — у(х) | + х | — у(х)| * (х - р ) у(х) - О | 2 | \dx / \dx I
> а1 -dsolve(eq 1 .у (х)>; а1 :« у(х)» _С1 BesselY(p. х) + _С2 BesseUfp. х) >BesselJ(0,0.5); 9384698072 >GAMMA(0 5); 1.772453851 > diff(BesselJ(p,x).x$2); (р + 1) BesselJ(p ♦ 1. х) р BesselJ(p. х) -BesselJ(p, х) ♦---------------------------------------- х 2 х I р BesselJ(p. х) \ р | -BesselJ(p * 1, х) ♦--------------| \ х I х 1 895117816 > diff(FresnelS(x),x$3); 2 2 2 2 -sin(1/2Pix ) Pi х ♦ cos(1/2Pix > Pi Еще несколько примеров работы со специальными функциями представлено на рис. 9.2. Как видно из этого примера, представление в математически ориентиро- ванном виде на экране дисплея более предпочтительно, чем на Maple-языке. Записи функций при этом выглядят как в обычной математической литературе. ГТ? ¥ «Мт г п 4 |U Malted |3|| > £« у». [до Дом Мр diff (Besxell(1,х) ,х82) Ве«»еП(1.л) + ВеиеЩ.х) „ , ВеиеЩО.х)--------------- ВемеД(1.х) х 2 х convert (Airytli(x) , Bovcul) ; •1 2 3/2 з’з* «тег i mi (Basse 11(3,х),X,10); '> 3 1 5 * 7 1 9 . 10 •48 * 768* *30720* *2211840* 'Л* convert(erf(х),exp): егДх) convert (xl *yl /xl, <.ме<л (х, г I) .• Пх ♦ 1»! Пх+1) convert (Li (х), Ei); Рис 9.2. Примеры работы со специальными математическими функциями
Подробное описание специальных функций можно найти в справочниках |43 - 45] и в справочной базе данных системы Maple V. 9.6.10. Функции для работы с векторами и матрицами Свыше сотни функций для работы с векторами и матрицами входит в пакет расширения системы Maple V linalg (линейная алгебра). Он описан в главе 12 В связи с этим в ядро и в основную библиотеку Maple V включено ограниченное число средств для работы с векторами и матрицами. Они описаны ниже. Прежде всего надо отметить, что элементы векторов и матриц являются индек- сированными переменными, т.е. место каждого элемента вектора определя- ется его индексом, а у матрицы — двумя индексами. Обычно их обобщенно обозначают как I (номер строки матрицы или порядковый номер элемента вектора) и j (номер столбца). Допустимы операции вызова нужного элемента и присваивания ему нового значения: V|i| — вызов i-ro элемента вектора V; M|i.j) — вызов элемента матрицы М. расположенного на i-строке j-столбце. V(i|:=x — присваивание нового значения х i-му элементу вектора V; M|iJ]:=x — присваивание нового значения х элементу матрицы М Следующие примеры иллюстрируют работу с элементами векторов и матриц: >V:=array(1..3,[1,2,3]); V:= (1.2, 3] > VJ1]:=a:V[3]:=b: > evalm(V); (a. 2. b] > M:=array(1 ..3,1..3,[[a,b,c],[d.e,f),[i,k,l]]); [a b c] I [d e f] [ ₽ k I] > М(2,2|:='Привет': > evalm(M); [a b c] [ I [d Привет f] I [i k I] > M(3,2]; k > M[2.2J; Привет > type(V.vector). true > typefM vector): false
>type(M .matrix). true 8 этих примерах применены еще две функции для работы с векторами и ватрицами — evalm и type (с опциями vector и matrix): fvalm(M) — эволюция матрицы М; type(V.vector) — тестирует вектор V и возвращает true, если V — вектор, и false — в ином случае; typefM.matrix) — тестирует матрицу М и возвращает false, если М — матрица, и false — в ином случае. К векторным и матричным функциям можно также отнести функцию преобразо- иния convert с опциями vector и matrix: >М1-(1,2,3,4], М1 :=[1,2, 3.4] >type{M1. vector); false > V *convert(M 1 .vector); V:»[1,2, 3.4] >lype|V, vector); true >М2=П1.21.[3.4П: М2 :»[[1. 2]. [3, 4D >fype(M2.matnx), false >M=convert(M2.matrix); >type(M .matrix), true С матрицами одинакового размера можно выполнять типовые операции сложения, шчитання, умножения, деления и возведения в степень. Возможны также подобные операции с матрицей и скаляром. Примеры описанных операций представлены ниже: >М1 =array(1..2,1. 2.[[a1,b1],[c1,d1])); |а1 Ь1] М1 ] [d di] »М2 =array( 1.2.1. .2. Ца2 .Ь2] ,[с2 ,d2]]); [а2 Ь2] М2 :=[ [с2 d2]
> evalm(M1+M2); [а1 ♦ а2 Ы ♦ Ь2] ] |с1 ♦ с2 d1 ♦ d2] > evalm(M1-M2); [а1-а2 Ь1*Ь2] [ ) (c1-c2 d1-d2] > evalm(M1&*M2). (a1 a2 ♦ Ы c2 a1b2*b1d2] I (d a2 + d1 c2 c1 b2 ♦ d1 d2] > evalm(M1/M2); ( a1 d2 Ы c2 а1 Ь2 Ы a2 ] [ a2 d2 - b2 c2 a2d2-b2c2 a2 d2 - b2 c2 a2 d2 - b2 c2 ]' [ c1 d2 j d1 c2 c1 b2 d1 a2 [ a2 d2 - b2 c2 a2d2-b2c2 a2 d2 - b2 c2 a2 d2 - b2 c2 ] > evalm(M1A2); ( 2 J [a1 ♦ Ы c1 а1 Ь1 + Ы d1] I 2] [c1 a1 ♦ d1 d Ы c1 ♦ d2 ] > evalm(sin(M1)); [stn(a1) sin(b1)] ] [sin(c1) sm(d1)j > evalm(M1+z); (a1+z Ы ] [ ] { c1 d1+z) > evalm(MI-z); [a1 - z Ы ] ( ] [ c1 d1-z] > evalm(MTz); (za1 zb1] I ) [z c1 z d1 ] > evalm(M1/z); (а1 Ы ] [- “I (z z] ( [c1 d1 ]
функции оля работы со строковыми данными 139 Примеры работы с матрицами, элементы которых представлены выражениями, показаны на рис. 9.3. •Ь Mx»ib V Я«1м»« « IIIKiteii |1 И МИР 3 П» Ким ftwrf Осм» Н* -Ш Х1 Операции г матрицами, имеющими символьные т чементы ±J > А -1 Ino lg luot t lx) (2,2, |ж и, х 2 х»5, охр(х) *1и(х и))). Я 4 _ X* x‘-x-e5 »’ яЯх") , > иыр (d IГ Г. А, х > , И, И х со«( х ) х о * > 1»ир( int, ",ж). Г - 2 7 X X - I •г ы^л)1 > юар(«1п,А) шЦх*) м>(х -х + 5] яп(ел) иЫяХх*)) . л Диеса I уНс«ж*Worf СМ Цфм.риапм.а.. » I ДО > 9 IS Рис. 9 3 Примеры работы с матрицами с элементами-выражениями Здесь полезно обратить внимание на применении функции тар, которая прикла- дывает заданную операцию (функции дифференцирования diff и интегрирования int) к каждому элементу матрицы. В результате возвращаются матрицы, каждый элемент которых представлен производной или интегралом Аналогично над матрицами можно выполнять и другие достаточно сложные преобразования. 9.7. Функции для работы со строковыми данными 9.7.1. Контроль типа строковых данных Напоминаем, что строковые данные представляются совокупностью любых сим- волов в обратных апострофах, например, ‘Привет* или *2+2*. Для контроля объектов на принадлежность к строковым данным служит функция type с опцией string: str=Hello‘; str := Hello > type(Hello.string); true > type(str,string); true >type(2+3.stnng); false >type('2+3‘,string): true
> char:=a: char := а > char:=a'; ch-v =a Из приведенных примеров видно, что контроль строкового типа осуществляется не очень строго: в частности, единичные символы рассматриваются как строковые и без заключения их в апострофы. В строках могут быть символы кириллицы, но гарантии в правильности обработки таких символов нет — надо мириться с тем, что Maple V англоязычная система и ее возможности в поддержке других языков ограничены. 9.7.2. Интерактивный ввод строк Для интерактивного ввода строк можно использовать функцию readline(filename) задав в качестве имени файла terminal (возможно, не на всех системах) или опустив имя файла. В этом случае ввод строки осуществляется с клавиатуры ПК (терминала): > s:=readline(); > Привет мой друг! s := Привет мой друг! Полезно обратить внимание на то. что запрос в ходе интерактивного ввода может быть сделан на русском языке, если установленный для запросов шрифт имеет символы кириллицы. 9.7.3. Обработка строк Имеется ряд функций для работы со строками. Из них наиболее важные следую- щие: lenght(str) Возвращает число символов в строке str. substringlstr.a.b) Возвращает подстроку в виде символов от а-го до b-го строки str cat(strl.str2... ) Возвращает строку, полученную объединением строк strl, str2,... (аль- тернатива — оператор конкатеиа ции в виде точки ). . SearchText(s.str) Дает поиск подстроки s в строке str и при его успехе возвращает номер позиции s в строке str (при отсутствии s в str возвращает 0). Примеры применения этих функций представлены ниже: > length(str); 6 > substringfstr, 1 ..3): Hei > substring(str,4..5); Io > s:=cat('Hello',' my". Mend!'); s := Hello my friend!
>ss.= Hello '.‘my friend!', > ss := Hello my friend! ‘seqfName Namel, Name2, Name3, Name4 >add(x.l.i=1..4); x1 * x2 ♦ x3 ♦ x4 »SearchText(my,s); 7 Эти функции дают достаточно средств для обработки данных строкового типа, которые можно применять не только для создания текстовых комментариев, но и ия управления в программах вычислительным процессом. 9.7.4. Преобразования строки в математическое выражение Часто возникает необходимость в интерактивном вводе математических выраже- ний Для ввода с запросом выражения используется функция readstat( promt) гае promt — строка с текстовым комментарием. Пример ее применения дан ниже: >y=readstat('BBeanTe выражение >а'х*2+Ь; 2 у := а х + Ь Альтернативой может стать ввод строкового выражения с последующим преобра- зованием его в математическое выражение с помощью функции parse: >к-2+3‘; s.» 2+3 >waln(s); s >p*se('); 5 Обратите внимание на то. что функция evaln не смогла вычислить строкове «ыражение ‘2+3‘, поскольку оно не является числовым типом данных. Однако функция parse преобразовала это выражение в числовое, что и привело к его вычислению (эволюции). 9.8. Типовые средства программирования 9.8.1. Функции пользователя Хотя ядро Maple V R4. библиотека и пакеты расширения содержат свыше двух тысяч функций, всегда может оказаться, что именно нужной пользователю (порою довольно простой) функции все же нет. Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя.
Основным средством расширения Maple-языка являются модули — процедуры. Однако на первый взгляд они сложны. Есть и более простые способы задания функций пользователя. Один из таких способов заключается просто в присвоении введенной функции (в виде выражения) некоторой переменной: Кагпе:=Выражение Этот прием фактически означает операцию присваивания. Следующие примеры иллюстрируют технику работы с такими функциями: > m:=sqrt(xA2+yA2); 2 2 1/2 m:«(x + у ) > х:=3;у:=4; х := 3 у:«4 > evatf(m); 5000000000 Заданный таким образом программный объект все же не является полноценной функцией пользователя. Прежде всего потому, что в нем используются только глобальные переменные (х и у). Их значения приходится заведомо задавать отдельно, используя операции присваивания. Подобные конструкции нельзя ввести в библиотеки Maple V. Более гибкий способ задания полноценных функций пользователя базируется на применении функционального оператора. При этом используется любая из двух конструкций: пагпе:=(х,у,...)->ехрг или пате:=<ехрг|х,у,...> Вторая из конструкции допустима только в реализации Maple V R3. После этого вызов функции осуществляется в виде name(x,y....), где (х,у,„.) — список формальных параметров функции пользователя с именем name. Переменные, указанные в списке формальных параметров, являются локальными. При подста- новке на их место фактических параметров они сохраняют их значения только в теле функции ехрг. За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо сохраняют ранее присвоенные им значения. Сказанное иллюстрируют следующие примеры: > restart > х:=0;у:=0; х := О у:«0 > m:=(x,y)->sqrt(xA2+yA2); 2 2 m := (х. у) -> sqrt(x + у ) > т(3,4); 5 > т(3.,4.); 5.000000000
>ху. О О Нетрудно заметить, что при вычислении функции т(х,у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя. Еще один способ задания функции пользователя базируется на применении функции unapply: name:=unapply(expr,varl.var2,...) Ниже даны примеры такого задания функции пользователя: Mm:=unapply( sqrt(x*2+yA2).x,y); 2 2 1/2 fm:=(x, у) ->(х *у) >frn(4.,3.); 5.000000000 > te:=unapply(xA2+yA2.x,y); 2 2 fe := (x. у) -> x + у >te(sin(x),cos(x)); 2 2 Sin(x) * cos(x) > wnplify(fe(sin(x).cos(x))); 1 Последний пример показывает возможность проведения символьных операций с функцией пользователя. 9.8.2. Условные выражения Для подготовки разветвляющихся программ в Maple-язык программирования включен оператор if. позволяющий создавать следующую конструкцию: i «Условие сравнения* then <Элементы> elif <Условие сравнения* then <Элементы>| else <Элементы>| fi; В вертикальных черточках | | указаны необязательные элементы этой конструк- ции На практике чаще всего используются следующие две конструкции условных выражений: il «Условие* then «Элементы 1* fi — если Условие выполняется, то исполня- ются Элементы 1, иначе ничего не выполняется; ii «Условие* then «Элементы I* else «Элементы 2* fi — если Условие выполняется, то испольняются Элементы 1. иначе исполняются Элементы 2. В условиях используются любые логические конструкции со знаками сравнения («, <=, >, >=. =, <> ) и логические операторы and. or и not. конструкции с которыми возвращают логические значения true и false. Рассмотрим следующий простой пример:
> х.—5: > if х<0 then pnnt('Negative’) ft; Negative > x:=1: > if x<0 then phnt('Negative') fl; В этом примере анализируется значение х. Если оно отрицательно, то с помощью функции вывода print на экран дисплея выводится сообщение «Negative*. А если х не отрицательно, то не выводится никакого сообщения. В другом примере, если х не отрицательно, то выводится сообщение «Positive»: > х:=-5: > if х<0 then printt Negative ) else print('Posrtive') ft; Negative > x=1. > if x<0 then pnnt('Negative') else print(’Positive') ft; Positive > Приведем еще один пример, показывающий особую форму задания конструкции if-then-else-fi: > х:=-5: > "iff х<0. print('Negative'), print(Positive') Я; Negative > х:«5: > if (х<0. pnnt(Negative'). print('Positive)); Positive В этой конструкции вида ЧПУсловие. Выражение!, Выражение?) если Условие выполнятся, то будет исполнено Выражение!, в противном случае будет исполнено Выражение?. Ввиду компактности записи такая форма условного выражения нередко бывает предпочтительна, хотя она и менее наглядна. 9.8.3. Циклы типа for, while и do Зачастую необходимо циклическое повторение некоторых выражений заданное число раз или до тех пор. пока выполняется определенное условие. Maple-V имеет обобщенную конструкцию цикла, которая задается следующим образом: |for<name>| |from <expr! > | | to <ехргЗ>| | by <ехрг?>| | while <ехрг4>| do <statement sequence* od; Здесь name — имя управляющей переменной цикла, ехрг!, ехрг? н ехргЗ — выражения, задающие начальное значение, конечное значения и шаг изменения переменной name, ехрг4 — выражение, задающее условие, пока будет выполнять- ся цикл (набор объектов между словами do и od).
В ходе выполнения цикла управляющая переменная меняется от значения exprl до значения ехрг2 с шагом, заданным ехргЗ. Если блок by <ехргЗ> отсутствует, то управляющая переменная будет меняться с шагом +1 при expl<expr2. Это наглядно поясняет следующий пример: > for । from 1 to 5 do print(i) od; 1 2 3 4 5 Он выводит значения управляющей переменной i в ходе выполнения цикла. Нетрудно заметить, что она и впрямь меняется от значения I до значения 5 с шагом +1. Следующий пример показывает, что границы изменения управляющей перемен- ной можно задать арифметическими выражениями: > for i from 7/(2+5) to 4+1 do print(i) od; 1 2 3 4 5 А в другом примере показано задание цикла, у которого управляющая переменная меняется от значения 1 до 10 с шагом 2: > for I from 1 to 10 by 2 do print(i) od; 1 3 5 7 9 В этом случае выводятся нечетные числа от 1 до 9. Следует отметить, что выполнение цикла в обратном порядке, когда exprl >ехрг2 не предусмотрено. Но зато цикл можно прервать с помощью дополнительного блока while <ехрг4>. Цикл с таким блоком выполняется до тех пор, пока выполняется условие ехрг4 (см. пример ниже): > for । from 1 to 10 by 2 while i<6 do print(i) od; 1 3 5 Таким образом, конструкция цикла в Maple-языке программирования вобрала в себя основные конструкции циклов for и while. Есть еще одна более специфиче- ская конструкция цикла: |for <name>| |in <exprl>| |while <expr2>| do <statement sequence» od; Здесь exprl задает список значений, которые будет принимать управляющая переменная name. Цикл будет выполняться, пока не будет исчерпан список и пока выполняется условие, заданное выражением ехрг2. Сказанное иллюстрирует следующий пример:
> for i in (1,2,5,-1,7,9] do print(i) od: 1 2 5 -1 7 9 > for i in (1.2,5,-1,7,9) while i>0 do print(i) od; 1 2 5 В цикле этого вида управляющая переменная может меняться произвольно, принимая убывающие и отрицательные значения. Циклы могут быть вложенными. Это иллюстрирует следующий пример, создаю- щий единичную матрицу на базе заданного массива М: > М:=апау(1..3,1..3); М:=аггау(1 .. 3, 1 .. 3, 0) > for i to 3 do for j to 3 do M(l,j]:=O:if i=j then M(i,j]:=1 fi, od od; > evalm(M); [1 0 01 I 1 (0 1 0] 1 [0 о 1j > array(1..3.1..3,identity); (1 0 0] [ I (0 1 0] I I [0 0 11 Этот пример имеет не более чем познавательное значение, поскольку для создания такой матрицы Maple V имеет опцию identity, с помощью которой функция array позволяет сразу создать единичную матрицу. В заключении отметим, что возможна упрощенная частная конструкция цикла типа while: while ехрг do statseq od; Здесь выражения statseq выполняются, пока выполняется логическое условие ехрг. Пример такого цикла: > п:=1; п = 1 > while n<16 do n:=2*n od; п:=2 n := 4 n := 8 n :a 16 В этом примере идет удвоение числа п с начальным значением п=1 до тех пор, пока значение п меньше 16.
9.8.4. Операторы пропуска и прерывания Иногда бывает нужным пропустить определенный цикл. Для этого используется оператор next (следующий). Приведенный ниже пример иллюстрирует примене- ние оператора next в составе выражения if-fi для исключения вывода значения i=-2: > for i in (1.2,3,-2,4] do if i=-2 then next else pnnt(i) fi od, 1 2 3 4 Другой оператор break прерывает выполнение фрагмента программы (или цик- ла), как только он встречается в ходе ее выполнения. Его действие поясняет слегка модифицированный предшествующий пример: > for । in [1.2.3.-2.4] do if i—2 then break else pnnt(i) fi od; 1 2 3 В данном случае при значении i=-2 произошло полное прекращение выполнения цикла. Поэтому следующее значение 4 переменной i присвоено не было и это значение на выход цикла не попало. Любой из операторов quit, done или stop обеспечивает также прерывание выполнения текущей программы (в частности, цикла), но при этом окно текущего документа закрывается и все имеющиеся в нем определения исчезают. 9.8.5. Простейшие процедуры Процедурами называют модули программы, имеющие самостоятельное значение. Они являются важнейшим элементом структурного программирования и служат средством расширения возможностей системы Maple V пользователем. Процедуры имеют имя и список параметров (даже если он пустой). Процедуры вызываются, также как встроенные функции, указанием их имени со списком фактических параметров. Простейшая форма задания процедуры следующая: name := ргос(Параметры) Тело процедуры end; Параметры процедуры задаются перечислением имен переменных, например ргос(х) или proc(x.y.z). С помощью знака :: после имени переменной можно определить ее тип, например, в объявлении prog(n::integer) сообщается, что переменная п является целочисленной. При вызове процедуры выражением вида пате(фактические_параметры) фактические параметры подставляются на место формальных. Несоответствие фактических параметров типу заданных переменных ведет к сообщению об ошибке и к отказу от выполнения процедуры.
В качестве примера ниже приведена процедура вычисления модуля комплексного числа г — в данном случае единственного параметра процедуры: > modc:=prac(z) > evatf(sqrt(Re(z)A2+lm(z)A2)) > end; mode := proc(z) evalf(sqrt(Re(z)A2 ♦ lm(z)A2)) end Теперь для вычисления модуля достаточно задать обращение к процедуре modc(z), указав вместо z конкретное комплексное число: > modc(3.*l*4); 5.000000000 Нетрудно заметить, что при знаке ; после завершающего слова end текст процедуры повторяется в строке вывода (в общем случае в несколько ином виде). Если это повторение не нужно, после слова end надо поставить знак двоеточия. 9.8.6. Оператор возврата значения RETURN Процедуры, которые возвращают значение результата в ответ на обращение к ним. во многом тождественны функциям. Будем называть их процедурами-функ- циями. Обычно процедура возвращает значение последнего выражения в ее теле или выражения, намеченного к возврату специальным оператором RETURN: > modc:=proc(z) > evatf(sqrt(Re(z)A2+lm(z)A2)): > RETURN(’) > end; mode := proc(z) evalf(sqrt(Re(z)A2 ♦ lm(z)A2)); RETURN(') end > modc(3.+r4 ); 5 000000000 Параметром RETURN может быть любое выражение. 9.8.7. Статус переменных в процедурах и циклах Переменные, которые указываются в списке параметров (например, г в нашем примере), являются локальными переменными. Это означает, что изменение их значений происходит лишь в теле процедуры, т.е. локально. За пределами тела процедуры эти переменные имеют то значение, которое у них было до использо- вания процедуры. Это хорошо поясняет следующий пример: > restart, z:«1; z:= 1 > modc:=proc(z) > evalf(sqrt(Re(z)A2+lm(z)A2)): > end; mode := proc(z) evalf(sqrt(Re(z)A2 ♦ lm(z)A2)) end > modc(3.+r4.); 5.000000000 >z;
Нетрудно заметить, что внутри процедуры г=2+1*4, тогда как вне нее значение 1=1. Таким образом, имена переменных в списке параметров процедуры могут совпадать с именами глобальных переменных, используемых за пределами процедуры. Переменные, которым впервые присваивается значение в процедуре, также относятся к локальным. Кроме того, переменные, применяемые для организации циклов, являются локальными. Все остальные переменные — глобальные. 9.8.8. Объявления переменных локальными с помощью оператора local Если в теле процедуры имеются операции присваивания для ранее определенных (глобальных) переменных, то изменение их значений в ходе выполнения проце- дуры создает так называемый побочный эффект. Он способен существенно изменить алгоритм решения сложных задач и поэтому, как правило, недопустим. Maple-язык программирования имеет встроенные средства для исключения побоч- ных эффектов. Встречая такие операции присваивания, Maple-язык корректирует текст процедуры и вставляет в нее объявление переменных локальными с помощью ключевого слова local и выдает предупреждающую надпись о подобном применении: > т:=0; т = О > modc.=proc(z) > т =evalf(sqrt(Re(z)A2+lm(z)*2)): > RETURN(m) > end; Warning, лТ is implicitly declared local mode := proc(z) local m; m := evalf(sqrt(Re(z)A2 + lm(z)*2)); RETURN(m) end > modc(3.-H*4); 5 000000000 > m; 0 9.8.9. Объявления переменных глобальными с помощью оператора global Говорят, запретный плод сладок! Что бы ни говорили о нежелательности работы с глобальными переменными, бывает, что их применение желательно или даже необходимо. Чтобы сделать переменные внутри процедуры глобальными, доста- точно объявить их с помощью ключевого слова global после которого указыва- ется перечисление переменных. Следующий пример поясняет применение оператора global в процедуре: >а:=1;Ь:=1; а := 1 - • _ * '• Ь := 1
> fg:=proc(x,y) > global a.b; > a:=xA2; b:=yA2; > RETURN(sqrt(a*b)); > end; fg := procfx, y) global a, b; a = xA2; b : y*2; RETURN(sqrt(a ♦ b)) end; > <9(3.4); 5 > a; 9 > b; 16 Следует отметить, что нельзя делать глобальными переменные, указанные в списке параметров процедуры, поскольку они уже фактически объявлены локаль- ными. Такая попытка приведет к появлению сообщения об ошибке следующего вида «Error, argument and global *x‘ have the same name». При этом соответству- ющие переменные останутся локальными. 9.8.10. Функция вывода сообщений об ошибках ERROR При профессиональной подготовке процедур пользователь должен предусмотреть поведение процедуры при возможных ошибках. Для этого обычно используются различные функции оценки и тестирования. При выявлении ими ошибки обычно предусматривается вывод соответствующего сообщения. Для этого используется функция ERROR: ERROR(expr_l, expr_2, .,.), где expr_l. ... — ряд выражений (возможно, пустой). Наиболее часто ERROR выводит просто строковое сообщение об ошибке, например, ERROR(‘strings‘). Полное сообщение об ошибке имеет вид: Error, (in name) string,,.. Приведем пример процедуры, в которой предусмотрен вывод сообщения об ошибке при задании переменной х<0: > logbase := proc (x,b;:integer) if x<0 then ERRORfinvalid x'. x) else evalf(ln(x)/ln(b)) fi end: > logbasef 100,2); 6 643856189 > logbase(-100.2); Error, (in logbase) invalid x, -100 > logbase(100.1.5); Error, logbase expects its 2nd argument, b, to be of type integer, but received 1.5 Эта процедура вычисляет логарифм числа х основанию b с выводом результата в форме десятичного числа с плавающей точкой. Поскольку отрицательные числа логарифмов не имеют, сообщение об ошибке появляется при х<0. Обратите внимание также и на другое сообщение об ошибке при задании Ь=1.5. В данном
случае это сообщение обусловлено тем, что параметру b присвоен тип целого числа. 9.8.11. Опции (ключи) в процедурах В объявление процедуры можно включить опции, вводимые словом options <nseq> Иногда опции называют расширяющими ключами. Предусмотрены следующие опции: remember — определяет таблицу памяти для процедуры; builtin — определяет функцию как встроенную; system — определяет процедуру как системную; operator — объявляет процедуру — функциональный оператор; arrow — определят процедуру в нотации ->; angle — определяет процедуру в нотации <...|...>; trace — задает трассировку процедуры; package — определяет процедуру для пакета расширения; copyright — защищает процедуру от копирования. Ключ remember Ключ remember обеспечивает занесение результатов обращений к процедуре в таблицу памяти. Функция ор позволяет вывести таблицу: > f;=proc(x) options remember; хА3 end: > 42); 8 > 43); 27 > op(4,eval(f)); tabled 3 = 27 2 = 8 ]) Ключ remember особенно полезен в реализации итерационных процедур. К примеру, в приведенной ниже процедуре вычисления n-го Фибоначчи время вычисления растет пропорционально квадрату п: > f:=proc(n) if n<2 then n else f(n-1)+f(n-2) ft end: > f(30); 832040 Вычисление f(30) по этой процедуре на ПК с процессором Pentium 200 MMX занимает около минуты. Стоит добавить в процедуру опцию remember, как время вычислений начнет расти пропорционально п: > fe:=proc(n) options remember; if n<2 then n else f(n-1 )+f(n-2) fi end; > fe(30); 832040
> time(fe(20)); О > time(fe(30)); О При этом повторное вычисление fe(3O) происходит практически мгновенно, так как все промежуточные результаты в первом случае вычисляются заново, а во втором они берутся из таблицы. Однако это справедливо лишь тогда, когда к процедуре было хотя бы однократное обращение. Надо отметить, что данные процедуры являются рекурсивными, т.е. в их теле имеется обращение к самой себе. Ключ builtin Ключ build придает процедуре статус встроенной. Он должен использоваться всегда первым. .С помощью функции eval(name) можно проверить, является ли функция с именем name встроенной: > eval(type); proc() option builtin; 161 end > eval(print); proc() option builtin; 139 end Числа в теле процедур указывают системные номера функций. Ключ system Этот ключ придает процедуре статус системной. У таких процедур таблица памяти может быть удалена. У обычных процедур таблица памяти не удаляется и входит в так называемый «мусорный ящик» (garbage collector). Ключ operator, angle Ключ operator задает процедуре статус оператора в нотации угловых скобок. Пример применения ключа дан ниже: > o:=proc(x,y) option operator angle;x-sqrt(y) end; ><X4.2.); 2 585786438 Напоминаем, что эта нотация возможна только в реализации Maple V R3. Ключ operator, arrow Этот ключ задает процедуре статус оператора в нотации стрелки (->). Это достаточно пояснить следующими примерами: > о:=ргос(х,у) option operator.arrow;x-sqrt(y) end; о := (х. у)-> х - sqrt(y) > 0(4,2.); 2.585786438 Ключ trace Ключ trace задает в процедуре вывод отладочной информации: > о =proc(x,y) option trace; x-sqrt(y) end, о := proc(x, у) option trace; x - sqrt(y) end
>о(4,2.); {-> enter о. args = 4. 2. 2.585786438 < - exit о (now at top level) = 2.585786438} 2.585786438 Ключ package Ключ package используется для придания процедуре статуса пакетной процедуры. О подготовке таких процедур мы расскажем ниже. Ключ copyright Этот ключ защищает процедуру от просмотра. Это поясняют следующие два примера. > о:=ргос(х,у) x-sqrt(y) end; о := ргос(х, у) х - sqrt(y) end > о(4,2); 2585786438 > eval(o); ргос(х, у) x - sqrt(y) end > oo:=proc(x,y) option Copyngtit.x-sqrt(y) end; oo := proc(x, y)... end > eval(oo); proc(x. y)... end Нетрудно заметить, что во втором примере тело процедуры уже не просматрива- ется. Для отмены защиты от просмотра можно использовать оператор interfa- ce(verboseproc=2). 9.8.12. Общая форма задания процедуры Выше мы рассмотрели основные частные формы задания процедур. Все они могут быть объединены в общую форму задания процедуры: пате:=ргос( <argseq >) local<nseq>; global<nseq>; options<nseq>; — объявление процедуры; — объявление локальных переменных; — объявление глобальных переменных; — объявление опций (расширяющих ключей); description<stringseq>; <stateq> end; (или end:) — объявление комментариев; — выражения — тело процедуры; — объявление конца процедуры. Эта форма охватывает все описанные выше частные формы и позволяет готовить самые сложные и надежно работающие процедуры. 9.8.13. Средства контроля и отладки процедур Большая часть функций и операторов системы Maple V реализована в виде процедур, написанных на Maple-языке программирования. Благодаря возможно- сти их просмотра пользователь получает неисчерпаемый источник примеров
программирования на этом языке. Кроме того пользователь может создавать свои собственные процедуры. Для контроля и отладки процедур прежде всего надо уметь вывести их полный список. Для этого служит функция: print(name); где name — имя процедуры. Однако перед тем как использовать эту функцию, надо исполнить команду > interface(verboseproc=2,prettyprint=1 .version); Maple Worksheet Interface, Release 4, IBM INTEL NT, Jan 16 1996 Ее смысл будет пояснен ниже. Пока же отметим, что эта команда обеспечивает полный вывод текста процедур библиотеки. Встроенные в ядро процедуры, написанные не на Maple-языке, в полном тексте не представляются. Поясним это следующими примерами: > print(evalf): proof) option builtin, remember; 89 end > print(erf); proc(x) option Copyright (c) 1994 by the University of Waterloo. All rights reserved if nargs <> 1 then ERRORfexpecting 1 argument, got '.nargs) elif typefx, 'complex(float)') then evalfferf(x)) elif typefx, 'complex(numeric)') then if csgnfx) = -1 then -erf(-x) else erf (x) fi elif typefx. '*’) and type(op(1, x), ’complex(numeric)') and csgn(op(1, x)) = -1 then -erff-x) elif typefx. *+') and traperrorfsignfx)) = -1 then -erf(-x) else erf(x) : 'erf(x) fi end > Здесь вначале выполнен вывод сокращенного листинга встроенной в ядро процедуры evalf, а затем выведен полный листинг процедуры вычисления функции ошибок erf. Эта функция имеет довольно короткую процедуру — многие важные функции и операторы задаются гораздо более сложными и большими процедурами. Но вернемся к функции interface. Эта функция служит для управления выводом и задается в виде: interface( argl, arg2, ... ) где аргументы задаются равенствами вида name=value и словами-указателями: ansi labelwidth post plot screenheight version echo patchlevel preplot screenwidth wamlevel errorbreak plotdevice prettyprint showassumed indentamount plotoptions prompt terminal labelling plotoutput quiet verboseproc
К сожалению, объем книги не позволяет остановиться на всех вариантах исполь- зования этой очень мощной функции — тем более что в ней может использовать- ся множество аргументов. Мы рассмотрим только некоторые, наиболее важные возможности. Указание verboseproc=n задает степень детальности вывода листинга процедур. При п=0 текст не выводится, при п=1 выводится текст только заданных пользователем процедур, а при п=2 — всех процедур на Maple-языке. Пример этого был дан выше. Указание prettyprint=O или 1 управляет выводом стандарт- ных сообщений. Указание plotdevice=string управляет выводом графики, напри- мер. plotdevice =gif указывает на то. что запись графиков в виде файлов будет происходить в формате .gif. Одним из основных средств отладки процедур является функция трассировки trace(name). Детальность ее работы задается системной переменной printlevel (уровень вывода). При printlevel:=n (значение п=1 по умолчанию) результат выводится только непосредственно исполняемой функции или оператора. Для вывода информации о выполнении k-го уровня вложенности надо использовать значение этой переменной от 5*к до 5*(к+1). Так. при и от 1 до 5 выводятся результаты трассировки первого уровня, при п от 6 до 10 — второго и т.д. Максимальное значение п=100 обеспечивает трассировку по всем уровням вло- женности процедуры name. Следующий пример показывает осуществление трассировки для функции int(x‘n,x): > printlevel:=5; printlevel := 5 > trace(int); Int > int(xAn,x); {-> enter int, args = xAn. x _EnvsignumO := EnvsignumO x := x indef := true JEnvtndefinite := true n g:«x surds := false n g:=_X (n*1) _X r :=--------- n ♦ 1 fens 0 expargs := {} Eiargs := {}
(п*1) X г :•--------- п ♦ 1 (п + 1) X П ♦ 1 (п+1) X п + 1 <- exit int (now at top level) = xA(n+1 )/(n+1)} (n+1) x n + 1 Действие функции трассировки отменяется оператором untrace: > untrace(int); int > int(xA2.x); 3 1/3 x При отладке алгоритмов выполнения вычислений надо тщательно следить за сообщениями об ошибках. Для этого в Maple предусмотрена функция traceerr и системная переменная lasterr, в которой сохраняется последнее сообщение об ошибке. При каждом обращении к tracerr переменная lasterr очищается: >2/0; Error, division by zero >2/4; 1/2 > lasterror; division by zero > traperror(3/4); 3/4 > lasterror; lasterror > traperror(5/0); Error, division by zero > lasterror; division by zero Этот пример показывает, как может быть проведено отслеживание ошибок в ходе вычислений. Вообще говоря, пользователь редко привлекает описанные средства, поскольку проще отладить вычислительный алгоритм прежде, чем на его основе будет составлена процедура. При правильном построении процедур ошибочные ситуации заведомо предусматриваются и должным образом обрабатываются.
9.8.14. Работа с отладчиком программ (debugging) В большинстве случаев составители программ (процедур) редко прибегают к пошаговой их отладке. Средства общей диагностики Maple V развиты настолько хорошо, что позволяют выявлять грубые ошибки в процедурах при их общем выполнении. Иногда, правда, для этого приходится неоднократно «прогонять» процедуру, пока она не начнет работать, как задумано. Тем не менее для отладки процедур служит специальный интерактивный отладчик — debugger. Опишем, как его запустить и как с ним работать. Допустим, мы составили некоторую процедуру demo, вычисляющую сумму квад- ратов чисел (Г2+2'2+...+п*2): > demo:=proc(n::integer) local y.i: у=0: for i to n do y:=y+iA2 od end; demo := proc(nmteger) local у, I; у := 0; for i to n do y := у + iA2 od end > demo(3); 14 Чтобы включить отладчик в работу, надо исполнить команду stopat: > stopat(demo); [demo] > demo(3), demo: Гу :* 0; DBG> next Признаком, указывающим на работу отладчика, является изменение приглашения к вводу со знака > на DBG> (как нетрудно догадаться. DBG означает debugger). Теперь, подавая команды next (следующий), step (шаг) и stop (остановка), можно проследить выполнение процедуры: Ок demo: 2 for i to n do od DBG> step 0 demo: 3 у .= y+tA2 DBG> step 1 demo: 3 у := у+^г DBG> step 5 demo: 3 у := y+t*2 DBG> step 14 В последнем случае процедура по шагам дошла до конца вычислений, и на этом работа отладчика завершается сама собой.
Можно также вывести листинг процедуры с помощью команды: > sbowstat(demo), demo := procfn: integer) local у, I; 1* y:«0; 2 for I to n do 3 у л y+i*2 od end Обратите внимание, что в этом листинге строки вычисляемых элементов прону- мерованы. Это сделано для облегчения разбора работы процедуры. В общем случае отладчик включается при выполнении команд stopat, stopwhen или stoperr. Если используется команда stopat, то вывод на экран соответствует исполнению последней выполненной команды. Для отмены этой команды исполь- зуется команда unstopat. Команда stopwhen позволяет установить точку наблюдения за указанной после нее переменной. Отменить ее можно командой unstopwhen. Команда stoperror позволяет задать остановку при появлении определенной ошибки. Для отмены этой команды используется команде unstoperror. Команда cont используется для продолжения работы до следующей точки преры- вания, установленной указанными выше командами, или до конца процедуры. Для прерывания отладки можно использовать команду quit. После команды stop можно вычислить любое Maple-выражение. В действительности команд отладчика намного больше и их функции более развиты, чем это описано выше Пользователи, заинтересованные в серьезной работе с отладчиком (скорее всего их немного), могут просмотреть его подробное описание. Для этого в разделе справочной системы Context (справка по контек- сту) найдите раздел Programming (Программирование) и в нем раздел Debugging (Отладка). 9.9. Операции ввода и вывода 9.9.1. Считывание и запись программных модулей В главе 2 рассматривалась работа с файлами документов. Вводимые в текущий документ программные модули хранятся вместе с ним. Так что при отказе от загрузки какого-либо документа все его программные блоки не могут использо- ваться в других документах. Кроме того, порою неудобно загружать объемный документ ради использования одного или нескольких модулей, например, проце- дур. Поэтому в Maple V введены средства, позволяющие записывать нужные модули (в том числе результаты вычислений) на магнитные диски ПК и считывать их в случае необходимости Для записи на магнитный диск используется оператор save: save filename — запись всех определений текущего файла под именем filename; save name_l, name_2, .... name_k, filename — запись избранных модулей с именами пате_1, пате_2,..., пате_к под именем filename.
Считывание имеющегося на диске файла с именем filename осуществляется оператором read: read <filename> При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple V. При записи файлов отдельных определений исполь- зуется специальный внутренний Maple-формат файлов Для загрузки файлов типа *.т из стандартной библиотеки используется функция readlib. А для записи файлов в качестве библиотечных достаточно в имени filename оператора save указать расширение .т. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .т: > save my_proc,*my_lib.m': # запись файла ту_ргос и библиотечного файла myjib.m. > load myjib.m': # считывание библиотечного файла myjib.m. 9.9.2. Создание своей библиотеки процедур Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и. скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если и не потомков, то хотя бы для своей повседневной работы. Сделать это в Maple V довольно просто. Прежде всего надо определить имя своей библиотеки, например mylib. и создать на диске под нее каталог (папку) с заданным именем. Процедуры в Maple V ассоциируются с таблицами Поэтому вначале надо задать таблицу 0 — пустышку под будущие процедуры: > mylib =table(), mylib := tabled Теперь надо ввести свои библиотечные процедуры. Они задаются с двойным именем: вначале указывается имя библиотеки, а затем в квадратных скобках — имя процедуры. Для примера зададим три простые процедуры с именами fl. (2 и В: > mytib[f1].=proc(x::anything) sin(x)+cos(x) end > mylib[f2]-proc(xanything) sinfx^+cosfx)^ end: > mytib[f3]:=proc(x::anything) if x=0 then 1 else sin(x)/x fi end: Рекомендуется тщательно проверить работу процедур, прежде чем записывать их на диск. Ограничимся, скажем, такими контрольными примерами: > mylibffl Их); sin(x) + cos(x) > mylib(f2](x); 2 2 sin(x) ♦ cos(x) > simplify! mylib[f2](x)); 1 > evatf(my(ib[f3]{x)); sin(x)
> evalf(mylib(f3](0)); 1. > evalf(mylib{f3](1)); .8414709848 С помощью функции with можно убедиться, что библиотека mylib действительно содержит только что введенные в нее процедуры. Их список должен появиться при обращении к with(mylib): > with(myiib); [f1.G, 13] Теперь надо записать эту библиотеку под своим именем на диск с помощью команды save: > save'c /mylib m‘; Обратите особое внимание на правильное задание полного имени файла Обычно применяемый для указания пути знак \ в строках Maple-языка используется как знак продолжения строки. Поэтому надо использовать либо двойной знак \\. либо знак /. В нашем примере файл записан в корневую директорию диска С. Если вы решили поместить библиотечный файл в другую директорию (например, в библиотеку, уже имеющуюся в составе системы), укажите полный путь вашего файла и убедитесь в том, что указанная вами директория в самом деле существу- ет Создайте ее, если директории нет Затем надо убедиться в том, что библиотечный файл записан, и считать его. Для этого вначале следует командой restart устранить ранее введенные определения процедур: > restart; С помощью команды with можно убедиться, что этих определений уже нет: > with(mylib); Error, (in with) undefined package, mylib После этого командой read надо загрузить библиотечный файл: > read c/mylib m‘; Имя файла надо вводить по правилам, указанным для команды save. Если все выполнено пунктуально, команда with должна показать наличие в вашей библи- отеке списка процедур fl, (2 и (3: > with(mylib); [f1. 12. f3| И, наконец, можно опробовать вновь работу процедур, которые теперь введены из загруженной библиотеки: > f1(x); sin(x) ♦ cos(x) > simpltfy(f2(y)); 1 > f3(0).
>П(1.Х 8414709848 Описанный выше способ создания своей библиотеки вполне устроит большинство пользователей. Однако есть более сложный и более продвинутый способ ввода своей библиотеки в состав уже имеющейся. Для этого Maple V имеет следующие операции записи в библиотеку процедур sq, s2,... и считывания их из файлов file 1. file2,...: savelib(sl, s2..sn. filename) readlib(f, file), file2, ...) С помощью специального оператора makehelp можно задать стандартное справоч ное описание новых процедур: makeheip(n.f.b), где: п — название темы, f— имя текстового файла, содержащего текст справки (готовится как документ Maple) н b — имя библиотеки. Системная переменная libname хранит имя директории библиотечных файлов. Для регистрации создан- ной справки по вашей библиотеке надо исполнить команду вида: libname:=libname, ‘/mylib*; С деталями применения этих операторов можно ознакомиться в справочной системе. К созданию своих библиотечных процедур надо относиться достаточно осторожно — их применение лишает ваши Maple-программы совместимости со стандартной версией Maple V. Если вы используете одну-две любимые процедуры, проще поместить их в те документы, в которых они действительно нужны. Иначе вы будете вынуждены к каждой своей программе прикладывать еще и свою библиотеку процедур. Она нередко оказывается большей по размеру, чем (райл самого докумен- та. Не всегда практично цеплять маленький файл документа к большой библиотеке, большинство процедур которой скорее всего для данного документа попросту не нужно. Особенно рискованно изменять стандартную библиотеку Maple V Впрочем, идти на это или нет — дело каждого пользователя. Разумеется, если вы готовы создать серьезную библиотеку своих процедур, то ее надо записать и тщательно хранить. С Maple V поставляется множество библиотек полезных процедур, составленных пользователями со всего мира, так что и вы можете пополнить ее своими творениями (глава 14). 9.9.3. Запись и считывание данных Обширные возможности Maple V по математической обработке данных делают привлекательным применение этой системы для автоматической обработки дан- ных. поступающих от каких-либо экспериментальных (например, физических установок). Для этого установки снабжаются интерфейсными платами, например, аналогово-цифровыми преобразователями и необходимым программным обеспече- нием. Возможна и передача полученных Maple V данных в экспериментальные установки. Обмен информацией между Maple V и внешней средой (к ней, кстати, относятся и другие программы) чаще всего осуществляется через файлы текстового форма
та, поскольку именно с такими файлами работают практически все программные средства Для записи данных в файл служит оператор wntedatafAPPENDKfilelD, data) writedatalAPPENDRiilelD, data, format) writedala|APPEND|(fileID, data, format, default) Здесь filelD — имя или дескриптор файла данных, data — список, вектор или матрица данных, format — спецификация формата данных (integer, float или string), default — процедура, задающая запись нечисловых данных, например: writedata(F,A.float.proc(f,x) fprintf(f,,CMPLX(%g,%g)‘.Re(x).lm(x)) end);. Необязательный указатель APPEND используется, если данные должны дописы- ваться в уже созданный файл. Считывание из полученного файла с именем filename обеспечивает функция readdataffilelD, п) readdata(fileID, format, п) readdataffilelD, format) Здесь п — целое положительное число, задающее число считываемых столбцов Ниже представлены примеры этих операций: > В := arrayf [[1.5,2 2.3.4],(2 7.3.4,5.6].[1.8.3 1.6.7][), [1 5 2.2 3.4] t I [2.7 3.4 5.6) I I [1.8 3.1 6.7] > wntedataf С Vmydata.txt'.B); > Е =readdala(‘C:\\mydala txt',3); Е =[[1 5. 2 2 34]. [2.7. 3 4. 5 6]. [1.8. 3.1. 6.7]) Maple V также имеет типичные файловые операции: writeto — запись в файл; appendto — дозапись в файл, open — открытие файла, close — закрытие файла; write — запись в открытый файл; save — запись выражений в файл; read — считывание из файла. Их осуществление, однако, зависит от платформы, на которой установлена система, и от ее настройки. Ряд других файловых операций, в частности, с буферизованными файлами вы найдете в Приложении 1 и. разумеется, в справоч- ной системе Maple V. 9.10. Вывод в специальных форматах 9.10.1. Вывод в формате LaTeX Maple V имеет ряд средств для общения с другими признанными математически- ми программами. Часть из них, в основном относящаяся к обмену через файлы
ыла уже описана. Однако Maple V способна генерировать коды для прямого их нключения в такие программы. Для подготовки математических статей и книг широкое распространение получи- ли редакторы класса ТеХ и LaTeX. Для подготовки выражении или файлов в их формате служит функция latex(expr,filename) Параметр filename не обязателен, если достаточно получить нужное выражение в ячейке вывода Maple V: > iatex(a'xA2*b*x+c), a(x)A{2}+bx+c > latex(diff(xAn,x$2)); {\frac {{х)А{пХп}л{2)К{х}л{2}№ас {{x}A{n}n}«x}A{2}}} 9.10.2. Генерация кодов на языке Фортран Язык Фортран вот уже десятилетия используется для программирования вычис- лительных задач. Накоплены обширные библиотеки решения таких задач на Фортране Почитателей этого языка Maple V порадует тем, что он позволяет готовить коды для программ на Фортране. Для этого используется функция: fortran(expr.filename=str,optomized) Два последних параметра необязательны при выводе выражения ехрг в форме, присущей языку Фортран: > fortran(a’xA2+b*x+c); Ю = a*x"2+b*x*c > fortran(dtff(xAn,x$2)); Ю = x”n'n"2/x”2-x"n,n/x”2 Опция optimize позволяет генерировать оптимизированные коды: > fortran<diff(xAn,x$2),optimized); И = x**n t2 = n~2 t4 = x**2 t5 = 1/14 t9 = t1*t2"l5-t1 *n*t5 При этом вычислительный процесс строится так, чтобы минимизировать число арифметических операций 9.10.3. Генерация кодов на языке С Язык С (Си) также широко используется для решения вычислительных задач. Достаточно отметить, что сама система Maple V создана на языке С. Для генерации кодов на языке С вначале надо подключить библиотечную функ- цию С: > readlib(C); ргос()... end Для генерации кодов на языке С служит функция: C(expr,folename=str,optimized)
Эта функция используется по аналогии с функцией fortran, что и показывают приведенные ниже примеры: > C(diff(xAn.x$2»; to = pow(x.n)*n*n/(x’x|-pow(x.n)'n/(x*x); > C(diff(xAn,x$2),optimized). t1 = pow(x.n); 12 = n*n; 14 = x*x; 15 = 1Л4; t9 = t1 *t2’t5-t 1*n*t5; Обширные возможности по преобразованию выражений в различные формы представляет функция convert. А функция interface позволяет управлять выводом. К сожалению, объем книги не позволяет рассмотреть все многочисленные вари- анты применения этих функций. 9.11. Дополнительные возможности Maple-языка 9.11.1. Переназначение определений В большинстве случаен Maple-язык использует достаточно длинные идентифика- торы для своих определении, например, функций. Однако с помощью функции alias можно изменить любое определение на другое, если оно кажется пользова- телю более удобным. Функция alias записывается в виде: aliasfel, е2..eN), где el. е2....eN — ноль или более равенств. Эта функция возвращает список переназначений и осуществляет сами переназна- чения. Например, для замены имени функции BesselJ на более короткое имя BJ достаточно параметром функции alias записать BJ=BesselJ: > aiias(BJ=BesselJ), I. BJ > BesselJ(O.I); BJ(0. 1) > Bessel J(0,1.); 7651976866 > BJ(0.1), BJ(O,1) > BJ(O,1.>; .7651976866 Можно также переназначить функцию пользователя: > alias{Fx=int(Func(x),x)); I, BJ, Fx
> int(Fx.x); / I [ Fxdx I / > bas(Fx(x),x); true Для отмены переназначения, например, BJ. используется та же функция alias с повтором переназначения: >alias(BJ=BJ); I.Fx >BJ(O,1.); BJ(0,1) Обратите внимание на то, что BJ исчезло из списка переназначений и функция BJ(O,1.) уже не вычисляется 0, поскольку ее уже нет. 9.11.2. Макросы Макрос — это короткая запись длинных определений. По сравнению с переназ- начениями макросы более гибки и могут использоваться для сокращения опера- ций загрузки новых определений из библиотеки и пакетов расширения. macro(el, е2.....еп) где el,е2...еп — ноль или более равенств. В следующем примере функция numbpertn с помощью макроса заменена на пр: > with(combinat):numbperm([1.2.3,4]); 24 > nnacro(np=numbperm(V)); > V:=(1.2.3.4] V.= П.2,3.4] > np(V). 24 С помощью функции macro можно задавать новые типы данных. Например, ниже показано задание такого типа данных, как запись: > macro(one=1 .two=2,three=3,four=4); >2(П: а > z[one); а > z[one]+z[two]*z|four] а + b d Макросы могут быть использованы для конструирования выражений из их макроопределений.
9.11.3. Внешние вызовы Maple V имеет команду system(string), с помощью которой можно исполнить любую команду MS-DOS, записанную в виде строки string. Например, для обзора директории UT диска С достаточно задать команду > systemfdir СЛОТ); На экране кратковременно появится окно MD-DOS с перечнем файлов директо- рии L’T диска С. Это окно показано на рис. 9.4. Дп*ж| IUD | yttaa-yWad Qfi |Цс WIW«5M0MMA 7 К Рис. 9 4 Результат выполнения команды systemCdir С \UT ) На практике при работе в операционной системе Windows эта возможность практически бесполезна, поскольку данное окно, «прокрутив» файлы в указанной директории, тут же исчезает с экрана. Разумеется, есть операции, которые можно таким образом выполнить командами MS-DOS, например, скопировать файл или изменить его имя I io только дело в том, что Windows имеет для всего этого куда более простые и удобные средства. Внешние вызовы командой system куда более полезны для MS-DOS—реализации Maple V, которые кое-где используются и по сен день. Но, поскольку данная книга посвящена самым современным реализациям системы Maple V под Windows, более подробное рассмотрение операции внешних вызовов не имеет особого I мысля.
Глава 10.Операции и функции математического анализа 10.1. Вычисление сумм рядов Применение систем символьной математики особенно эффектно при решении задач математического анализа. Начнем рассмотрение таких операций с вычис- ления сумм Вычисление суммы членов некоторой последовательности f(k) при изменении целочисленного индекса к от значения гл до значения п с шагом +1, т.е выражения п У , ((к) - С<гп) + f(m+l) + ... +f(n-l) + f(n) k«m является достаточно распространенной операцией математического анализа. Для вычисляемой и инертной форм вычисления сумм служат следующие функции: sum(f.k) sum(f.k«m n) sum(f,k=alpha) Surn(f.k) Sutn(f.k«ni..n) Sum<f,k=alpha) где: f — функция, задающая члены суммируемого ряда, к — индекс суммирова- ния. тип — целочисленные пределы изменения k. alpha — RootOf-выражение. Значение п может приниматься бесконечным, тогда для п используется константа infinity. Ниже даны примеры применения этих функций: > sum( kA2. k=1 .4 ); 30 > sum( kA2, k); 3 2 1/3 k -1/2 k + 1/6 k > sum( a|k), k=1..4 ); a| 1) + a|2) + a|3j + a|4| >f 41.2,3.4,5]; f;» (1.2.3.4. 5] > sum(f(k].k=1 .5); 15 > sum( k/(k+1), k=1 4 ); 163 60 > sum( k/(k+1). k=0..n ). n * 1 - Psi(n ♦ 2) - gamma > Sum( k/(k+1), k=0 n ).
\ к ) ------- / к* 1 к = 0 > sum( к*а*к, к ); к а (к а - к - а) (а-1) > sum( binomial(n+k,k), к ); к binomialfn + к, к) > sum( - ехр(-к), к); к binomial(n * к, к) > sum( ехр(-к), к ), ехр(1) (-1 ♦ ехр(1)) вхр(к) > sum( k’binomial(n.k). к=0 п ); п 1/2 2 п > sum( 1 /к!, к=0. infinity ); ехр(1) > sum( 1/кл2, к=1 infinity ), 2 1/6 Pi > sum( к/(к+1), k=RootOf(x*3-2)); 2 > sum(1/i, i«1 100); Psi(101) ♦ gamma Многие бесконечные суммы сходятся к определенным численным или символь- ным значениям, и Maple V способен их вычислять Это поясняют следующие примеры- > Sum(1/i*2,i=1 infinity)=sum(1/iA2,i=1 infinity): infinity \ 1 2 ) — =1/6 Pi I 2
> Sum(1/n!.nz1. infinity)=sum(1/n',n=1 .infinity); infinity \ 1 ) — = exp(1) (1 - exp(-1)) / n! n* 1 > evalf(*), 1.718281828 s 1.718281828 > Sum(1/iA2.i)=5um( 1/i*2. i); \ 1 ) — = -Psi(1,i) / 2 — i n»1 Как видно из приведенных примеров, средства вычисления сумм Maple V позво- ляют получать как численные значения сумм, так и аналитические — в том числе представляемые специальными математическими функциями Дополнительные возможности по работе с суммами обеспечивает инструментальный пакет sum- tools, описанный в главе 12. 10.2. Вычисление произведений Аналогичным образом для произведений членов Ki) некоторой последовательно- сти. например вида п l=fn используются следующие функции: product(i.k) product! i.k=m..n) product! I.k=alpha) Product(f.k) Prodijct(i,k=m n) Pro<iucl(f,k=alpha) Обозначения параметров этих функций и их назначение соответствуют приведен- ным для функций вычисления сумм Примеры применения функций вычисления произведений даны ниже: > product! к*2. к-1 4 ); 576 > product! к*2, к ); 2 GAMMA(k ) > product! а[к). к=1..4 ); а[1) а[2| a[3J а[4] > f:»(1J2.3.4.5l; f = [1.2.3.4. 5]
> producf(f[k].k=1 .4); 24 > product! n+k, к=1 .4 ); (n ♦ 1)(n *2) (n+ 3)(n+ 4) > product! n+k. к ); GAMMA(n + к) > product* n+k, k=1 m ); GAMMA(n + m + 1) GAMMA(n+ 1) > Product! n+k. k=1 m ); m I I II (n + k) I I I I к = 1 (n + 1)(n + 2) (n + 3) (n + 4) > product! n+k. к ); GAMMAfn + k) > product) n+k. k=1. m у GAMMAfn + m ♦ 1) GAMMA(n + 1) > Product! n+k, k=1. m ); m I I II (n + k) I I I I k = 1 > product! k. k=Roo(Of(xA3-2)); 2 Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывает следующий пример: > Product! 1/i,i=1 infinity )=product(1 /1.1=1 infinity). infinity I I || 1/i = 0 i•1 Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены ряда стремятся к нулю, а потому к нулю стремится и их произведение.
10.3. Вычисление производных 10.3.1. Функции дифференцирования выражений diff и Diff Вычисление производных функций ["(х) = dfn(x)/dxn п- го порядка — одна из самых распространенных задач математического анализа Для ее реализации Maple V имеет следующие основные функции: diffla, xl. х2, .... xn) difffa. |xl. х2 хп|) Ditf(a. xl. х2. . xn) Diffla |х1. х2. . хп|) Здесь а — дифференцируемое алгебраическое выражение, в частности, функция f(xl. х2. .... хп) ряда переменных, по которым производится дифференцирование. Функция Diff является инертной формой вычисляемой функции diff и может использоваться для естественного воспроизведения производных в документах. Первая из этих функции (в вычисляемой и в инертной форме) вычисляет частные производные для выражения а по переменным xl, х2........хп. В простейшем случае dift'(f(x).x) вычисляет первую производную функции f(x) по переменной х. При п большем 1 вычисления производных выполняются рекурсивно, например. difKf(x), х, у) эквивалентно difffdiff (f(x>. х). у). Оператор $ можно использовать для вычисления производных высокого порядка. Для этого после имени соответству- ющей переменной ставится этот оператор и указывается порядок производной. Например, выражение diff(f(x).x$4) вычисляет производную 4 го порядка и экви- валентно записи diff( f(x),x,x,x,x) A diff(g(x,y),.x$2,y$3) эквивалентно diif(g(x.y),x.x.y,y,y). Примеры вычисления производных: > Diff(a*xAn.x)=diff(a,xAn,x): п d л а х п --1 3 )( 5 dx х > diff(sin(x),x); cos(x) > diff([sin(x),xAn.exp<a*x)],x); л x n [cos(x),--, a exp(a x)| x > diff([sin(x),xAn.exp(a*x)].x$3); n 3 n 2 n 3 x n x n x n f-oos(x),------3------♦ 2-------, a exp(a x)] 3 3 3 xxx > diff«xA2),exp(y)/z.x,y.z); x exp(y) -2-------- 2 z
> diff([sin(x).xA2.xA3.xAn|.x); п 2 х п (соз(х). 2 х, 3 х,----] X > simplify ("); 2 (п-1) [cos(x), 2 х. 3 х , х п] Как видно из приведенных примеров, функции вычисления производных могут использоваться с параметрами, заданными списками. Приведенные ниже примеры показывают эти возможности и иллюстрируют дифференцирование функции пользователя для двух переменных: > restart; > 4x.y);=cos(x)*yA3; 3 f(x, у) := cos(x) у > diff(f(x,y),x); 3 -sin(x) у > diff(f(x,y),y); 2 3 cos(x) у > diff(f(x,y),x.y): 2 -3 sin(x) у > diff(f(x,y),x$4); 3 cos(x) у > diff(f(x.y),y$2); 6 cos(x) у > diff(f(x,y),x$3,y$2); 6 sin(x) у 10.3.2. Дифференциальный оператор D Для создания функций с производными может также использоваться дифферен- циальный оператор D. Порою он позволяет создавать более компактные выраже- ния. чем функции diff и Diff. Дифференциальный оператор можно записывать в следующих формах: D(f) или D(i](f), где параметр Г — выражение или имя функции, i — положительное целое число, выражение или последовательность. Оператор D(f) просто вычисляет имя произ- водной от f, поскольку в этой форме он эквивалентен unapply(diff(f(x).x),x). В форме D(f>(x) этот оператор подобен diffff(x).x). Приведем примеры на дифференцирование функций заданных только именами и функций с одним параметром;
> D(cosA2); -2 sin cos > D(expA2*cosA2+tan+GAMMA); 1 2 2 exp - 2 sin cos ♦ 1 + tan * Psi GAMMA > D(ln): a -> 1/a > D(sinXx) = drfffsin(x).x); cos(x) = cos(x) Следующий пример показывает дифференцирование функции пользователя fun с применением дифференциального оператора D и функции diff: > fun:=(x)->sin(xA2); 2 fun := х -> sin(x ) > D(fun); 2 х -> 2 cos(x ) x > dfff(fun(x),x); 2 2 cos(x )x Дифференциальный оператор можно применять и для дифференцирования функ- ций ряда переменных по заданной переменной: * f3(x,y ,z}->x‘exp(y )*ln(z); I := (х, у, z) -> х ехр(у) + ln(z) > Of 1 ](f): (х, у, z) -> ехр(у) > D(2](f); (Х, у, Z) -> X ехр(у) >D(3](f): (X, у, Z) -> 1/Z Пример применения дифференциального оператора для функции f, заданной программным объектом — процедурой, представлен ниже: > f = proc(x,b,n) local i,s: s:= 0; for i from n by -1 to 0 do s := s'x+b(i] od, s end: >D[1](f); procfx, b, n) local sx. s. I; sx := 0; s:= 0. for i from n by -1 to 0 do sx = sx'x + s. s := s’x ♦ b[i] od. sx end
Этот пример показывает реализацию схемы Горнера для полинома b степени п от переменной х. При этом применение оператора дифференцирования возвращает процедуру. Ряд интересных возможностей по вычислению производных предо- ставляет пакет расширения student, описанный в главе I2. В нем, кстати, дифференциальный оператор переопределяется. 10.4. Вычисление интегралов 10.4.1. Вычисление неопределенных интегралов Вычисление неопределенного интеграла J t(x) dx обычно заключается в нахождении первообразной функции. Это одна из широко распространенных операций математического анализа. Для вычисления неопределенных и определенных интегралов Maple V предостав- ляет следующие функции: int(l.x) int(f.x«a b) int(i.x=a b.contmuous) Inl(f.x) lnt(f,x=a..b) lnl(f.x=a..b,continuous) Здесь I — подынтегральная функция, x — переменная, по которой выполняются вычисления, а н b — нижний и верхний пределы интегрирования, continuous — опционально заданное условие. Maple V старается найти аналитическое значение интеграла с заданной подын- тегральной функцией. Если это не удается (например, для интегралов в закрытой форме), то возвращается исходная запись интеграла. Для вычисления определен- ного интеграла надо использовать функцию evalf(int(f,x=a..b) ). Ниже приведены примеры вычисления интегралов: > int(sin(x)/x,x); &(х) > int(a‘xAn,x), (n ♦ 1) x a n ♦ 1 > lnt(ln(x)A3.x): / I 3 I ln(x) dx I / > value(’). 3 2 ln(x) X - 3 X )n(x) + 6 X 1n(x) - 6 X Обратите внимание, что в аналитическом представлении неопределенных интег- ралов отсутствует произвольная постоянная С. Не следует забывать о ее сущест- вовииии Д|я вычисления кратных интегралов (двойных, тройных и т.д.) следует
применять функцию int (или Int) внутри такой же функции, делая это столько раз, сколько нужно — например, два или три раза при вычислении двойных или тройных интегралов. В отличие от функции дифференцирования для функции интегрирования нельзя задавать подынтегральные функции в виде списка или множества. Возможно вычисление сумм интегралов и интегралов сумм, а также интегралов от полиномов. >sum(mt(xAi.x),i=1 .5); 2 3 4 5 6 1/2 х *1/Зх + 1/4 х + 1/5х + 1/6 х >intlsum(xAl,i=1..5),x); 2 3 4 5 6 1/2 х ♦ 1/3 х * 1/4 х ♦ 1/5 х + 1/6 х >Р(х) =a‘xA3*b,xA2+c,x+d, 3 2 Р(х) »ах + bх + с х + d > шЦР( х),х); 4 3 2 1/4 ах *1/3 Ьх *1/2сх *dx В некоторых случаях Maple V не может вычислить интеграл. Тогда она просто повторяет его. С помощью функций taylor и convert можно попытаться получить аналитическое решение в виде полинома, что демонстрирует следующий харак терный пример > 1пЦехр(хА4),х), / I 4 | ехр(х )dx I / > oonvert(taylor(",x=0,10).polynom); 5 9 х*1/5х *1/18 х Более подробно об этих операциях говорится в разделе 10.6.1. Разумеется, существует и множество иных возможностей и приемов для выполнения операции интегрирования. В дальнейшем мы неоднократно будем рассматривать и другие, более специфические функции для осуществления интегрирования и вычисления интегральных преобразований. В частности, ряд средств вычисления интегралов реализован в пакете расширения student, описанном в главе 12. 10.4.2. Вычисление определенных интегралов Другой важной операцией является нахождение в аналитической или численной форме определенного интеграла b J f(x) dx .
Для вычисления определенных интегралов используются те же функции int и Int, в которых надоно указать пределы интегрирования, например, х=а..Ь, если интегрируется функция переменной х. Это поясняется приведенными ниже примерами: > int(sin(x)/x,x=a b), SKb)-Si(a) > evalfpnt(sin(x)/x.x=0..10)), 1 658347594 > lnt(xA1 5,x=0..5)=int(xA1 5,x=0..5); 5 / I 1-5 | x dx = 22 36067978 / 0 > lnt(x*ln{x),x=O .1 )=int(x4n(x),x=0..1); 1 I I | x >n|x) dx =-1/4 I I 0 > lnt(x‘exp(-x),x=O ,infinity)=int(x'exp(-x),x=O..infinity), infinity I I | x exp(-x) dx = 1 I I 0 > int(1/(xA2*6’x+12).x--bfmity. .infinity); 1/2 1/3 Pi 3 Как видно из этих примеров, значениями пределов может быть бесконечность, обозначаемая как unlinity. Наличие у функции особых (сингулярных) точек нередко затрудняет выполнение с ней ряда операций, например, численного интегрирования. В этом случае могут помочь соответствующие опции: > int( 1/(х+а)А2. х=0. .2, continuous’); 1 -------♦ 1/а 2 +а > int(1/xA3, х=-1..2, 'CauctiyPnndpalValue'); 3/8
10.4.3. Вычисление кратных интегралов Функции int и Int могут использоваться для вычисления кратных интегралов. Для этого они используются неоднократно. Hi рис. 10.1 представлено вычисление тройного интеграла последовательным троекратным применением функции интегрирования. При этом входное выраже- ние представлено в естественной математической форме, что для данной опера- дИи (интегрирования) выглядит более наглядно, чем запись функций int трижды С вложениями. S Ей |t«* ft*»ч 1пв|ша *|Ь Примеры вычисления кратных интегралов (ввод в математической .пт «и и п 1 « Z3 * ~а з -5 -5208 333333 ?- м - rJt -п 30 | умоиле ||фм«р>г юй-и нсJ ИГ-Ч* Рис 10 I Вычисление кратных интегралов Как видно из второго примера на рис. 10.1, возможно вычисление интегралов, у Югорых пределы являются функциями. В пакете расширения student имеются дополнительные функции интегрирования, которые дополняют уже описанные возможности. 10.5. Вычисление пределов функций Е вычисления пределов функции f в точке х=а используются следующие щи и: limit(f,x=a) liiiut(i.x=a.dir) Limit(f,xaa) Lbnit(f,xaa.d1r) ы 1 — алгебраическое выражений, х — имя переменной, dir — опция, ываюшая на направление поиска предела (left — слева, right — справа, real — ласти вещественных значений, complex — в области комплексных значений), (ением а может быть бесконечность (как положительная, так и отрицательная), меры применения этих функции приведены ниже:
> Limit(sin(x)/x.x=O): sin(x) lim ---------- х->0 х > value)*); 1 > Limit) 1-exp(-x).x=infinity); lim 1 - exp(-x) x -> infinity > valuef); 1 > limit(sin(x)A2.x=Pi/2); 1 > limit(exp(x). x=infinity); infinity > limit)exp(x), x--infinity); 0 > limit(1/x. x=0, real); undefined > limit(exp(x*2)*(1-erf(x)), x=infinity) 0 Обратите внимание на то. что в первом примере фактически дано определение предела в общем виде. Рис. 10.2 показывает вычисление пределов функции tan(x) в точке х=л/2. слева и справа от нее. Для указания направления используются опции right (справа) и left (слева). Видно, что в самой точке предел не определен (значение undefined), а пределы справа и слева уходят в бесконечность. > limit »-Р1/2) u’>Jefin<r3 ’> I lei» (1 otlCtl r-Pi/7 -« > Halt It.iiHxJ . Pi/? UH ) . co > ph.l <t <n(«) . t-0 Pi 10 10) ЯПу | | |h&Mwh gMMI | ДПабХАР | Pi < 10 2. Пример вычисления пределов функции tan(x) и построение ее графика
Показанный на рис. 10.2 график функции tan(x) наглядно подтверждает сущест- имние бесконечных пределов справа и слева от точки х=я/2 и отсутствия его шмой этой точке, где функция испытывает разрыв от значения +« до -«> 10.6. Разложение функций в ряд 10.6.1. Разложение в стеленной ряд In разложения функции или выражения ехрг в ряд служат следующие основные ууикиин: seiesfexpr. eqn) и series(expr. eqn. n) iittb: ехрг — разлагаемое выражение, eqn — условие (например, в виде х = а) и* имя переменной (например, х) и п — необязательное и неотрицательное woe число, задающее число членов ряда (при отсутствии его оно по умолчанию (юется ранным 6, но может переустанавливаться системной переменной Order). Если в качестве eqn задано имя переменной, это соответствует разложению по Иой переменной в области точки с ее нулевым значением. Задав eqn в виде х=хО, кино получить разложение по переменной х в окрестности точки х=хО. Ьможение получается в форме степенного многочлена. Остаточная погрешность мается членох» вида О(хГ1) При точном разложении этот член отсутствует. В Лиен случае для его удаления можно использовать функцию convert. Ниже представлены примеры разложения различных выражений в ряд: >ienes(sinh(x).x); 3 5 6 х+1/6х * 1/120 х *О(х ) jenes<sint»(x),x.1O); 3 5 7 9 10 х ♦ 1/6 х * 1/120 х ♦ 1/5040 х + 1/362880 х *О(х ) senes (2’х*2-х.х=5,10>; 2 45 + 19 (х - 5) + 2 (х - 5) wes(Bessel_J(x,0).x= 1,3); Bessel_J(1,0) * D(1 |(Bessel JX1. 0) (x -1) * 2 3 1/2 D[1, 1](Bessel_JX1.0)(x-1) +O((x-1) ) =yn(x)/x; sin(x) f:«------- x senes(f,x,8); 2 4 6 7 p := 1 -1/6 x ♦ 1/120 x -1/5040 x ♦ Ofx ) tawrt(p.polynom); 2 4 6 1 -1/6x * 1/120 x - 1/5040 x
> s:=seoes(ln(x),x=2,5); 2 3 s := 1п(2) + 1/2 (х - 2) -1/8 (х - 2) + 1/24(х-2) -1/64 4 5 (х-2) + О((х-2) ) > evatf(convert(s.polynom)); 2 3 4 - 307 + 500 х - 125 (х - 2 ) + 0417(х-2.) -0156(х-2.) Здесь видно, что член, дающий ошибку, отсутствует в тех разложениях, которые точны — например, в разложениях степенных многочленов. Для визуализации точности приближения рядами заданных аналитических зависимостей очень полезно построить на одном графике кривые аналитической зависимости t разложения в ряд. Мы это покажем чуть позже на примере ряда Тейлора. 10.6.2. Разложение в ряды Тейлора и Маклорена Для разложения в широко распространенный ряд Тейлора используется функция taylor(expr. eq/пт. п) Здесь: ехрг — разлагаемое в ряд выражение, eq/nm — равенства (в виде х = »1 или имя переменной (например х). п — необязательный параметр, указывающий на порядок разложения и представленный целым положительным числом (при отсутствии указания порядка он принимается по умолчанию равным 6). При задании eq/пт в виде х=а разложение готовится относительно точки с х=а. При указании eq/nm в виде просто имени переменной разложение ищется в окрест ности нулевой точки, т.е. фактически вычисляется ряд Маклорена. Ниже представлены примеры применения функции taylor: >taytor( 1 -ехр(х),х=1.4): 2 (1 -ехр(1))-ехр(1)(х- 1)-1/2ехр(1)(х-1) -1/6ехр(1) 3 4 (х-1) + О((х-1) ) > coo vert(* poly пот); 2 3 1 - ехр(1) - ехр(1) (х -1)-1/2 ехр(1) (х -1) -1/6 ехр(1) (х -1) > taytor(sinh(x),x,10), 3 5 7 9 10 х ♦ 1/6 х ♦ 1/120 х ♦ 1/5040 х + 1/362880 х + О(х ) > taylor(1/x+xA2,x.5), Error, does nol have a laylor expansion, try series() > taylor(int(sin(x)/x.x).x); 3 5 6 x-1/18x + 1/600 x +O(x ) > taytor(erf(x).x). 12 13 15 6 -----x -2/3--------x +1/5-------x +O(x ) 1/2 1/2 1/2 Pi Pi Pi
На рис. I0.3 дан пример разложения в ряд Тейлора функции sin(x) с построением ее графика и графика по разложению в ряд Это хороший пример визуализации результатов математических вычислений; отлично видно, что при малых х график ряда практически повторяет разлагаемую функцию, но затем начинает сильно от нее отходить. Можно буквально в считанные секунды попробовать изменить число членов ряда или диапазон изменения переменной х. При этом легко убедиться в том. что при больших х повеление ряда не имеет ничего близкого к поведению разлагаемой в ряд функции — в частности нет и намека на периодич- ность разложения, которая присуща тригонометрической функции sin(x). •N M.ipln V Hoteaifl I |4lpfai bi] ~~~~~~~~~~~~~~~~~~~~~~ ЯПР a ГМ •<* Уо» 1-ч«г Г ятя Wntx Ц>р ,IJ| x| Аппроксимация рядом Гейлора rl Вычислим представление функции яп<х) в форме ряда Тейлора * > аррюх - tiylort sin(x) , х-0, в ) 1 з 1 5 7 цджм «а--а ♦—я *О(« ) Преобразуем это выражение в степенной многочлен - полином > poly « convext( approx, polynon ) А теперь построим графкгн исходной функции и ее разложения в рла Тейлора > plot ( ( xln(x), poly 1, х- * *. title- Sin(x) and Taylor Bartos Approximation (order 6) ) Sin(x) and Taylor Scries Approximation (order 6) IB oe 4 I b 2 ’ 4 OB to <llB»| ayMonoH* Ц^МмйяУ glioUOl I jtxsiw | 1J1»' Рис 10.3 Разложение в ряд Тейлора функции sin<x) и построение ее графика. Для разложения в ряд Тейлора функций ряда переменных используется функция: mtaylorU, v) или nitaylor(f. v, п) или mtaylorff. v, п, w). Здесь: f — алгебраическое условие, v — список имен или равенств, п — необязательное число, задающее порядок разложения: w — необязательный лист целых чисел, задающих «вес» каждой переменных списка v. Эта функция должна вызываться из библиотеки Maple V; > readlib(mtaylor); > mtay1or(stn(x*y).(x.y],10,[2,1]); proc()... end 3 3 xy-1/6x у > mtaylor(exp(-x)*sin(y),[x,y],5): 3 2 3 3 y-xy-1/6y +1/2x y + 1/6xy-1/6x у
Для получения только коэффициента при члене k-го порядка ряда Тейлора можно использовать функцию coeitayl(expr.var.k) Если ехрг — функция ряда перемен- ных. то к должен задаваться списком порядков коэффициентов. 10.6.3. Вычисление асимптотических и иных разложений Для вычисления асимптотических разложений функций (в виде рядов) использу- ются следующие функции: asympt(f.x) или asympt(f.x.n) Здесь: f — функция переменной х или алгебраическое выражение, х — имя переменной, по которой производится разложение, п — положительное целое число (порядок разложения, по умолчанию равный 6). Рис. 10.4 показывает примеры применения этой функции. V 4 МЭИ Я Е* /**• I"V Герта! Qplora ^пЖ» " Iff I *1 Вычнглпше аккмжпигнчпккк рикижемнй > n«y»>pt <ж/(1 ж 2) ж) -I-Жт) > анушр»<пхр(ж ?)•<1-ст1р(ж)) ж) > уь/wpt (sqrt (Р1/2)«Вс-вчв 1J(0. ж) ,ж 3) ЯПже*| (рО^юса | -ДУм<,о<п1 ЦфИдрй ДЖ01 | ДСкбКАР | 9Si Рис 10.4. Применение функции asympt Помимо указанных выше Maple V имеет множество функций для иных разложе- ний выражении в ряд. Например, в пакете расширения numapprox (см. главу 12) имеется функция laurent(expr.var.n), позволяющая получить разложение в ряд Лорана, функция chebyshev(expr. eq/пт. eps) дает разложение в форме полино- мов Чебышева и т.д. 10.7. Интерполяция и аппроксимация функций и данных 10.7.1. Полиномиальная интерполяция данных Если данные некоторой зависимости у(х) заданы векторами X и Y ее дискретных значений, то для получения интерполяционного степенного многочлена — поли- нома можно использовать функцию: in(erp(X,Y.v ) или в инертной форме lnterp(X,Y, v)
Переменная v указывает имя переменной интерполяционного полинома. Векторы X и Y должны содержать n+l координат точек исходной зависимости, где п — степень интерполяционного полинома. he 10.5 показывает технику применения полиномиальной аппроксимации на кнове функции interp с построением графика исходных точек и аппроксимирую- щего полинома. Нетрудно заметить, что график полинома проходит точно через сходные точки — они даны квадратиками •> Meple V Hele «ле 4 |poUp< мп| ЯП В □ ffc Е« УЫ» |nw<i Герм Qaw: -1Д1 *1 Пьлин&иимьнм аппрожспмжцня фуихсяп. голамиоЯ пятью : .'ЧК8ММ > Х;-|1,2.3,4.5|: Y -10.3,1,2,2,11 3 niqit«:-5 f tnterpCX,V а); J - 0Я171Х4- 75837»3*334«л‘-4И211*т-ХЮ2 > fu:—proc. (ж J global и .« ж КГТПКН(Г) end > ql plot(Гп(ж> ж-0..5) ы| tli (st at *) > g2:-etat plotsIsaatter2dj(X, Y) > plot • IdispUy) (|<]1 . q2) ) V Я«Ь«м 4 I Рис 10 5 Пример осуществления полиномиальной аппроксимации пом примере полезно присмотреться к визуализации результатов вычислений построению совместно графика интерполяционного полинома и исходных точек, частности, для построения последних использованы средства пакета stats, аволяющие выводить на график точки с заданными координатами, причем не лько в виде точек, но и в виде маленьких крестиков, кружков, квадратов и рутих фигур. Для выбора типа точек и других параметров графика его надо целить (установив курсор мыши в поле графика и щелкнув левой клавишей ши) и нажать правую клавишу мыши — появится контекстно-зависимое меню итерациями форматирования графика. 1инедем еще несколько примеров использования функции Interp: Мегр([2.5,6]. (9,8.3], х) mod 11; 2 8х *6х*9 iaw>lpha=RootOf(x*4+x+1)); I, alpha i = lnterp([0.1.alphaj.(alpha.alphaA2,alpha*3]. x) mod 2; 2 2 a:«x + (alpha + alpha ♦ 1) x ♦ alpha
10.7.2. Сплайн-интерполяция и аппроксимация Точность полиномиальной аппроксимации катастрофически падает при увеличе- нии степени аппроксимирующих полиномов. От этого можно избавиться, исполь- зуя для аппроксимации отрезки полиномов невысокой степени, применяемые да представления части узловых точек Самым известным методом такой аппрокси мании является сплайн-аппроксимация на основе применения отрезков кубиче- ских полиномов. При этом аппарат сплайн-аппроксимации позволяет получить полиномы, которые дают непрерывность в узловых точках не только представлю емой ими функции, но и ее первых и даже вторых производных Наглядно сплайн-функцию можно представить в виде гибкой стальной линейки, закрепленной в узловых точках и плавно изгибающейся. На это указывает и перевод термина «spline* — гибкая линейка. Благодаря указанным свойствам сплайнов они неплохо описывают функции, представленные небольшим числом узловых точек (благодаря плавности сплайн-кривых). и функции, представляемые очень большим числом узловых точек (поскольку порядок полиномов от этого числа уже не зависит). Недостатком сплайн-аппроксимации является отсутствие общего выражения для всей кривой. Фактически приходится использовать набор ! сплайн-функций для различных интервалов между узловыми точками. Для получения сплайн-функции используется Maple-функция spline(X.Y.var.d) где X и Y — одномерные векторы одинакового размера, несущие значения координат узловых точек исходной функции (причем в произвольном порядке), var — имя переменной, относительно которой вычисляется сплайн-функция и необязательный параметр d задает вид сплайна (linear — линейная функция или полином первого порядка, (quadratic — квадратичная функция или полином второго порядка, cubic — полином третьего порядка, quartic — полином четвер- того порядка). Если параметр d опущен, то сплайн-функция будет строиться ня основе полиномов третьего порядка (кубические сплайны) Технику сплайновой аппроксимации наглядно поясняет рис. I0.6. На нем пред- ставлено задание векторов X и Y узловых точек и четырех сплайновых функций, по которым построены их графики. Для одной из функций (с линейной интерпо- ляцией между узлами) показан вид сплайновой функции. Как видно из рис. Д0.6, сплайновая функция представляет собой кусочную функцию, определяемую на каждом отдельном интервале. При этом на каждом участке такая функция описывается отдельным полиномом соответствующею степени. Функция построения графиков plot «понимает» такие функции и позво- ляет без преобразования типов данных строить сплайновые функции. Для работы с кусочными функциями можно использовать функции convert и piecewise 10.8. Решение нелинейных уравнений и неравенств 10.8.1. Основная функция solve Для решения линейных и нелинейных уравнений в аналитическом виде исполь- зуется достаточно универсальная и гибкая функция solve(eqn. var) или solve((eqnl,eqn2,...Hvarl,var2...J)
•Ь М »plr v Йейа«е 4 |tphne яи*я| □ Гй t* ''°Г* Jwoni tl«O Пример применения mriaim шшроксммшиш > reMll Ibtapliiw) X 'X' Y-’Y’; [ X -(О.1,2.3,4,5): Y:-(0.1 4,3,?.1): > fl: -spline(X. Y, x. linear) .-fc: -spline (X, Y, x,cubic): tq:—«pl lno(X,Y,x .quadrat ic) : tql«pl lne>(X. Y.x.quart ic) * < I x<2 x <3 X «4 nthvntlbr plot((fl fc.fq.fql), x- 1..4.у--1..5,color-black) Рис 10.6 Задание сплайновой аппроксимации и построение графиков полученных функций. где: eqn — уравнение, содержащее функцию ряда переменных, var — переменная, во которой ищется решение. Как уже отмечалось в главе I, если решение содержит повторяющиеся выражения, Maple V обозначает их как %1, %2 и т.д. и выводит решение с такими переменными. Характер решений можно изменить с помощью глобальных переменных: .SolutionsMayBeLost — при значении true дает решение при возврате функцией solve значения NULL: .MaxSols — задает максимальное число решений; -EnvAllSolutions — при значении true задает выдачу всех решений. В решениях помимо переменных %N могут встречаться следующие обозначения: .NN — указывает на неотрицательные решения: JJ — указывает на решения в бинарной форме; J — указывает на то. что решение содержит целые числа. 8 форме 1 solvefsubtopicl I «озыожны расширения функции solve следующих типов: floats functions identity ineqs linear radical scalar series system 1 При решении систем уравнений они и список переменных задаются как множе ства. т.е. в фигурных скобках. При этом и результат решения получается в виде множества. Чтобы преобразовать его к обычному решению, нужно использовать функцию assign, которая обеспечивает присваивание переменным значений. Iоятых из множества.
Функция solve старается дать решение в аналитическом виде. Это не означает что ее нельзя использовать для получения корней уравнений в численном виде Просто для этого придется использовать функцию evalf или convert. Если резуль- тат решения представлен через функцию RootOf. то получить все корни можно с помощью функции allvalues. 10.8.2. Решение одиночных нелинейных уравнений Решение одиночных нелинейных уравнений виде [(х)=0 легко обеспечивается функцией solve(l(x),x) На это указывают следующие примеры: > solve(xA3-2’x+1jc); 1/2 1/2 1.1/2 5 -1/2. -1/2 -1/2 5 > solve(x*(3/2)=3.x); 2/3 3 > evatff): 2.080083823 > solve(sqrt(ln(x))=2,x); exp(4) > evatff); 54 59815003 Часто бывает удобно представлять уравнение и его решение в виде отдельны объектов, отождествленных с определенной переменной: > е1:={2*х*2+х+3=0}; 2 е1 := (2 х + х + 3 = 0} > s:=sotve(e1,x); 1/2 1/2 s := {х = -1/4 ♦ 1/4 I 23 }, {х = - 1/4 -1/4 I 23 } В частности, это позволяет легко проверить решение (даже если оно не одно. ка> в приведенном примере) подстановкой subs: > subs(s(1],e1); 1/2 2 1/2 {2 (-1/4 + 1/4 I 23 ) + 11/4 + 1/4 123 =0} > evalf('): {0 = 0} > subs(s[2],e1); 1/2 2 1/2 {2 (- 1/4- 1/4 I 23 ) + 11/4- 1/4 123 0) > evalf(’); {0 = 0} Сводящиеся к одному уравнения вида // (х)=(2(х) также решаются функцнег olve(fJ(x)«f2(x),x):
> solve(sin(x*2)-x/20,x). 2 20 sm(RootO((_Z - 400 sm(_Z))) > allvaluesf); 20 sin(3 054101141) > solve({exp(x)=sin(x)}.x); {x = RootOf(_Z - ln(sin(_Z)))} > allvalues(’); {x = 3627020561 - 1 133745919 I} > a =so<ve({x*5-2,x=-3},x); 5 a = {x - RootOf(_Z - 2 _Z ♦ 3)} > allvalues/a); {x = -1 423605849}. {x = - 2467292569 - 1 320816347 I}, {x = -.2467292569 ♦ 1 320816347 I). {x = .9585321812 4984277790 I}. {x = .9585321812 + 4984277790 I} Обратите внимание в этих примерах на эффективность применения функции allvalues, позволяющей получить решения, выраженные через функцию RootOI в явном виде. 10.8.3. Решение тригонометрических уравнений Функция solve может использоваться для решения тригонометрических уравне- ний > solve! sin(x)=0 2.x), 2013579208 >solve(sin(x)=1/2,x). 1/6 Pi > evalfC). 5235987758 Однако из приведенных примеров видно, что при этом найдено одно главное решение. Периодичность тригонометрических функций и связанная с этим мно- жественность решений при этом проигнорированы Однако можно попытаться нанти все периодические решения, выполнив следующую команду > ^EnvAIISolutions =true; Указанная в ней системная переменная отвечает за поиск всех периодических решений, когда ее значение равно true, и дает поиск только главных решений при значении false, принятом по умолчанию Так что теперь можно получить >solve(sin(x)=1/2,x). 1/6 Pi * 273 Pi _В1~ * 2 Pi _Z1- Ha рис 10.7 показан более сложный случай решения нелинейного уравнения вида Il(x)=f2(x). где fl(x)-sin(x) и f2(x)-cos(x)-l.
Решение дано в графическом виде и в аналитическом для двух случаев — нахождения главных значений корней и нахождения всех корней. -Ь Мхйг V Векше 4 ]| >п|И1г<| 17Ц ______ ЯП С №£<**•" *«•' Fotme Q»on. vsnta. tM J4JJS1 Гешенпс тригонометрического уроженке, имеющего периодические решения *1 > rest art:t1:-«in(к):f2:«coalil 1: Ж > pint((f1,f2),«- 15 15,coloc-O) > <го1ве(Г1-Г?,е) • 1 --Л.0 > evelff") -1 510796327 0 > EnvAllSolutione :• true solve( 11-12, X ) J ДП>:.| gyMnwHlWiH ChlO | NOUIM|[фИ«Ые V ННоме 4 E” »T3 Рис 10 7 Пример решения уравнения, имеющего периодические решения В решениях встречаются переменные _В1” и _ZI". означающие ряд натуральных чисел. Благодаря этому через них можно представить периодически повторяющи- еся решения. 10.8.4. Решение систем нелинейных и трансцендентных уравнений Функция solve может использоваться для решения систем нелинейных и транс- цендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Ниже приведены примеры решения уравнений; > restart, > solve({x,y=a.x+y=b}.{x,y}), 2 2 (у = RootOf(_Z • _Z b ♦ а), х = -RootOf(_Z - _Z b + a) + b) > aWvalues(’); 2 1/2 2 1/2 {y = 1/2b♦ 1/2(b -4a) .x = 1/2b-1/2(b -4a) }. 2 1/2 2 1/2 {y= 1/2 b-1/2 (b -4 a) , x 1/2 b ♦ 1/2 (b -4 a) ) > s:=so(ve({x,y=2.x+y=3},(x.y}); s ;= {y = 1, x = 2}. (y = 2, x = 1} > assign(s);x.y; 1 2
>unassign('x');y=y‘: У:» У >х;у, х У В этих примерах достаточно отчетливо видна техника работы с функциями solve и assign. В конце примеров показано восстановление неопределенного статуса аеременных х и у с помощью функции unassign и снятия определения переменных с помощью заключения их в прямые апострофы. 10.8.5. Функция RootOf В решениях уравнений нередко появляется функция RoolOf, означающая, что корни нельзя выразить в радикалах Эта функция применяется и самостоятельно в виде: RootOf(expr) RootOKexpr, х), где ехрг — алгебраическое выражение или равенство, имя переменной, относи- тельно которого ищется решение. Если х не указана, ищется универсальное решение по переменной _Z. Когда ехрг задано не в виде равенства, решается уравнение ехрг = 0. Для получения решений вида RootOf в явном виде может использоваться функция allvalues. Примеры применения функции RootOf: >RootOf(xA2*1=0. х); 2 RootOf(_Z *1) > aHvaiuesfy, 1,4 > RootOf(a*bA2*a/b, b); 3 RootOf(_Z +1) >RootOf(a’x+b, x); - b/a >RootOf(x*3-1, x) mod 7; 3 RootOfC Z +6) >alivalues("), 1/3 1/3 1/2 1/3 1/3 1/2 1/3 -6 .1/2 6 -1/213 6 ,1/2 6 *1/213 6 >ewaifC); -1 817120593. .9085602965 -1 573672596 I, 9085602965 + 1.573672596 I >RootOf(xA2-2*x+1, x) mod 5:
Итак, функция RootOf является эффективным способом представления решения в компактном виде. Как уже отмечалось, наряду с самостоятельным применением она часто встречается в составе результатов решения нелинейных уравнений. 10.8.6. Решение неравенств Решение неравенств существенно расширяет возможности функции solve. При этом неравенства задаются также, как и равенства. Приведенные ниже примеры поясняют технику решения неравенств: > solve(5*x>10,x), RealRange(Open(2), infinity) > solve(xA2-2’x-1>0,x); 1/2 RealRange(-infimty. Open(1 -2 )), 1/2 RealRange(Open(2 +1), infinity) > solve((x-1)‘(x-2)/(x-3)<0,x); RealRange(-infinity, Open(1)), RealRange(Open(2). Open(3)) > solve(ln(x)>2,x); RealRange(Open(exp(2)), infinity) > solve(exp(x)’x>=1 ,x); RealRange(LambertW(1), infinity) > soive(a’x < b. (x)), signum(a) b {signum(a) x <------------} a > solve({x*y‘z>0.x>-1 ,y+z>10},{x.y,z}); {10 < z, -1 < x, у = 0), {10 < у, -1 < x, z = 0) В последнем примере показано решение системы неравенств. 10.8.7. Решение функциональных уравнений Решение функционального уравнения, содержащего некоторую функцию Кх) в составе равенства, заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры: > A:=solve(f(x)A2-x*1,f): A -a procfx) RootOf(_ZA2 - х + 1) end > convert(A(x).radical); 1/2 (x-1) > B:=solve(f(x),x=ln(xA2).f): Error, (in solve/Cancellnv) too many levels of recursion > C:=solve(f(x)*xA2=a*xA2+b,x+c,f); C := proc(x) (a‘xA2 + b*x + c)/xA2 end
> convert(C(x), radical), 2 ах ♦bх♦с 2 х 10.8.8. Решение в численном виде — функция fsolve Для получения численного решения нелинейного уравнения или системы нели- нейных уравнений удобно использовать функцию fsolve( eqns, vars, options ) Эта функция может использовать следующие опции: complex — находит один или все корни полинома в комплексной форме; fulldigits — задает вычисления для полного числа цифр, заданного функцией Digits. maxsols=n — задает нахождение только п корней; interval — задается в виде а..Ь или х = а..Ь или {x=a..b, y=c..d, ...} и обеспечивает поиск корней в указанном интервале. Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры: > fsolve(sin(x)=0 5); 2.617993878 > (solve) sm(x)=0.5,x=4. .8); 6 806784083 > fsolve(2*xA2+x-1=10,x); -2 608495283. 2.108495283 > fsolve(xA5-x,x); 0. -1.. 1. > fsotve(xA5-x,x, complex); 0. 1.1,1. Заметим, что локализация поиска корней в заданном интервале позволяет оты- скивать такие решения, которые не удается получить с помощью функций solve и fsolve к обычном применении. 10.8.9. Решение рекуррентных и иных видов уравнений Функция solve имеет ряд производных от нее функций. Одну из таких функций fsolve мы рассмотрели выше. В справочной системе Maple V можно найти и ряд других функций, например, rsolve для решения рекуррентных уравнений, isoIve для решении целочисленных уравнений, msolve для решения по модулю m и т д. Здесь мы рассмотрим решение важного класса уравнений — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам. Для решения рекуррентных уравнений используется функция rsolve:
rsolvefeqns, fens) rsolvefeqns, fens, ’genfunc'(z)) rsolvefeqns, fens, ’makeproc’) Здесь: eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя. генерирующее функциональную переменную. > rsolvefffn) = -2*f(n-1) • f(n-2). l(k)); k k (4(0) - f(1)) (k + 1) (-1Л (f(1) > 2 «0» (-1) > reolve({f(n) = -3*f(n-1) - 2*f(n-2). f(1 ,2)=1), {f}); n n {f(n) = -3(-1) + (-2 )} > rsolve({y(n) = n*y(n-1), y(0>=1). y); GAMMA) n + 1) > rsolve({y(nfy(n-1) + y(n) - y(n-1) = 0. y(0)=a). y); a 1 + n a > rsolve({y(n+1) + f(n) = 2‘2*n + n, f(n+1)- y(n) = n - 2*n + 3, y(k=1..5)=2*k-1, f(5)=6}, {y, f}), n {f(n) = n + 1, y(n) = -1 ♦ 2 } > rsolve({F(n) = F(n-1) ♦ F(n-2), F(1..2)=1}, F. genfunc (x)); x 2 -1 ♦ x + x Приведем примеры применения функций (solve и msolve: > isolve({2*x-5=3’y}); {x»4 + 3_N1,y«1 + 2_N1) > msolve({2,x-3*y=2,5*x+y=3).13). {y = 12, x = 6} > msolve({2*x-3'y=2,5"x+y^3},5); fy = 3.x = 3} Ввиду очевидности примеров воздержимся от более подробного обсуждения этих функций. Функции solve и fsolve могут решать уравнения, содержащие интегралы и специальные математические функции: > f:=a->inl(xA2,x=0 а); а / I 2 f := а -> | х dx / О
> solve(f(a)=2.a); 1/3 1/3 1/2 1/3 1/3 1/2 1/3 6 ,-1/2 6 + 1/2 13 6 ,- 1/2 6 -1/213 6 > fsolve(f(a)=2.a); 1 817120593 > sotve(BesseU(0,x)=x*2,x); 2 RootOf( Bessel J(0, _Z) - _Z ) > aHvalues("); .8988768155 > solve(erf(x}=0 5.x); 1 552961525- 1.7764411951 > erf(’), 9 5000000010 - .5940571521 10 I » fsolve(erf(x)=0 5.x); .4769362762 Обратите внимание на два последних примера — решение уравнения ег((х)=0.5. Функция solve в этом случае находит нетривиальное приближенное решение в комплексной форме, тогда как функция fsolve находит обычное точное решение. 10.9. Решение дифференциальных уравнений Важное место в математических расчетах занимает решение дифференциальных уравнений. К нему, в частности, обычно относится анализ поведения различных систем во времени (анализ динамики), а также вычисление различных пол< й. Maple V позволяет решать как одиночные дифференциальные уравнения, так и системы дифференциальных уравнений как аналитически, так и в численном виде. 10.9.1. Решение системы простых дифференциальных уравнений Для решения системы простых дифференциальных уравнений (задача Коши) используется следующая функция: dsolve(deqns, vars) или dsolve(deqns, vars, option) Здесь: deqns — одно дифференциальное уравнение или система из систем дифференциальных уравнений первого порядка с указанием начальных условий, vars — переменная или переменные, относительно которых ищется решение, option — необязательный параметр, указывающий на метод решения. Параметр option задает один из методов решения: exact — аналитическое решение (принято по умолчанию); explicit — решение в явном виде; laplace — решение через преобразование Лапласа:
series — решение в виде ряда с порядком, указываемым значением переменной Order; numeric — решение в численном виде. Для решения задачи Коши в deqns надо включать начальные условия, а при решении краевых задач — краевые условия. Если Maple способна найти решение при числе начальных или краевых условий меньше порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т.д. Они же могут быть при аналитическом решении системы, когда начальные условия не заданы. Если решение найдено а неявном виде, то в нем появится параметр _Т. Производные при записи дифференциальных уравнений могут задаваться функ- цией diff или оператором D. Выражение deqns должно иметь структуру множества и содержать помимо самой системы уравнений их начальные условия. На рис. 10.8 приведены примеры решения простых дифференциальных уравнений первого и второго порядка в аналитическом виде. Mapto V 4 |d.t ew.| ЯГ1П 3 f* l* Лех Fefin» gphru tfrdnx .IffI Ml P«un®f дифференциальных уравнений в аналитическом виде 2. > dsolve(dlff(y(x)x) у(х) - sin(x)»x, у<х)),- 1.11 х «О 1 “ - гсг’й ж) « - ~с<з»(х )- 7 аЫ t) л + J?j е > Haul i i I (у <я 1 . ) sJlu(k)*i у(»)) Г(1 > -2 емм) - яы л) л + _Cj + J?2 I > d«:>n*diff(y(x) . rSC) k*<lifГ(у(х) , х) > ух О у(0)-0,у(1)-1: > d»olvo(|dn, ух 0 | у(«)) ДПусж | ДОшюcocTQf HF | ЗуМсюмИ Wod-ctIO V Н«1е«» 4 ЧКЯч II 07 Рис. 10 8 Примеры решения дифференциальных уравнении первого и второго порядка. На рис. 10.9 представлено решение системы из двух дифференциальных уравне- ний различными методами — в явном виде, в виде разложения в ряд и с использованием преобразования Лапласа. Здесь следует отметить, что решение в виде ряда является приближенным решением и полученные при этом аналитиче- ские выражения отличаются от явного решения и решения с применением преобразования Лапласа. Следует отметить, что несмотря на обширные возможности Maple V в аналити- ческом решении дифференциальных уравнений оно возможно далеко не всегда. Поэтому, если не удается получить такое решение, полезно попытаться найги решение в численном виде.
СХЕЗХЕККШЯМВМ 23 Гй ЕФ View inieit Гагм» QotMm z'rdow <•© f ? 'систрцы из двух диф ф е ренцизЛБньгг уравнении <111 Г(у|1Г) . х)-?*г («Т - у| ж) г х) - I У («) . »С»Ц {1*у« у(0) О.г(0) Il fcri«l а SVT = — Л 1 1 з i-a*> 1 , (Дх1 «у» у<0) О ₽ < »• । ’- --X5 ♦ — >74 ->< 20* *30’ 5040 ' * 13 д 5 53 г \<Л 1 ' 241 * 40 * ~ 720 ’ + 50«i * О, т <0)-11 , fcne , I aplaco) 1 1 3 1 5 (-2х. 1 -- -• ♦ 2 е 3 I ЗУМкиио» ||4»м««й JKC-aOOT | | *?Ек «24 Рис 10 9 Решение системы из двух дифференциальных уравнений различными методами. 10.9.2. Численное решение дифференциальных уравнений Для решения дифференциальных уравнений в численном виде используется функция dsolve с опцией numeric или type=numeric. При этом решение возвраща- ется в виде специальной процедуры, но умолчанию реализующей широко извест- ный метод решения дифференциальных уравнений Рунге-КуттаФельберга порядка 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) при попытке решения заданной системы дифференциальных уравнений. Послед- нее достаточно наглядно иллюстрирует рис 10.10. Указанная процедура возвращает особый тип данных, позволяющих найти реше- ние в любой точке или построить график решения (или решений) Для этого Maple предлагает ряд возможностей, и одна из них представлена на рис. 10.12 (см последнюю строку ввода) При этом используется функция plotlodeplot) из пакета odeplot. предназначенного для визуализации решении дифференциальных уравнений. Еще один пример решения системы дифференциальных уравнений показан на рис. 10.11. На этот раз на одном графике даны зависимости у(х) и z(x), (редставляющих полное решение заданной системы При этом процедура имеет особый вид lislprocedure и для преобразования листа выходных данных в векторы решения Y и Z используется функция subs. В список параметров функции dsolve можно явным образом включить указание на метод решения, например, опция method=dverk78 задает решение методом Рунге- Кутта порядка 7 или 8. С помощью опции ’аЬ5егг’=аегг можно задать величину абсолютной погрешности решения, а с помощью опции minerr’=mine — минималь-
•iMa'thv А М*1ап>>| ЯГШ а» | <Н yiww FcfiMf Qpfcww sfr'njow tf^*C Решение системы иэ двух дифференциальных уравнении численным методом •у» - <1111 <у<х) у(х) х dill U(x). х)-у(х) loua •- |у<х). •(ж)| Г - 1яч I w (| «уч у(О)-0.г(0)-1) fens niiwirle) 9 9 от ?• F ytVtfr^fUjt) end > Fill I* • г.Л» >= 3 W»Ml82s44W.jVt> 2Э4Т?>5Ю«ь'Л.ЦЦ > plot » j (t (t г<«)),0 ? S.iatxil* ix,?|) и. »“ оа" ‘ 1 7~«в ‘ г ‘ ‘ г» Япу«| ftttouco I уМммЫ ||Ф>М«вЫ~ giXUOT | Д1.АНАР | *JSJ *J J Рис 10.10 Решение системы дифференциальных уравнении численным методом rkM5 с выводом графика решения •Ь Meipir V R Дг Air 4 I iir< ww»l| •3 ЕЙ t* ¥** !<** Corn* рмж №t> xlftl*! Решение епгтемы ю двух дифференциальных уравнений с выводом jJ графиков решения —' > *У» <1ItГ(У(•) К)-?* ' (Х)»ч1п<ж) у(я) » бДГГ(ХСа),х;^у<х)•Гел* - |у(х).а(х)| £1 )*о> vet I »yw, у (О)— О, »(0J-1) , tenu, t yfie-niuaer ic, output -1 t «tpixxiuduxu), 3 d 4W •~ylx) = 2«x)»jr)-y(»)-r. —RX) = y(X) At fx Jet-» lyta/Hjt)) zF =|i - ipronx) end Ax'1 - :pr»«<) емН.у(а>*(prer!xi endi] > Y -euhsCF.y<x)):1--iubt(l,l(l|); > pjut (|Y,Z| 0 k) 1ВП»с« | ty yearn | у МемдГ W Mapl» V ^OoSHeP | gOaCOT Рис. 10.11. Решение системы дифференциальных уравнении численным методом с выводом всех графиков искомых зависимостей ную величину погрешности. В большинстве случае эти величины, заданные по умолчанию, оказываются приемлемыми для большинства расчетов. Для решения достаточно сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет Detools,
содержащий самые изысканные средства для графической визуализации резуль- татов решения дифференциальных уравнений. Эти средства более подробно мы рассмотрим в дальнейшем 10.9.3. Структура неявного представления дифференциальных уравнений DESol В ряде случаев иметь явное представление дифференциальных уравнений нс целесообразно. Для неявного их представления в Maple V введена специальная структура DESol(expr,vars), где. exprs — выражение для исходной систем дифференциальных уравнений, vars — заданный в виде опции список переменных (или одна переменная). Структура DESol образует некоторый объект, дающий представление о дифферен- циальных уравнениях, чем-то напоминающее RootOf. С этим объектом можно обращаться как с функцией, т.е. его можно интегрировать, дифференцировать, получать разложение в ряд и вычислять численными методами. На рис 10 12 показаны примеры применения структуры DESol. Rebate 4 (Urifrtfed (2)| а Еь Е* уж» хм* Гошм Qreoni ytadn» Примеры применения структуры DESol > del - DESol( П(у) у, у ) */м1®инГ>л}-у). f/П > D(del ) -del * > de? - DESol( dlff(y(x),s) y(x), y(x) ly(0)-l|) ** *DE3ol(([ — 1 Г 4)» 11 ] > del(X)-de? DESn^ff—y(x) jKx)). (Т1Л) j-DESv^(| |- y(x)j. iytx)). (WO) » 1) > dlft(deP.x) -W: > poly:-convert(series(do? x—0).po lyrical _ 11 ЙПжш] fttWxan—s»HP I ysir«iwllVA»a cMO |(d8>ИлоМ V note»» « Э2 'J-i >» Рис 10 12 Примеры применения структуры DESol Обратите внимание на последний пример В нем структура DESol использована для получения решения дифференциального уравнения в виде степенного ряда. 10.10. Исследование аналитических функций Исследование функций обычно заключается в определении координат особых точек функции и ее значении в этих точках К сожалению, пока нет средств, автоматизирующих исследование аналитических функций и разом дающих все ее характеристики — экстремумы (максимумы и минимумы), корни (дающие нуле-
вые значения функции), точки перегибов и разрывов, асимптоты и т.д. Поэтому функции приходится отдельно анализировать С помощью функции solve легко находятся значения независимой переменной х функций вида f(x), при f(x)=O. Ряд функций служит для вычисления экстремумов, максимумов и минимумов функций, а также для определения ее непрерывности. 10.10.1. Поиск экстремумов функций Библиотечная функция extrema(expr, constr. vars.’nv') позволяет найти экстремум выражения ехрг при ограничениях constr при пере- менных var. по которым ищется экстремум. Найденные координаты точек экстре- мума присваиваются переменной ’nv’. Эта функция находится в стандартной библиотеке и потому должна вызываться командой readlib(extrema). Параметры vars и ’nv’ задаются как опции, т.е. могут и отсутствовать. Ниже даны примеры применения функции extrema: > readlib(extrema) extrema(x’exp(-x),{}.x.‘s );s; <exp(-1)} «х = 1» > extrematsinlx^Z.O.x’s'hs; <0.1} {{x = -1/2 Pi}, (x = 0}. (x = 1/2 Pi}} > exlrema(x+y/z, (xA2+y*2+zA2)=1, {x.y.z).’s’ );s; 4 2 4 2 (max(1 - RootOff Z +1) . -1 * RootOf( Z *1) ). 4 2 4 2 min(1 - RootOfl Z * 1) . -1 + RootOf(_Z * 1) )} 4 3 4 {{y = RootOf(_Z *1) . x = -1. z = RootOf(_Z +1)}. 4 3 4 (x = 1,y = -RootOf(_Z +1) , z = RootOt(_Z ♦ 1)}} 10.10.2. Поиск минимумов и максимумов аналитических функций Для поиска минимумов и максимумов выражений (функций) ехрг служат функ- ции стандартной библиотеки: minimize(expr) tninimizefexpr, vars) minimize(expr vars, infinite') minimue(expr. vars. ranges) maxim ize( ехрг) maximize(expr. vars) maximize(expr, vars. ‘Infinite’) maximizetexpr. vars, ranges) Эти функции могут разыскивать максимумы и минимумы как функции одной, так и ряда переменных; они указываются списком переменных vars. Опция 'infinity' означает, что поиск минимума или максимума выполняется по всей числовой оси. а ос.1 vtyes позволяет задавать пределы изменения переменных при поиске
Примеры применения этих функций, приведенные ниже, наглядно поясняют технику поиска минимумов и максимумов: > readlib(minimize) > minimize(-sin(x)/x); -1 > mlnimizefx'expC-xJ.'Infinite); х ехр(-х) > fninimize(x*2 * у*2, (х, у), {х=-10. 10. у=5 .20)); 25 > readlibf maximize) > maximize(sin(xyx); 1 > maximizefx'expCx)); exp(-1) > maximize(xA2 + y*2, {x. y). {x=-10 10, y=-10 10}), 0 10.10.3. Анализ функций на непрерывность Функции iscontfexpr, х = а .. b) iscontfexpr, х = а . b. 'closed') позволяют исследовать выражение ехрг в виде зависимости от переменной х на непрерывность. Если выражение непрерывно, возвращается логическое значение true, иначе — false. Опция 'closed' показывает, что конечные точки должны также проверяться Другая функция discont(f, х) позволяет определить точки, в которых нарушается непрерывность функции f(x). Она вычисляет все точки в пределах изменения х от до +<» Результаты вычислений могут содержать особые экстра-переменные с именами вида _Zn* и _NNn'. В частности, они позволяют оценить периодические нарушения непрерыв- ности функций. Примеры применения функции iscont и discont приведены ниже: > readhb(iscont) > iscont( 1/х. х=0..1); true > iscont( 1/х. х=0 .1 'closed ); false > iscont( tan(x), x=0 Pi/2 ) true
> iscont( tan(x). x=0..Pi/2. dosed ), false > iscontf 1/(x+a), x=-1..1); FAIL > discont(arctan( 1 /2’tan(2*x))/(x*2-1 ),x). {-1. 1, 1/2 Pi_Z4~ + 1/4 Pi} > disconl(1/(x-2),x); {2} > discont(V((x-1)*(x+2)),x); 0.-2} > discont(sin(x)/x.x); {0} > discont(GAMMA(x/2),x); (-2 _NN5~} 10.10.4. Нахождение сингулярных точек Многие операции, например интегрирования и дифференцирования, чувствитель- ны к особенностям функций, н частности, к ее разрывам и особым точкам Функция singulartexpr, vars) позволяет найти особые (сингулярные) точки выражения ехрг. в которых она испытывает разрывы. Список переменных может указываться опционально. Примеры применения этой функции приведены ниже > readhb(singular) > smgular(x+y+1/(x), {х.у»; {х = -infinity, у = у), (х = infinity у = у}, {у = -infinity, х = х}. (у = infinity, х = х}, {х = 0, у = у} > singular(ln(x)/(xA2-a)). 2 {а = а. х = 0), {а = х , х « х) > singular(tan(x)); {х = _N Pi ♦ 1/2 Pi} > singular(1/tan(x)). {x = Pi_Z-} » singular(Psi(x‘y},{x,y)), _NN -1 {x =----------• У = У} У Появление и трактовка специальных переменных в результатах вычислений этой функции уже пояснялась ранее. Комбинированное применение всех описанных в этом разделе функций позволяет получить достаточно полные и точные данные об исследуемых функциях.
10.11. Функции из отдельных кусков — piecewise Для создания функций, составленных из отдельных кусков. Maple V располагает интересной функцией piecewise(cond_l.f_l, cond_2.(_2.cond_n,f_n, (.otherwise), где: Li — выражение, condj — логическое выражение. Lothcrwise — определя- емые опционально выражения. В зависимости от того или иного условия эта функция позволяет формировать ту или иную аналитическую зависимость. Рис I0.13 показывает задание функции f(x), содержащей три характерных участка. По определенной через функцию пользователя зависимости f(x) можно, как обычно, построить ее график •S Mepte V АЫвлав 4 |paar«1 wn>| 1ЧГ] 13 Я tb ЬМ М"* Гор* 0«*и« ±'«х)ои Ии; .131 »1 Игпо.».>овиш« функции pi»nnic| л! > f.-X pi.ee.«*•!«• (ж 2 4x2 -?*х 2)- i J • ж -* piec<iw»ei 4 < ж ,ж .-2х ) > f(i) • -i > othrrvn»! > plot (f (x) ,x* 'i . 5,color-black) • > plof(<iiff(f(x).r),i- -S S. coIor-black) Рис. 10 13. Пример задания и применения функции, составленной из отдельных кусков Важно отметить, что созданная с помощью piecewise зависимость может участво- вать в различных преобразованиях. Например, на рис. 10.13 показано, что она дифференцируется и можно построить график производной этой функции. При этом каждая часть функции обрабатывается отдельно. 10.12. Прямое и обратное Z-преобразования Прямое и обратное Z-преобразования широко используются в решении задач автоматического управления. Эти преобразования задаются функциями: ztransG. п, z) — прямое преобразование функции f(n) в f(z); invztrans( f. z, п) — обратное преобразование f(z) в Цп). Заметим, что прямое Z-преобразование базируется на соотношении ztrans(f(n),n,z) = sum(i(n)/z'n.n=O..infinity), представленном на Maple-языкс. Примеры применения Z-преобразоваиий представлены ниже:
>readlib(ztrans); > a =ztrans(nA2.n,z); proc(f, п, z)... end Z (1 ♦ Z) a ;=---------- 3 (2’1) > invztrans(a.z,n); 2 n Z-преобразования осуществляются функциями ядра и стандартной библиотеки. В глине 12 будет рассмотрен ряд других интегральных преобразовании, в частности, Лапласа и Фурье, которые реализуются с помощью пакета расширения inttrans (ногсгральные преобразования).
Глава 11. Операции символьной математики 11.1. Основные операции с выражениями 11.1.1. Работа с частями выражений Выражения (ехрг) или уравнения (eqn) обычно используются как сами по себе, так и в ниде равенств или неравенств. В последнем случае объекты с выражени- ями имеют левую и правую части. Для простейших .манипуляций с выражениями полезны следующие функции: cost* a) Возвращает число сложений и умножении в выражении а (библиотечная функция). Ihs(eqn) Выделяет лсвоую часть eqn. ihs(eqn) Выделяет правую часть eqn. normal(expr) Нормализует (сокращает) ехрг в виде дроби. nutner(expr) Выделяет числитель ехрг. denomtexpr) Выделяет знаменатель ехрг Ввиду очевидности действия этих функций ограничимся примерами на их приме- нение: > readlib(cost): > cost(x'l3+bA2-c); 2 additions ♦ 3 > lhs(sin(x)*2+cos(x)A2=1); 2 2 sin(x) ♦ cos(x) > rhs(S4n(x)*2+cos(x)*2=1), 1 > normal(2M<-3/6+&12); 3 2 > t.»5’(&-b)*2/(aA2-2*a‘b-bA2); 2 (a-b) f := 5-------------- 2 2 a -2a b-b > numer(f); 2 -5 (-a ♦ b)
> denom(f). 2 2 -а + 2 а b + Ь Приведем еще три функции для работы с выражениями (включая списки): nops(expi) т " — - ' — — - Возвращает число объектов первого уроаня в выражении ехрг ор(ехрг) Возвращает список объектов первого уровня в выражении ехрг ор(п,ехрт) Возвращает n-й объект первого уровня в выражении ехрг I (иже представлены примеры применения этих функций: > nops(a*b/c); 2 > op(a+b/c); а. Ь/с > ор(1,а+Ь/с): а > ор(2,а+Ь/с); Ь/с 11.1.2. Преобразование выражений в тождественные формы с помощью функции convert Многие математические выражения имеют различные тождественные формы Порою преобразование выражения из одной формы в другую позволяет получить результат более удобный для последующих вычислений Кроме того, различные функции Maple работают с разными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных. Основной функций для такого преобразования является функция convert: convert(expr. form, arg3, ...) Здесь: ехрг — любое выражение, form — наименование формы. arg3, ... — опционально заданные аргументы Convert одновременно простая и очень мощная функция, что определяется возможностью задания множества опций. Их полный перечень дан ниже: Airy Bessel D Ei GAMMA Heaviside PLOT3Doptions PLOToptions POLYGONS RootOf array base binary binomial bytes con (гас convert/'*’ convert/ convcrtlerfl eonvertlerfc] decimal degrees diff disjeye double equality exp expln expsincos factorial Float (uliparfrac hex hornet hypergeom mt list listlist In mathorn er matrix metric mod2 multiset name octal or parfrac permlist piecewise
polar polynom pwlist radians radical rational ratpoly set signum sincos sqrlree std stdle table tan trig vector Многие из этих опций очевидны с первого взгляда Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, десятичное, шестнадцатеричное и восьмеричное представление. Опция vector задает преобра- зование списка в вектор (напоминаем, что список и вектор — разные типы данных), а опция matrix — в матрицу. Приведем примеры применения функции convert: > convert(l23. binary): 1111011 > V=convert([1,2,3.4).vector), V:«[1,2. 3.4] > type(V, vector); true > convert( [a.b.c.d] ); a * b ♦ c * d > f - seq( x[i]An, i=1..4 ); n n n n f:=x[1] . x[2] ,x[3) , x[4] > convert([f], n n n n x(1] x[2) x[3] x(4] > convert( 1 23456789. fraction ). 1356579 1098829 > f •« (xM+xy(x*2-1); 4 x ♦ x f:»-------------------- 2 x -1 > converts, parfrac, x); 2 1 x * 1 +------- x-1 > s = senes(f,x,5); 3 4 5 8 = - X - X - X ♦ O(x ) > converts, polynom), # Удаление члена с ошибкой 3 4 -X - X - X
> convert(sin(x),exp); I 1 \ -1/2 (exp(l х)-----------| \ ехр(1 х) / > convert(sinh(x). exp). 1 1/2ехр(х)-1/2-------- ехр(х) > convert(arcsinh(x),lny 2 1/2 in(x + (x*1) ) > convert(bioomial(m,n), factorial); tn! n! (m - n)l 11.1.3. Преобразования выражений с помощью функции combine Еще одной мощной функцией преобразования выражений является функция combine Она обеспечивает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция может записываться в трех формах. combine(f) combine!f. n) combine!!', n. optl. opt2, ...) Где: f — любое выражение, множество или список выражений, п — имя, список или множество имен, optl, opt2, ... — имена опций Во втором аргументе можно использовать следующие функции: exp In power ♦ng Psi poly log radical aba signum plus atatsign conjugate plot product range Могут указываться также следующие опции: arvtan al at sign conjugate exp In polylog ромсг Psi radical trig Примеры применения функции combine представлены ниже: > combine(exp(2,x)A2.exp); ехр(4 х) > combine(2*sm(x)A2*2*cos(x)A2); 2 > combine(sin(xrcos(x)), 1/2 sin(2 х)
> combine(lnt(x,x=a. b)-lnt(xA2,x=a. b)), b I I 2 1 x - x dx I / a Эти примеры далеко не исчерпывают возможности функции combine в преобразова- нии выражений. Рекомендуется обзорно просмотреть примеры применения функции combine с разными опциями, приведенные в справочной системе Maple V 11.1.4. Контроль за типами объектов Выражения и их части в Maple V рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов Одной из основных функций, обеспечивающих такой контроль, является функция what- type(object), возвращающая тип объекта (например, string, integer, float, fraction, function и т.д ) Могут также возвращаться данные об операторах Примеры применения этой функции даны ниже: > eqs ={x+y+z=6,y/x=z-1,z-x=2}: eqs ={x*y + z = 6. y/x = z-1.z-x = 2) > res =sdve(eqs,{x,y.z}). res := {z = -2, у = 12, x = -4}, {y = 2, z = 3. x - 1) > subs(res.eqs). {2 = 2. -3 = -3, 6 = 6} > whattype{2+2): integer > whattype(12 /3); float > whattype(V3), fraction > whattype(sin(x)), function > whattype([a,b.1,2.3J). list > whattype(a+b+c); ♦ > whattype(a’b), С помощью функции type(object.t) можно выяснить, относится ли указанный объект к соответствующему типу t, например: > type(2+2. integer); true
> typetsin(x).function). true > type(fhelloj.string); false > type(hello‘,string), true > type(1/3, integer); false При успешном соответствии типа объекта указанному (второй параметр) функция type возвращает логическое значение true, в противном случае — false. Для более детального анализа объектов может использоваться функция hastype(expr, t), где: ехрг — любое выражение и t-наименование типа подобъекта. Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении ехрг Примеры применения этой функции даны ниже: > hastype(2+2 integer); true > hastype(a+c,'+'): true > hastype^’sinfxj.function); true Еще одна функция has(f.x) возвращает логическое значение true, если подобъект х содержится в объекте f и false в ином случае: > nas(2’sin(x),2). true > has(2,sin(x),T). false > has(2‘stn(x),1+1); true Следует отметить, что соответствие подобъекта выражения указанному подобъек- ту понимается в математическом смысле. Так, в последнем примере буквально подобъекта 1 + 1 в выражении 2*sm(x) нет, но Maple-язык учитывает соответствие 1 + 1=2, и потому функция has в последнем примере возвращает true. 11.2. Функции приложения и подстановки 11.2.1. Функция приложения applyop Нередко бывает необходимо заменить некоторое подвыражение в заданном выражении на функцию от этого подвыражения. Для этого можно ног’пользовать- ся функцией
applyopCf, i, е) — прикладывает функцию i к i-му подвыражению выражения е; applyopff. i, е..xk, ...) — прикладывает функцию f к i-му подвыражению выражения е с включением опционально заданных xk Ниже даны примеры применения этой функции: >applyop(sin.2,a+x); а * sin(x) >applyop(f,1,g,2.a+b); f(g. 2. а * b) >applyop(f,{2,3),a*x+y); a * f(x) ♦ f(y) >applyop(f.{1,2).x/y+z); f(x/y) + f(z) >p:« y*2-2*y-3; 2 p:=y -2y-3 >applyop(f,2.p), 2 У +f(-2y)-3 >applyop(f,2.p.x1.x2); 2 у ♦ f(-2 у. x1 x2) - 3 >applyop(f.[2.2|.p); 2 У -2f(y)-3 >applyop(f,{2,3}.p). 2 у ♦ f(-2 у) + f(-3) >applyop(abs.(I2.1) ,3}.p); 2 у *2y*3 11.2.2. Функции приложения map и map2 Еще две функции, реализующие операции приложения, указаны ниже: map(fcn, ехрг. arg2. .... argn); map2(fcn, argl. ехрг. arg3.....argn) Здесь: fen — процедура или имя, ехрг — любое выражение, argi — аргументы fcn. заданные опционально Первая из этих функций позволяет приложить fcn к операндам выражения ехрг Приведенные ниже примеры иллюстрируют использование функции тар > f.=x->xA2, 2 f = X -> х
> mapif,[1,2.3]) (1 4 9] > map(f.[x,y,z]) 2 2 2 (х ,у ,z 1 > map(x->xAn,[1,2,3]); n n (1.2 ,3 ] > L.=[1.2,3.4]; L :=[1,2, 3,4] > map(proc(x.y) x*y+1 end, [1,2.3,4], 2); [3. 5. 7. 9] > map(int,L.x), [x, 2 x, 3 x. 4 x| > map(F,[1,2,3],x,y,z); [F(1. x. y. z), F(2, x, y, z), F(3, x, y, z)] Из этих примеров нетрудно заметить, что если второй параметр функции тар — список, то функция (первый параметр) прикладывается к каждому элементу списка, так что возвращается также список. Из последнего примера видно, что если за вторым параметром идет перечисление аргументов, то они включаются в список параметров функции. Функции тар2 отличается иным расположением параметров. Ее действие нагляд- но поясняют следующие примеры: > map2(w.g.{a.b.c}|. (w(g. с), w(g. a). w(g, b)} > map2(op, 1, [a+b+i,c+d*k.e*f*l]). (a, c. e) > map2(op, 2. [a+b+i,c+d+k.e+h-l]): |b, d. f] > map2(op, 3. [a*b+i,c+d+k.e+f+l]); П. k. n > map2(drff,[sin(x),cos(x).xAn].x); n x n [cos(x), -Sin(x).--] x 11.2.3. Приложения с помощью функций add, mul и seq Заметим, что подобные операции Maple V реализует и с рядом других функций. Ограничимся примерами приложений с помощью функции сложения add. умно- жения mul и создания последовательностей seq: > add(i,i=[a,b.c]); а ♦ b * с
> add(iA2,i=fa,b,c]), 2 2 2 а ♦ b + с > add(iA2.i=(1 2,3]); 14 > mul(x-i,i=0 4); х (х -1) (х-2) (х-3> (х-4) > mul(x*i,i=0 4), 10 х > seq(w(i),i={a,b.c}); w(a), w(c). w(b) >seq(w(x,y,i),i={1,2,3}), w(x, y, 1), w(x, y, 2), w(x. y, 3) > seq(int(xAi,x),ie{1,2,3,4}); 2 3 4 5 1/2 x . 1/3 x , 1/4 x . 1/5 x 11.2.4. Подстановки с помощью функций subs и subsop Другой важном операцией при работе с выражениями являются подстановки Подстановки в общем случае служат для замены одной части выражения на другую Частными видами подстановок являются такие виды операций, как замена одной переменной на другую или замена символьного значения перемен- ной иа ее численное значение. Основные операции подстановки выполняют следующие функции: subs(x=a,e) — в выражении е заменяет подвыражение х на подвыражение а; subs(sl,...,sn,e) — в выражении е заменяет одни подвыражения на другие, выбирая их из списков sl,...,s вида х=а; subsop( eqi, eq2.. eqi..eqn, e) — в выражении e .заменяет указанные eqi операнды другими, указанными в правой части равенств ei вида ni=ei, где ni — номер операнда, е — выражение для замены. Все эти функции возвращают измененное после подстановки выражение. Ниже показаны примеры применения функций подстановок: > suOs(a-b aA2-2,a,b-bA2); 2 -2 b > subs(a=2 Ь«1,аА2-2*а*Ь-Ь*2). -1 > subs(c=a-b,(aA2-2*a*b+bA2)/c); 2 2 a >2 a b + b a - b
> normal("); а-Ь > subs(a=x, b=y,c=z.[a,b.c}); [х. у. zj > subs( х=у, у=х, (х.у]): (х. х) > subs( {х=у. у=х}, (х.у)); [У - х] > subs(a=sin(xf2,b-cos(x)ra+b,b); 2 2 sin(x) + cos(x) > subsop(1=x.a+b+c); x ♦ b ♦ c > subsop(2=x.a+b+c); a + x + c > subsop(3=x,a+b+c). a + b ♦ x > subsop(1=x,2=x,3=x,a*b+c). 3x > subsop(2=x,a+b/c); a + x > subsop(3=x,a*b/c); Error, improper op or subscript selector > subsop(1=sin(x).(1+cos(x))/b), sm(x) b > subsop(2=sin(x).(1+cos(x)yb). (1 ♦ cos(x)) sm(x) > subsopfl =sin(x),2=sin(x),(1/cos(x))/b); 2 sin(x) Следует обратить внимание, что порою результат подстановок с помощью функ- ции subop может не совпадать с ожидаемым. Поэтому полезно контролировать получаемые в результате подстановок выражения на их корректность. Одним из важных приложений подстановок является проверка правильности решений уравнений и систем уравнений Ниже дан пример такой проверки. > eqs ={x+y+z=6,y/x=z-1,z-x=2}; eqs := {х * у ♦ z = 6. у/х = Z -1. z - х = 2} > res:-soWe(eqs.{x.y.z}); res - {z 3 -2. у = 12, x = -4), {у = 2, z = 3. x = 1) > subs(res eqs); {2 « 2, -3 -3. 6 = 6}
11.2.5. Функции сортировки sort и селекции select Сортировка и селекция выражений широко используются в практике символьных поеобразований. Для выполнения сортировки служит функция sort, применяемая з одной из следующих форм: sort(L) sort(L, F) sort(A) sort(A. V) Здесь: L — список сортируемых значений, F — опционально заданная Булева процедура с двумя аргументами, А — алгебраическое выражение, V — опцио- нально заданные переменные. >sort([3,2,1,7,10)); [1,2.3.7.10] >sort(1+xA2+x), 2 х + х + 1 > sort((e,b,c,a.d) texorder); [a. b. c. d, e] > p «y*3*x*2+yA2*xA2*x*3+1: > sort(p [x.y]); 2 3 2 2 3 xy + x у +x +1 > sort(p,[x,y],plex). 3 2 3 2 2 X +xy + X у +1 > sort((y+x+zy(y-x-z).x); X ♦ у + z -X ♦ у * z > names =[' Peter' .'Vladimir',Ivan',Anna'.'Manna'], names = (Peter. Vladimir, Ivan, Anna. Manna] > sort(names), [Anna. Ivan, Marina. Peter. Vladimir] Надо отметить, что, к сожалению, функции сортировки не работают с символами кириллицы и не позволяют сортировать слова русского языка. Если функция сортировки меняет порядок расположения членов в выражении (или порядок расположения выражений), то другая функция select служит для выделения требуемого выражения: select(f, е) или selectG, е. Ы. .... bn). Как бы обратной ей по действию служит функция remove, устраняющая требуе- мые выражения: removed е) removed е, Ы..............Ьп) В этих функциях i — процедура, возвращающая логическое значение, е — список, множество, сумма, произведение или функция, Ы. ..., bn — опционально задан- ные аргументы.
Ниже даны примеры применения этих функций: > integers = [$10 30): > select(ispnme, integers), [11, 13, 17, 19. 23,291 > remove(ispnme, integers), [10. 12. 14. 15, 16, 18. 20, 21, 22, 24. 25. 26. 27, 28. 30) > f := 2,ln(a‘x)’exp(x),ln(y); f = 2 ln(a x) exp(x) ln(y) > setectfhas. f, x); ln(a x) exp(x) > removefhas, 1, x); 2ln(y) > f - tndets(f); I = {a, y, x, exp(x), ln(a x), ln(y)) > select(type, f. name), (a. y. x} > remove(type. f. name); (exp(x), ln(a x). In(y)} > f := 2*ln(x)’(y+1); (:»21п(хИУ*П > c := remove(has, f, x): c := 2 у + 2 >f/c, >n(x) (y * 1) 2------------ 2y<-2 > selectfhas. f, x), ln(x) Maple имеет также оператор селекции А|ехрг]. Его действие поясняют следующие примеры: > restart > S := |а+Ь*С.х*2,с,1,2.3): >S[1J; а ♦ Ь с > S[1 .2]. 2 [а ♦ b с, х ] > S[-2..-1): [2.3) > S[3 3). [с]
> S(3 .2]. О > S(4 6]. (1.2.3) > Х;« S(] 2 X =a + bc. х . с, 1,2, 3 >Х(1); а + be > Х(1 .2], 2 а ♦ b с .х > Х(-2 -1], 2.3 > S = (а Ь.с). S « (с. а. Ь) >8(1]. >S(1 2]. {С. Ь) >S[-2 -1]. {Ь. а) > Т[1] = а Т[2] = b T|3] :=cL >ПП; >Т|1 .2); Т(1 .. 2] >Т|-2 -1); П-2 -1) 11.3. Упрощение выражений — функция simplify Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений «Все гениальное просто» — любим мы повторять, хотя это далеко не всегда так Тем не менее стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель В системе Maple V функция упрощения используется в следующем виде: stmplify(expr) — возвращает упрощенное выражение ехрг или повторяет его, если упрощение в рамках правил Maple V невозможно; simplifytexpr. nl, п2. ...) — возвращает упрощенное выражение ехрг с учетом опций с именами nl, п2, (в том числе заданными списком или множеством);
simplify(expr,assume=prop)— возвращает упрошенное выражение ехрг с учетом всех условий. Функция simplify — многоцелевая Она обеспечивает упрощение математических выражений выполняя следующие типовые действия (обозначим их, для простоты как —>): • комбинируя цифровые подвыражения, например 3*х*5->)5*х, 10*х/5->2*х, • приводя подобные множители в произведениях (х'3*а*х->а*х‘4); • приводя подобные члены в суммах (5*х+2+3*х->8*х+2), • используя тождества, содержащие ноль (а+0->а. х-О~>х); • используя тождества, содержащие единицу (1*х->х); • распределяя целочисленные показатели степени в произведениях (3*х*у‘3)*2 ->9*х‘2*у‘6; • сокращая ехрг на наибольший общий полиномиальный или иной множитель. • понижая степень полиномов, там. где это возможно; • используя преобразования, способные упростить выражения Несмотря на свою гибкость, функция simplify не всегда способна выполнить возмож- ные упрощения. В этом случае ей надо подсказать, в какой области ищутся упрощения и где можно найти соответствующие упрощающие преобразования С этой целью в функцию simplify можно включать опциональные параметры — опции В качестве опций могут задаваться имена специальных математических функций и указания на область действия упрощений Bessell, BcsselJ, BesselK. BesselY, Ei, GAMMA. RootOf, LambertW, dilog. exp, In. sqrt, polylog. pg pochhammer, trig (для всех тригонометрических функций), hypergeom radical, power и atsigm (для операторов) Полезна также опция symbolic, указывающая на проведение сим- вольных преобразований. Возможно применение функции simplify и в форме simplify) <name>] где <пате> — одно из указаний: atsign, GAMMA, hyper geom. power, radical. RootOf, sqrt, trig. Ниже даны примеры применения функции simplify: > sirnplrfy(4A(1/2)+3), 5 > simplify((xAa)Ab+4A( 1/2). power): (ab) 1/2 x 3-4 > 8implify(exp(a+ln(b’exp(c)))): b exp(a ♦ c) > simplify((xAa)Ab+4A(1/2). power); (ab) 1/2 x ♦4 > simplrfy(exp(a+ln(b‘exp(c)))), b exp(a ♦ c) > simplify(sin(x)A2+cos(x)A2. Ing);
> е cos(x)A5 + sin(x)A4 ♦ 2*cos(x)A2 - 2'sin(x)A2 - cos(2’x); > simplify(e); 5 4 cos(x) ♦ cos(x) > f r= -1/3*xA5*y + xA4*yA2 + 1/3*x*y*3 ♦ 1 > s»mp*ify(f, (хл3 = x*y, yA2 = x+1}); 2 2 1 * X у ♦ X ♦ X >simplify(sin@arcsin, atsign), () -> args >S4fnplify(exp@ln, @); () -> args >rvfunc(f) := g > simplify! f@g@@2). 9 >simplify(ln(exp(2)),ln); 2 > simplify)GAMMA(n+4)lGAMMA(n).GAMMA); n(n + 1) (n + 2) (n + 3) > r - RootOf(xA2-2=0. x) > simplify(rA2, RootOf), 2 > simplify) 1/r, RootOf), 2 1/2 RootOfLZ -2) > simplrfyfln(exp(2)),fn); 2 >simplify(ln(x'y). power, symbolic), ln(x) ♦ ln(y) > e .= (-5*bA2*a)A(1/2); 2 1/2 e:«(-5b a) > simplifyle,radical); 1/2 2 1/2 5 (-b a) > simplifyfe,radical,symbolic); 1/2 1/2 b 5 (-a) >simplrfy((tA2)A(1/2).sqrt.symbolic), t >simplrfy(GAMMA(n+1 )/n!)[GAMMA); 1 (GAMMA)
Действие функции simplify существенно зависит от областей определения пере- менных. В следующем примере > restart; > simplrfy(sqrt(xA4,yA2)); 4 2 1/2 (х У ) Упрощение выражения не произошло из-за того, что результат этой операции неоднозначен. В этом нетрудно убедиться из других примеров: > simplify(sqrt(xA4*yA2),assume=real). 2 х s»gnum(y) у > sim₽lify(sqrt(xA4,yA2),assume-positive); 2 х у Читателю настоятельно рекомендуется просмотреть подряд все разделы справоч- ной системы, относящиеся к примерам примснениг функции simplify, поскольку их число очень велико и эти примеры наглядно показывают необходимость правильного применения разнообразных опций для придания упрощениям нужно- го характера. Если функция simplify не способна выполнить упрощение выраже- ния ехрг. то она просто его повторяет. Это сигнал к применению опций 11.4. Расширение выражений — функция Expand Даже в жизни мы говорим: «не все так просто». Порою упрощенное выражение скрывает его особенности, знание которых является желательным Функция expand расширяет выражение ехрг и записывается в виде: expandlexpr, expri, ехрг2....ехргп), где: ехрг — расширяемое выражение, expri, ехрг2..........ехргп — подвыражения, используемые опционально — опции. Имеется также инертная форма данной функции Expandfexpr). Кроме того, возможно применение операторной конструк- ции frontend(expans.lexprl). Функция expand раскладывает рациональные выражения на простые дроби, полиномы — на полиномиальные разложения, способна раскрыть многие матема- тические функции, например, sin. cos, tan. sinh, cosh, tanh, det. erf. exp, factorial. GAMMA, In. max, min. Psi, binomial, sum, product, int, limit. Bernoulli, euler, abs, signum, pochhammer, polylog. BesselJ, BesselY, Bessell, BesselK, AngerJ. Beta. Hankel. Kelvin, Struve, WeberE и функцию piecewise. С помощью опциональных аргументов expri, ехрг2......ехргп можно задать расширение отдельных фрагмен- тов в ехрг. Примеры применения функции expand приведены ниже: > expand((x+2f (х+3)’(х+4)), 3 2 х + 9х + 26х + 24 > expand(srn(2*x)). 2 sin(x) cos(x)
»expand(sin(x+y)); sin(x) cos(y) ♦ cos(x) s»n(y) > expandlKa+bna-bManfZ'x)]): 2 2 tan(x) (a .b .2------------1 2 1 - tan(x) >expand((x*1)*(y*-1)J; (x * 1) у + x ♦ 1 >expand((x+1 )’(y*z)), xy♦xz*y♦г >expand((x+1)‘(y+z), x*l); (x+1)y + (x+1)z > frontend(expand.[(a+b)A3]); 3 2 2 3 a ♦ 3 a b + 3ab +b 11.5. Факторизация выражений 11.5.1. Разложение целых и рациональных чисел — функция (factor Для разложения целых или рациональных чисел на множители а виде простых чисел служит функция iiactor(n) или ifactoKn, method), гае: п — число, method — опция, задающая метод разложения. Другая библио- течная функция factors(n) возвращает результат разложения в форме вложенных списков: >ifactor(123456789). 3 (3) (3803) (3607) > ifactor( 10’): 8 4 2 (2) (3) (5) (7) > ifactor( 100/78); 2 (2) (5) (3)(13) > readlib((factors): >ifactors( 100/78); 1].(5.2J,[3.-1].[13,-1ffl
11.5.2. Разложение выражений (факторизация) — функция factor Для алгебраических выражений функция факторизации записывается в вычисля- емой и невычисляемой формах: factor(a) Factor(a) factor(a.K) Factor(a.K) Здесь: a — полином с многими переменными. К — заданное опционально алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции эволюцииеуа)а или cvaigf. Главная цель факторизации — нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ниже представлены примеры применения функций factor: > factor(aA2-2*a*b+bA2): 2 (a-b) > expand((x-1)*(x-2)*(x-3)): 3 2 X -6x +11 x-6 > factorf); (x-1)(x-2) (x-3) > factor((x-3>*2): 2 (x-3) > factoc(xA5-2,2A(1/5)), 1/5 4 1/5 3 2/5 2 3/5 4/5 (x-2 )(x +2 x +2 x +2 x + 2 ) > aliasfalpha = RootOf(xA2-2)): > factor(yA4-2.alpha); 2 2 (y - alpha) (y + alpha) > factor(xA3+yA3), 2 2 (X ♦ y) (X - x у ♦ у ) > factoc(xA3+y*3,(-3)A( 1/2)); 1/2 1/2 1/4(2x-y-ly3 )(2x-y + ly3 )(x + y) > factor(xA3+3,complex) (x ♦ 1.442249570) (x - .7211247852 + 1.249024766 I) (x - .7211247852 -1.249024766 I) > factoc(xA3-yA3); 2 2 (X - y) (X ♦ x у ♦ у ) > factor(xA3+yA3.(-2)A(1/2)); 2 2 (X ♦ у) (X - X у + у )
11.6. Комплектование по степеням — функция collect Еще одна функция общего назначения — collect служит для комплектования шраження ехрг по степеням указанного фрагмента х (множества или листа). Она задается в виде: collectCa, х) или collectCa, х. form. Гипс) Во второй форме этой функции опционально задаются параметры form — (форма) и tunc (функция или процедура). Параметр form может иметь два значения: recursive (рекурсивная форма) и distributed (дистрибутивная форма). Параметр iunc позволяет задать имя функции, по которой будет идти комплектование ехрг. Примеры применения функции collect представлены ниже: > f := а*ехр(х)-ехр(х)*х-х; f := а ехр(х) - ехр(х) х - х > collect(f.exp(x|); (а - х) ехр(х) - х > д = intfx'fexpfxJ+expC-xJhx); х 1 д .= ехр(х) х - екр(х)------------- ехр(х) ехр(х) >coilect(g,exp(x)), -х-1 (х-1)ехр(х) +-------- ехр(х) > р = х*у+а'х"у+у*хЛ2-а’у'хЛ2+х+а*х; > coltect(p, [х,у], recursive); 2 (1-е) ух *((1 ♦ а) у * 1 + а)х > cotlect( р, (у.х]. recursive ); 2 ((1-а)х ♦ (1 ♦ а) х)у + (1 ♦ а) х »cotlect( р. (х.у], distributed ); 2 (1 ♦ а)х + (1 * а) х у * (1 -а)ух > f:= aA3‘x*2-x+aA3+a; 3 2 3 f:» а х - х * а * а > cottect(f.x); 3 2 3 а х -х*а + а >coflect(f,x,factor); # factor the coefficients of f in x 3 2 2 a x - x ♦ a (a ♦ 1) >p := y/x+2*z/x*xA(1/3)-y*X*(1/3); 1/3 1/3 p y/x + 2 z/x + x - у x
> coHect(p.x), 1/3 y + 2z (1-У)х *------ х > collectf xA3,y+xA2'yA3+x+3, у); 3 2 3 х у + х у +х+3 11.7. Операции с полиномами 11.7.1. Выделение коэффициентов полиномов Под полиномом в системе Maple V понимается сумма выражений с положитель- ными целыми степенями. Многочлен для ряда переменных — многомерный полином К одномерным полиномам относятся степенной многочлен р(х)=ап х" + anl х" 1 + ... а! х + ао и отдельная переменная х и константа. Таким образом, круг объектов, которые могут быть представлены полиномами, достаточно обширен и полиномиальные преобразования широко используются в системах компьютерной алгебры. 11.7.2. Выделение коэффициентов полиномов — функция coeff Для выделения коэффициентов полиномов служат следующие функции: coefT< р х) Возвращает коэффициент при х полинома р coefKp.x.n) Возвращает коэффициент для члена со степенью п полинома р coeff(p.x'n) Возвращает коэффициенты при хп полинома р eoeffs(p. х. Т) Возвращает коэффициенты полинома нескольких переменных, относящиеся к переменной х (или списку переменных) с опцией Т. задающей имя переменной collect! р.х) Возвращает полином, объединяя коэффициенты при степенях переменной х Ниже даны примеры на применение этих функций: >р := а4 х + аЗ х + а2 х + а1 х ♦ аО > coeff(p.x); а1 > coeff(p.xA3); аЗ > coeff(p,x,4), а4 > coeffs(p.x); аО, а1 а4, аЗ, а2 > q:=x*2+2*y*2*3‘x+4*y+5; 2 2 q := х ♦ 2 у +Зх + 4у + 5 -roeffs(q): 5. 3,4, 1,2
>coeffs(q,y), 2 х ♦Зх + 5.4,2 >coeffs(q.x.y); 2 5 <-2 у *4 у. 3,1 >coilect(p.x). 4 3 2 а4х ♦ аЗ х +а2х ♦ а1 х ♦ эО > collect^ q,у); Error, invalid terms in product Следует обратить внимание на довольно часто возникающую ошибку при работе с этими операциями: характер ее появления дан в конце приведенных выше примеров. К сожалению, эта ошибка носит фатальный характер и после первого появления начинает возникать даже в тех вычислениях, которые до этого проходили гладко. Возможно, это одна из недоработок системы Maple V R4, вполне возможная для столь объемной и мошной системы, как Maple V. Для устранения данной ошибки может потребоваться перезагрузка системы 11.7.3. Оценка коэффициентов полинома по степеням Папином может быть неполным, т.е. не содержать членов со степенью ниже некоторой. Функция Icoeff возвращает старший коэффициент полинома несколь- ких переменных, a tcoeff — младший коэффициент полинома нескольких пере менных. Эти функции задаются в виде: icoeff(p) или tcoeff(p) lcoefl‘(p. х) или tcoefKp, х) coefffp, х, Ч‘) или tcoefiXp. х. Ч') Функции Icoeff (tcoeff ) возвращают старший (младший} коэффициент р относитель- но неизвестного х или ряда неизвестных при многомерном полиноме. Если х не определено, Icoeff (tcoeff) вычисляет старший (младший) коэффициент относительно всех неизвестных р. Если третий аргумент t определен, то это имя назначено старшему (младшему) члену р Если х — единственное неизвестное и d — степень р по х, то lcoeff(p, х) эквивалентно coefffp. х, d). Если х — список или множество неизвестных. Icoeff (tcoeff) вычисляет старший (младший) коэффициент р, причем р рассматривается как папином многих переменных. Имейте в виду, что р должен быть разложен по степеням неизвестного х прежде, чем вызвать Icoeff или tcoeff. Приведем примеры применения функций Icoeff. tcoeff и coeffs > ф=1/хА2*2/х*3*4*х+5*хА2; 1 2 q := — + 2>х*3 + 4х + 5х 2 х > tcoefffq.x). 5 > Icoeff (q,x,'t’),
2 х > coeffs(q^.'t'): 3.4.5. 2,1 >t 2 1 1, X, X , 1/х,- 2 X 11.7.4. Оценка степеней полинома Функция degree возвращает высшую степень полинома, a (degree — низшую. Эти функции задаются следующим образом: degree(a.x) и (degree(a.x) Функции degree и (degree используются, чтобы определить высшую и низшую степень полинома от неизвестного (неизвестных) х. которое чаще всего является единственным, но может быть списком или множеством неизвестных. Полином может иметь отрицательные целые показатели степеней при х. Таким образом, degree и (degree могут возвратить отрицательное или положительное целое. Если выражение не является полиномом от х в этом значении, то возвращается FAIL. Полином обязательно должен быть сгруппирован по степеням х для того, чтобы degree и (degree возвратили точный результат. Например, (х+1)'(х+2) - х‘2, degree не обнаружит аннулирование старшего члена и неправильно возвратит результат 2. Во избежание этого функции collect или expand к полиному следует применять до вызова degree Если х — множество неизвестных, degree/(degree вычисляет полную степень. Если х — список неизвестных, degree/(degree вычисляет векторную степень. Векторная степень определяется следующим образом: degree(p,||) = О degree(p,|xl,x2„.J) =degree(p,xl) +degree(lcoeff(p,xl),[x2,...|) Полная степень в этом случае определяется так: degree!р,{х!...xnl> = maximum degree(p.{xl,...xn)) или = degree(pjxl.....xnl) Обращаем внимание на то, что векторная степень зависит от порядка неизвест- ных, а полная степень не зависит. Наконец, если х не определено, то это сокращение для degree(a,indets(a)). означающее, что полная степень во всех неизвестных вычислена. Примеры применения функций degree и (degree: > р:=а4*хА4+аЗ,хЛ3*а2,хЛ2. 4 3 2 р:=а4х +аЗх +а2х >degree(p,x);
> Idegree(p.x); 2 > q.»1/xA2*2/x+3+4*x+5*xA2, 1 2 q := — + 2/х ♦ 3 + 4 х + 5 х 2 х >degree(q.x); 2 Hdegreefq.x); -2 > degree) x*sin(x).x); FAIL > degree) хл2‘ул2+х‘у+с,[х,у]); 4 11.7.5. Разложение полинома на множители Для контроля того, имеет ли полином несокращаемые множители, может исполь- зоваться функция irreduc(p) и ес вариант в инертной форме Ireduc(p.K). где K-RootOf — выражение. Ниже приведены примеры применения этих тестовых функций: >irreduc(xA2-1); false >irreduc(xA2-2); true >lrreduc(2'xA2+6'x+6)mod 7; false >lrreduc(xA4+x+1) mod 2, true >alias(alpha=RootOf(xA4+x+1)). >lrreduc(x*4+x+1,alpha) mod 2 false Для разложения полинома p по степеням служат инертные функции AFactor(p) или AFactors(p) Лолином может быть представлен в виде зависимости от одной или многих «ременных. Функция AFactor(p) является указателем для представления абсо- лютного разложения на множители полинома р (это разложение на множители ад алгебраически замкнутым полем его коэффициентов). Для получения разло- жения используется функция evala Вызов evala( AFactor(p)) вычисляет разложе- ние на множители полинома р над полем комплексных чисел Полином р должен иметь своими коэффициентами алгебраические числа. В случае одномерного полинома, абсолютное разложение на множители является разложением на линейные множители. Функция AFactors аналогична функции
AFactor, но создает структуру данных формы |u,||i[ 1 |,е| 11| Щп|,е|пЦ|] так, что p=u* f|1 ]*е| IJ *... * Пп]'е|п]. где каждый ffi| — неприводимый полином. Ниже даны примеры применения функции AFactor: >evala(AFactor(2’xA2+4,x-6)); 2(х + 3)(х-1) > evala{AFactor(xA2+2‘yA2)); 2 2 (x-RootOf(_Z + 2) у) (х + RootOf(_Z * 2) у) > expand((x-1 )"(х-2)*(х-3)"(х-4)); 4 3 2 х -Юх + 35 х - 50 х + 24 > AFactorf"): 4 3 2 AFactor(x -Юх + 35 х - 50 х + 24) > evala(") (х-1)(х-2)(х-3) (х-4) >ехрап<1((х-1тГ2),(х*1-1"2),(х-3)); 3 2 х -Зх ♦ 3 х - 9 + 4 I х -12 I > evala(AFactor(")); 2 (х-3)(х + 3 + 4I) > evala(AFactors(xA2-2*yA2)); 2 2 [1, [[х - RootOfCZ -2) у. 1], [х + RootOf( Z -2) у. 1]]] Нетрудно заметить, что разложение полинома по множителям позволяет оценить наличие у него корней. Однако для этого удобнее воспользоваться специальными функциями, отмеченными ниже. 11.7.6. Вычисление корней полинома — функция roots Для вычисления действительных и комплексных корней полиномов служит уже известная нам функция solve(p.x), возвращающая список корней полинома р одной переменной. Кроме того, имеются следующие функции для вычисления корней многовариантных полиномов: roots! р) roots(p, К) roots(p, х) roots(p, х, К) Эти функции вычисляют точные корни в рациональной или алгебраической области чисел. Корни возвращаются в виде I [rl.ml]........Irn.mn] |, где ri — корень полинома, a mi — порядковый номер полинома С действиями этих функций можно разобраться из приведенных ниже примеров: > р:=хА4+9*хА3+31*хА2+59*х+60: > solve(p,x); -4. -3. -1 + 2 I. -1 - 2 I
Операции с полиномами 227 »• II I. >foots,xA2-4.x); П-2. 1]. [2. 1]] > axpand«x-1 ^х-г^х-ЗГСх-Д)). 4 3 2 х -Юх *35х -50Х + 24 >toots(",x); Ц3.1]. ]4, Uii.np.iD 11.7.7. Основные операции с полиномами С полиномами могут выполняться различные операции. Прежде всего отметим ^которые функции, которые относятся к одному полиному. psqrtlp) Возвращает квадрат полинома. froot(p.n) Возвращает п-ую степень полинома. Ta’root(p) Возвращает интервал, в котором находятся действительные корни полинома tindpoMvars. eqtis) Возвращает случайный латином по переменным vars (список) с максимальной степенью eqns (например, degree=lO). discnm(p.var) Вычисляет дискриминант полинома по переменной var Pnnntive(a) mod p Проверяет полином на примитивность (возвращает true, если поли- ном примитивен). Действие этих функций достаточно очевидно, поэтому мы ограничимся прнведе- примеров их использования: madlib(pscjrt): proot). jsqrt(xA2*2*x*y+yA2); х*у хА3*3’хА2+3"х+1,3); хэ 1 ‘peqrt(x-ey); _NOSQRT ‘proot(x*y, 2); -NOROOT >»=х*3-3*хА2+5*х-10; 3 2 p := x -3 x + 5x-10 >fecnm(p,x); -1355 «adlttyrealroot): up); no, 4)]
> randpoty((xj,degree-10); 10 8 5 4 3 49 х *вЗх*57х-59х*45х*8 > randpoly([x].degree=10), 10 9 8 6 3 54 х -5х + 99х - 61 х -50х -12 х > randpoty([x],degree=10); 9 7 6 5 4 -61 х +41х-58х - 90 х ♦ 53 х -х > Pnmilive( хА4+х+1 ) mod 2; true > Pnmitivef хА4+хА3*хА2+х+1 i mod 2, false Обратите внимание на то, что для использования некоторых из приведенных функции необходим их вызов из стандартной библиотеки. Для функции randpoly приведенные результаты случайны, так что скорее всего их повторение невозможно. С полиномами можно выполнять обычные операции, используя для этого соответ- ствующие операторы: > р1 =аГхА3+Ь1’хА2+с1'х*Ц1 р2 =а2*хА2+Ь2*х+с2: > р1+р2, 3 2 2 а1 х +Ь1х +с1 х ♦ d1 ♦ а2х +Ь2х + с2 >р1*р2; 3 2 2 (а1 х +Ь1х ♦ d х ♦ d1) (а2 х ♦ Ь2х + с2) > collect(’.x), 5 4 3 а1а2х +(Ь1а2 + а1Ь2)х ♦ (d а2 ♦ Ь1 Ь2 * а1 с2) х 2 + (d1 а2 + d Ь2 * Ь1 с2) х ♦ (d1 Ь2 ♦ d с2) х ♦ d1 с2 > pVp2; 3 2 а1 х + Ь1 х ♦ d х + d1 2 а2х ♦ Ь2 х ♦ с2 > expand(*.x); 3 2 а1 х Ы х с1 х ♦ + 2-----------------------------------------2-2 а2 х + Ь2 х ♦ с2 а2 х ♦ Ь2 х ♦ с2 а2 х + Ь2 х + с2 В целом надо отметить, что аппарат действий с полиномами в Maple V хорошо развит и позволяет выполнять с ними практически любые математически? операции
11.8. Программирование символьных операций 11.8.1. Реализация в символьном виде итераций Ньютона Найти достаточно простую и наглядную задачу, решение которой отсутствует в системе Maple V, не очень просто. Поэтому для демонстрации решения задачи с применением аналитических методов воспользуемся ставшей классическим при- мером реализацией итерационного метода Ньютона при решении нелинейного уравнения вида f(x)-O. Как известно, метод Ньютона сводится к итерационным вычислениям по следую- щей формуле: Xt+| = Xi + Реализующая его процедура выглядит довольно просто: > restart N):=proc(expr.x) local iter; rter=x-expr/diff(exprx), unapply(iter.x) end. Nl = proc(expr, x) local iter, iter = x - expr/drff(expr x), unapptyfiter x) end Для получения итерационной формулы в аналитическом виде здесь используется функция unapple. Теперь, если задать решаемое уравнение >expr=sin(x)A2-0 5; 2 ехргsm(x) - .5 можно получить искомое аналитическое выражение. > F =NI(expr,x); 2 sin(x) • .5 F:» х -> х -1/2----------- sin(x) cos(x) Далее, задав начальное приближение для х=хО. можно получить результаты вычислений для ряда итерации: > х0:=0.2; хО := .2 > to 8 do хО =F(xO);od. хО1 382611210 хО .= .117460944 хО := 2 206529505 хО := 2 360830634 хО2 356194357 хО := 2.356194490 хО - 2.356194490 хО =2 356194490
Нетрудно заметить, что. испытав скачок в начале решения, значения х довольно быстро сходятся к конечному решению, дающему корень заданной функции Последние три итерации дают одно и то же значение х. Заметим, что этот метод дает одно решение, даже если корней несколько. Вычислить в таком случае другие корни можно, изменив начальное условие. Можно попробовать с помощью полученной процедуры получить решение и для другой функции: > ехрг=1п(х*2)-0.5: 2 ехрг •= 1п(х ) - .5 > F:=NI(expr.x); 2 F:« х-> х -1/2 (ln(x )-.5)х > х0:=0.2; хО.2 > to 8 do x0;=F(x0);od. хО:«.5718875825 хО:» 1 034437603 хО := 1 258023118 хО := 1.283760340 хО:«1 284025389 хО := 1 284025417 хО:« 1.284025416 хО:« 1284025417 Здесь итерационная формула имеет (вполне естественно) уже другой вид, но сходимость к корню также обеспечивается за несколько итераций. Возможна и иная форма задания итерационной процедуры с применением опера- тора дифференцирования D и заданием исходной функции в виде процедуры: > Ml:=proc(f: procedure) > (x->x)-eval(f)/D(eval(f)). > end; Ml = proc(f: procedure) (x -> x) - eval(f)/D(eval(f)) end > g:=x->x-cos(x); g := x -> x - cos(x) > SI:=MI(g); x -> X - cos(x) SI := (x -> x)-------------- X -> 1 + sin(x) >x0:=0.1; xO:=.1 > to 6 do xO:=SI(xO) od; xO ;» 9137633858 x0:= 7446642419 x0:« 7390919660 xO:« 7390851333 xO := 7390851332 xO:* .7390851332
Вообще говоря, в программных процедурах можно использовать любые операторы н функции, присущие Maple-языку. В том числе и те. которые реализуют символьные вычисления. Это открывает большой простор в разработке новых процедур и функций, обеспечивающих выолнение символьных операции. 11.8.2. Вычисление интеграла по известной формуле Рассмотрим следующий пример: > ifH(eAx‘x*n,x); / I X п | в х Ох Зйесь нас постигла явная неудача в вычислении, казалось бы. простого интеграла — аьвод, по существу, повторил задание на вычисление интеграла. Это связано с тем, что данный «простой» интеграл не имеет аналитического представления через элементарные функции Однако из математики известно, что такой интеграл может быть представлен в следующем виде: I jaVdx = Же* £ (-1)вЧ//41 i =0 Используя эту формулу, мы можем создать простую процедуру для численного и аналитического вычисления данного интеграла: > IntExpMonomial -proc(n.anything,x::name) > local i; > nrexp(x)*sum(((-1)*(n-i)*xAi)/i!.i=0..n); Проверим ее в работе: > lnlExpMonomial(3,x); 2 3 6exp(x)(-1+x - 1/2 х + 1/6 х ) I lnlExpMonomial(5,x); 2 3 4 5 120 ехр(х) (-1 + х - 1/2 х + 1/6 х -1/24 х ♦ 1/120 х ) > imExpMonornial(n.x), п (п+1) (-1-П) п! ехр(х)((-1) ехр(-х) + х (п+1)(-х) ехр(-х) (GAMMA(n + 1) - GAMMA(n + 1, -х)У(п + 1)!) Результат в аналитическом виде достаточно громоздок и выражает интеграл через факториал и гамма-функцию. Однако легко проверить, что он вполне правилен. Для этого продифференцируем полученный результат: >diff(".x);
/ (П+1) (-1 - П) \ | п х (п + 1)(-х) ехр(-х)%1 | п! ехр(х) |(-1) ехр(-х) +------------------------------------| \ (п+1)! I / I п ♦ п!ехр(х)|-(-1) ехр(-х) (п + 1) 2 (-1-п) х (п + 1) (-х) ехр(-х) %1 ♦------------------------------------ X (п + 1)1 (П + 1) (-1-П) х (п+1)(-х) (-1-п)ехр(-х)%1 (п + 1)!х (п + 1) (-1-П) х (п + 1)(-х) ехр(-х)%1 (п + 1)! (П+1) (-1 - П) п \ х (п + 1) (-х) ехр(-х)(-х) ехр(х) | --------------------------------------------1 (п + 1)! I %1 := GAMMA(n + 1) - GAMMA(n ♦ 1. -х) Полученное выражение с первого взгляда кажется еще сложнее, чем вычислен- ный интеграл. Однако с помощью функции simplify оно упрощается к подынтег- ральной функции: > simplrfyf”); п ехр(х) х Это говорит о том. что задача вычисления заданного интеграла в аналитической форме и впрямь решена 11.8.3. Вложенные процедуры и интегрирование по частям Теперь мы подошли к важному моменту, о котором читатель наверняка уже давно догадался: — в составляемых пользователем процедурах можно использовать ранее составленные им (или кем-то еще) другие процедуры! Таким образом Maple-язык позволяет реализовать вложенные друг в друга процедуры. Для иллюстрации применения вложенных процедур рассмотрим операцию интег- рирования по частям Пусть нам надо вычислить интеграл J р(х)е2 dx где р< \ ) — выражение, представляющее полином.
Приведенным ниже пример подготовлен в реализации Maple V R5 |38|. Вначале подготовим процедуру IntExpMonomialR, реализующую вычисление уже рассмот ренного ранее интеграла, но рекурсивным способом: > lntExpMonomialR=proc(n nonnegint,x::name) > local i.if n=0 then RETURN(exp(x)) fl, > x*n*exp(x)-n*lntExpMonomialR(n-1 x); ’end Проверим ее в работе: > lntExpMonomialR(4,x); 4 3 2 х ехр(х)-4х ехр(х)+12х ехр(х) - 24 х ехр(х) ♦ 24 ехр(х) > cotlect(% ,ехр(х)), 4 3 2 (х -4х +12 х • 24 х + 24) ехр(х) Теперь составим процедуру для вычисления по частям нашего интеграла: > intExpPotynom ia I =ргос( р polynom х ; па me) » focal i .result; ’ MW WARNING; degree(0,x) now returns -infinity ’result =add(coett(p,x,i)*lntExpMo<iomialR(i,x),l=0 degree(p.x)); > collect(result.exp(x)); >end; В этой процедуре имеется обращение к ранее составленной процедуре InlExpMo- lomiaIR Обратите внимание, что при вводе процедуры Maple V R5 предупреждает пользователя об определенных проблемах с использованием функции degree (сообщение начинается с символов ###) Тем не менее процедура работает, в чем убеждает, по крайней мере, следующий пример: >рс«(хА2+1Г(1-3*х); 2 р:«(х +1)(1-Зх) > expand(p), 2 3 х -Зх ♦1 -3х >|п((р*ехр(х).х), 2 3 24 ехр(х) - 23 х ехр(х) ♦ 10 х ехр(х) - 3 х ехр(х) ’ lntExpPotynomial(p,x); 2 3 (24 - 23х + 10х -Зх )ехр(х) В заключение остается отметить, что данный пример в реализации Maple V R4 иет неточный результат, хотя никаких сообщений об ошибках не выводится. Так что описанные процедуры в этой реализации требуют коррекции. В данном примере мы имеем как раз тот случай, когда желательна тщательная отладка процедур с применением соответствующих средств диагностики Maple V
Глава 12. Пакеты расширений Maple V и работа с ними 12.1. Назначение пакетов расширения и обращение к ним Как уже отмечалось, некоторые функции системы Maple помимо ядра могут находится в стандартной библиотеке и в пакетах расширения, входящих н базовую поставку системы. Это значит, что их не надо приобретать дополнитель- но. Однако перед использованием таких функций их надо загрузить или отдельно или целым пакетом, если большинство его функций представляет интерес для пользователя. В этой главе дается выборочная информация о функциях, содержащихся в пакетах расширения. Напоминаем, их список можно получить, используя команду > ''packages С помощью команды > 9name_package можно получить информацию о любом пакете расширения и найти список входящих в него функций. Названия пакетов и перечни их функций представлены в следующих разделах данной главы в начале каждого раздела Поэтому распе- чатка имен пакетов и их назначений здесь не приводится. Для обращения к функциям того или иного пакета используется его полная загрузка командой > with(package) Если нам необходима какая-то одна функция пакета или небольшая часть входящих в пакет функций, то не стоит загружать его целиком. Это может привести к избыточным затратам памяти компьютера и даже нарушить нормаль- ную работу некоторых функций. Следует помнить, что нередко пакеты переопре- деляют некоторые функции ядра. Для загрузки избранных функций используется команда with в форме: > withfpackage fl,12,...) или > with(package. [11, f2....]) При этом загружаются функции fl,12,... из пакета с именем packages. Может показаться, что было бы лучше иметь все функции в одном ядре. Однако создание ядра, реализующего все функции системы (в версии RI их более 2500), неразумно. Во-первых, такое ядро будет занимать много места в памяти. А это усиливает его моральное старение. Во-нторых. это вызнало бы чрезмерные затраты памяти на хранение всех функций ядра, поскольку оно постоянно загружено в память компьютера.
Поэтому в Maple V ядро содержит определенный (и довольно обширный) мини- мум хорошо апробированных функций, а большинство других функций размеща- ется в стандартной библиотеке и в пакетах расширения. Они готовятся на Maple-языке программирования и могут легко модернизироваться. К тому же пакеты расширения могут модифицироваться (что не очень желательно) или дополняться (что приветствуется) пользователями. Некоторой платой за это является необходимость вызова того или иного пакета или функции перед их применением. В этом разделе описана структура пакетов расширений системы Maple V' R4. Объем книги не позволяет остановиться даже на описании синтаксических правил применения всех функций этих пакетов. Этого, кстати, нет и в книгах 137.381. входящих в поставку системы. Очевидно, в этом нет и особого смысла — подавляющее большинство функций представляют малый интерес для конкретно- го пользователя. Те же, кто ими интересуются, могут легко восполнить пробелы в их описании с помощью справочной системы. Однако в описании состава каждого пакета в данной главе упомянуты своими именами все без исключения функции. Это позволяет оценить полноту того или иного пакета и без труда вызвать справочные листы по любой функции. Описание функций пакетов расширения дано выборочно, при этом предпочтение отдавалось тем функциям, которые используются в массовых математических и научно-тех- нических расчетах. Полезно отметить, что большинство функции имеет вполне понятные имена, отражающие их суть и назначение. К примеру, назначение функций animate или иже textplot в пакете plots или Diff. Int и Limit в пакете student понятны, пожалуй, всем. Но и в гораздо более специализированных пакетах имена входя- щих в них функций в значительной мере знакомы специалистам, поскольку почти всегда ассоциируются с общепринятыми названиями тех или иных специализиро- ванных функций или с их комбинациями. 12.2. Инструментальный пакет решения дифференциальных уравнений DEtools Решение дифференциальных уравнений самых различных типов — одно из достоинств системы Maple V. Пакет DEtools предоставляет ряд полезных функций для решения дифференциальных уравнений и систем с такими уравнениями: DEnormal DEplot DEplot3d Dchangevar PDEchangecoords PDEplot autonomous convert Alg convertsys diieldplot indkiakxi phaseportrait reduceOrder regularsp translate untranslate varparam Этот пакет дает самые изысканные средства для аналитического и численного решения дифференциальных уравнении и систем с ними. Поскольку этих функ- ций не очень много и они широко используются в практике математических расчетов, приведем их полные наименования: DEtiormal 1 Возвращает нормализованную форму дифференпиальных уравнений DEplot I Строит графики решения дифференциальных уравнений.
DF.plot3d Dchangevar Строит трехмерные графики для решения систем дифференциальных! сравнений Изменяет переменны» в дифференциальных уравнениях 1 PDEchangecoords Изменяет координатные системы для дифференциальных уравнений в. частных произвордных j PDEplot Строит графики решения дифференциальных уравнений в частных производных. । autonomous Тестирует дифференциальные уравнения на автономность | convert Alg Возвращает лист коэ(|мриииентов для дифференциальных уравнений i coiivertsys Преобразует систему дифференциальных уравнении в систему одиноч- ных уравнений dheldplot Стронг график решения дифференциальных уравнений н виде векторно*| го ноля. [indicia Icq j phaseportrait Преобразует дифференциальные уравнения п полиномиальные Строит график решения дифферен!шальных уравнении в форме (разово- го портрета reduceOrdcr Понижает порядок дифференциальных уравнении regularsp Вычисляет регулярные особые точки для дифференциальных уравнении второго порядка | translate Преобразует дифференциальные уравнения в лист операторов. 1 untran«late Преобразует лист операторов в дифференциальные уравнения varpai am Находит общее решение дифференциальных уравнений методом карпа-' нии параметров Функции построения графиков решения дифференциальных уравнений будут описаны в главе 13, целиком посвященной графическим возможностям Maple V R4. Здесь же мы рассмотрим другие функции пакета Detools. Для использования функций этого пакета он должен быть загружен командой: > with(DEtools): Функция autonomous(des.vars.ivar) тестирует дифференциальное уравнение (или систему) des Ее параметрами, помимо des. являются независимая переменная ivar и зависимая переменная dvar. Следующие примеры поясняют применение этой функции: > autonomous(sm(z(t) z(t)*2),(D@@4)(z)(t)-cos(z(t))-5.z.t); true > DE:=diff(x(s).s)-x(s)*cos(arctan(x(s)))=arctan(s): > autonomous(DE (x} sl false Функция Dchangevar используется для обеспечения замен (подстановок) в диф- ференциальных уравнениях. Dchangevarlfrans. deqns. cjvar. n_ivar) Dchangevar(Irani. tran2......tranN. deqns. cjvar. njvar)
0 первом случае trans — список или множество уравнений, которые подставля- ются в дифференциальное уравнение, список или множество дифференциальных уравнений deqns. При этом cjvar — имя текущей переменной. n_lvar — имя новой переменной (задается опционально). Во второй форме для подстановки используются уравнения tranl. tran2.................... Ниже представлены примеры применения функции Dchangevar >with(DEtools) Преобразование 1-го типа » »Dchangevar(m(x)=l(x)‘sin(x),n(x)=k(x).(D(ni>(x)=fn(x).(D@@2Xn}(x>=rXx)A2).x); (2) 2 [D(l)(x) sin(x) + l(x) cos(x) = l(x) sin(x). (D )(k)(x) « k(x) ] >0changevar(c=d.e=sin(f).{D(c).(D@@2)(e)).dummy); (2) (D(d). (D Xein(f))) Пробразонание 2-го типа >Dchangevar(t=arctan(tau).diff(x(t).t)=sin(t),t,tau): D(x)(arctan(tau)) = sin(arctan(tau)) >Ochangevar(x=sin(cos(t)).diff(y(x),x.x.x),x,t); (3) (D Ky)(sin(cos(t))) Преобразование 3-го типа >Dchangevar(x(t)=L,y(pOi),diff(x(t).t$3) = tan(t),t,phi): 3 d --------L y(phi)«tan(phi) 3 dphi Дополнительные примеры >0changevarf{t=T’phi.x(t)=L,y(phi)).diff(x(t),tS3^tan(t)t,phi); / 3 \ I d | L |----y(phi)| 1 3 | \dphi / ---------------= tan(T phi) 3 T >de .= diff(y(x),x$2)» y(x)*diff(y(x).x)/x; Id \ 2 y(x) F- y(x)| d \dx / de : — y(x) =------------------ 2 x dx > Dchar>gevar({x=exp(t),y(x)=Y(t)},de.x.t);
2 d — Y(t) Id \ 2 Y(t)|—Y(t)| dt \dt / 2 2 exp(t) exp(t) Следует отмстить, что подстановки являются мощным средством решения диффе- ренциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения. Примеры использования подстановок можно найти в (35) и в примерах справоч- ной базы данных системы Maple V. Функция DEnormal синтаксически записывается в виде DEnormaKdes.ivar.dvar), где des — система дифференциальных уравнений, ivar — независимая перемен- ная. dvar — зависимая переменная. Применение этой функции поясняют следу- ющие примеры: > DE :« хА3*у(х) + xA2*(x-1)*D(y)(x) ♦ > 50*xA3*(D@@2)(yXx) = x*sin(x), 3 2 3 (2) DE := х y(x) ♦ x (x-1) D(yXx)+50 x (D )(y)(x) = x »n(x) > DE2 = convertAlg(DE,y(x)); 3 3 2 3 DE2 := [fx , x - x , 50 x ], x sin(x)] > DEnormal(DE,x,y(x)); I 2 \ Id \ d | sin(x) x y(x) ♦ (x -1) I— y(x) | + 50 x -y(x) | =---- \dx / 2 | x Ylx I > DEnormal(DE2,x); sin(x) [[x, X -1. 50 x),---] X Функция convertAig(des.dvar) возвращает лист коэффициентов формы системы дифференциальных уравнений des с зависимыми переменными dvar. Это поясня- ют следующие примеры: > А = diff(y(x).xfsin(x)-diff(y(x),x}-tan(x)’y(x)=5: Id \ Id \ А -ж -у(х) I sin(x) -1— у(х) | - tan(x) у(х) = 5 \dx / \dx I > convertAJg(A.y(x)): [[-tan(x). sin(x) -1 J. 5] > В = (D@@2Xy)(x)*cos(x) ♦ (D@@2)(yXx)*5*xA2; (2) (2) 2 (2) (2) 2 B:-(D Xy)(x) cos(x) ♦ 5 (D )(y)(x) x
> convertAfg(B,y(x)); 2 [[0. 0. cos(x) +5xJ. 0] Для изменения переменных в системах дифференциальных уравнений использу- ется функция: convertsys(deqns, inits. vars. ivar. yvec. ypvec) Здесь deqns — одно дифференциальное уравнение или лист (множество), пред- ставляющие систему дифференциальных уравнений первого порядка, inits — множество или лист начальных условий, vars — зависимые переменные, ivar — независимые переменные, yvec — вектор решений, ypvec — вектор производных. Функция indicialeq(des,ivar, alpha, dvar) обеспечивает полиномиальное представление для линейного гомогенного диффе- ренциального уравнения второго порядка des Параметр alpha намечает точку сингулярности. > У := (2,x*2+5*x*3)*diff(y(x)^.x)+(5,x-xA2)*diff(y(x).xH(1*x),y(x)=0 > Y = convertAJg( Y, у(х)); 2 2 3 Y := |[х + 1, 5 х - х ,2х + 5х ], 0] 2 2 3 Y := Цх 1, 5 х - х ,2х + 5х ], 0] > indtcialeql Y. х, -2/5. у(х)); 2 37 х —х = 0 10 > indicialeq( Y. х. 0. у(х)), 2 х + 3/2 х * 1/2 = 0 >mdicialeq( Y, х. 1, у(х)). Error, (in DEtools/indicialeq/mdlcial) 1. is not a regular singular point Функция neduceOrder(des,dvar,partsol, solutionForm) обеспечивает понижение порядка дифференциального уравнения des (или систе- мы уравнений, представленных списком или множеством) при зависимых пере- менных dvar, частном решении partsol (или листе частных решений) и флаге solutionForm. показывающем, что решение происходит явным методом (explicitly) Для демонстрации действия этой функции воспользуемся примером из справоч- ной страницы по ней: > de = diff(y(x).x$3) - 6‘diff(y(x),x$2) ♦ 11*diff(y(x),x) - 6*y(x), /3 \ /2 I |d ||d | id \ de := |--y(x)| - 61— y(x)| * 111- y(x)| - 6 y(x) I 3 | | 2 | \dx / \dx / \dx /
> sol = ехр(х), sol = ехр(х) > reduceOrderf de у(х). sol); I 2 \ | d | /d \ I— ytx)| - 31-- y(x)| ♦ 2 y(x) | 2 | tdx / Mix I > reduceOrderf de. y(x), sol, basis); [exp(x). exp(2 x), 1/2 exp(3 x)] Функция regularsp(des.ivar.dvar) вычисляет регулярные особые (сингулярные) точки для дифференциального урав- нения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции. > coefs = [21*(хА2 - х ♦ 1).0,100*x*2’(x-1)*2J > regularspfcoefs, х); Ю. 1) Еше две функции пакета Detools traiislate(des.ivai.pi.dvar) и untranslate(des,ivar.pt,dvar) выполняют особую операцию трансляции дифференциального уравнения (или списка дифференциальных уравнений) из центрированного относительно 0 в центрированный относительно 1 и наоборот С деталями этого специфического процесса заинтересованный читатель может познакомиться в справочной базе данных Наконец, еше одна полезная функция пакета varparam(sols.v.ivar) находит общее решение дифференциального уравнения (или системы уравнений) sols методом вариации параметров Параметр v задает правую часть уравнения, если он равен 0, ищется только частичное решение. Приведенные ниже примеры показывают работу с этой функцией: > de = diff(Y(x).x,x) + Y(x) > sols = dsolvef de Y(x) output=basis); sols = (cos(x), sio(x)] > varparamf sols, csch(x), x ), I I I I C[1 ] cos(x) ♦ _C[21 sin(x) + | -sin(x) csch(x) dx cos(x) ♦ | cos(x) csch(x) dx'. sin(x)
> dsolve( de = csch(x). Y(x)), / / | sin(x) I cos(x) Y(x) = -1--------dx cos(x) + |--------dx sin(x) + _C1 cos(x) + _C2 sin(x) I sinh(x) | sinh(x) / / > varparam( (вхр(З’х).ехр(-х)], exp(x). x ): _C[1) exp(3 x) ♦ _C|2] exp(-x) -1/8 exp(-2 x) exp(3 x) -1/8 exp(2 x)exp(-x) Более подробную информацию об этих функциях читатель найдет в справочных страницах по ним, а также в информационном документе detools.mws, содержа- щем систематизированное описание пакета Setools с многочисленными примера- ми его применения. 12.3. Пакеты функций комбинаторики 12.3.1. Пакет combinat Функции комбинаторики достаточно известны из обычного курса математики В пакете combinat представлено 32 функции комбинаторики: Chi bell binomial cartprod character choose composition conjpart decodepart encodepart iibonacci Hrstpart graycode I nttovec lastpart multinomial next part numbeomb numbeomp numbpart numbperm partition permute powerset prevpart randcomb randpart randperm Stirling! Stirling? subsets vectoint Назначение этих функций (за исключением специфической функции Чи — Chi) следующее: bell(n) Возвращает Белл-число ехр(ехр(х)-1) = sum(bell(n)/n'"x n. ns0..infinity). причем для вычислений используется рекуррентное со- отношение bell(n+l) = (Ье1Ю+1 )‘п. binomialln, r) Возвращает биноминальные коэффициенты, причем если п и г целые числа, удовлетворяющие условию 0 < г < п. то функция возвращает C(n.r)=n!/(r!(n-r)'). а в общем случае C(n.r)=((n+l)/«(n+IM((n-r+l)). composition^. k) Возвращает списки композиций для целых неотрицательных пик iibonacci(n) Возвращает числа Фибоначчи вычисляемые по рекуррентной формуле F(n) - F(n-I) + F(n-2). где КО) - Ои F(l) - 1 iibonaccitn. x) Возвращает значение полинома Фибоначчи F(n, х) = х F(n-I, х) + F(n-2. х). где КО. х) = 0 и F( 1. х) = 1 при этом F(n) = F(n, 1) iirstpart(n) Возвращает первую часть канонической последовательности ряда. nextpart(l) Возвращает следующую часть канонической последовательности ряда lastpart(n) Возвращает последнюю часть канонической последовательности ряда. prevparl(l) Возвращает предыдущую часть канонической последовательности ряда
conjpart(l) Возвращает объединенным раздел в канонической последовательности ряда graycode(n) Возвращает лист кодов Грея для n-битовых чисел. multinomiaKn. kl. k2. km) Возвращает мультиномиальные коэффициенты numbcomb(n) и numbcomb(n. m) Возвращает число комбинаций numbcompfn, k) Возвращает число композиций numbpart(n) Возвращает список всех возможных сумм, даюшнх п. permute)n) и permute) n. r) Возвращает numbpermin. г) = nops(permute)n. г)) powerset! s) Возвращает степень множества в множестве s. randcomMn. m) Возвращает случайную комбинацию. randpart) я) Возвращает случайную часть randperm(n) Возвращает случайную композицию Stirling) (n. m) Возвращает число Стирлинга первого рода stirling2)n. tn) Возвращает число Стирлинга второго рода subsets)!.) Задает итерационную процедуру над степенями множества или листа L vectoint(l) Возвращает индекс вектора канонического упорядочения 1. tnllovec(m. n) Возвращает вектор канонического упорядочения для неотрицательных целых чисел тип Ниже даны примеры применения некоторых из этих фунший: > with(combinat) > choose(4, 3); {{1.2,3}, {1,2,4}, {1,3,4}, {2. 3. 4}} > choosers, b, b)). II]. (bj. |b. b], la], (a,b), [a. b. b]J > choose({a, b. c)); {{}, {a, b}. {a, b, c}. {b. c}. {cj. {a. c}_ {a), {b}] > choose([a, a, b, c), 3); [[a, a. b], [a, a, c], [a, b. c]| > composition(3,2); «2.11. [1,2]} > partition(4), ([1.1.1.1), [1.1. 2], [2.2]. [1.3]. [4]] > decodepart(4.2). П.1.2) > fibonacd(6); 8 > seq(fibonacci(i),i=1..12); 1,1,2, 3. 5. 8,13, 21,34. 55.89.144
> partition(5); Ц1.1.1. 1. 1]. [1.1.1. 2]. [1.2. 2]. [1. 1.3]. [2. 3]. (1.4]. [5]) > firstpart(3); > nextparti"); [1.2] > nextpartC); [3] > prevpart("); [1.2] > lastpart(3); [3] > conjpartC); [1.1.1] > conjpartC); [3] 9 = graycode(3); > printf(cat( % 3d'$8), op(map(convert. g. binary))); lprint(); g =[0.1,3. 2.6. 7. 5.4] 000 001 011 010 110 111 101 100 > muttinomial(8. 2. 6); 28 > mult>nom»al(8. 2. 3. 3). 560 > numbcomp(8, 5); 35 > nurnbpart(3), 3 > partition(3); ni.1.1].[1.2],[3D ([1. 1. 1. 1. 1], [1. 1.1.2]. (1. 2. 2]. [1, 1, 3]. [2, 3], [1. 4], [5]] > numbperm(4); 24 > numbperm(4, 3); 24 > numbperm([a. bj), 2 > numbperm({a. b, c). 2). 6 > numbperm([a, a. b], 2); 3
> рагШюл(З). ([1,1,1]. [1.2]. [ЗЦ >permute(3. 2), 1(1.2]. [1,3],|2 1]. [2. 3], [3,1]. [3.2П > permute([a, а. Ь] 2). ([а. а], (а. Ь]. [Ь а]] > powerset([a,b b]). [(]. Ib], [b.b],[a], (а. Ь]. [a, b. b]J > randcomb([a. b, с, d], 3). (b. c, d] > randcombtfa. b, c. d). 3): [a. b. d] > randcomb([a, b, c, d). 3); [a. c, d] >randpart(10), 11.1.8] > randpart(10); 13. Л > sbrlmg1(10.5); -269325 > sliriing2(10.5); 42525 > S .= subsets({1, 2}): > while not S[fin<shed| do S[nextvalueK) od, > vectomt([1,0,0]), 1 > inttovec(6,3). (1.0. 1] 12.3.2. Пакет combstruct Еще 9 функций, относящихся к структурам комбинаторики содержит пакет combstruct: allstructs count draw finished iterstrucls nextstruc! options specification structures Эти функции служат для создания случайно однородных объектов, принадлежа- щих заданному комбинаторному классу Они становятся доступными при испол- нении команды
палсш ^unam.uoO-JKUnuMUHHCKUX функции ППвПСв 245 > wittycombstruct): Например: > allstructs(Subset({one,two})); (О {two, one}, {one}, {two}} > atotnjcts(Permutatjon(|x,y.z)) stze=2): П*. У]. [x. z], [y. x). [y. z], [z, x], [z, y]] > count(Subset({1.2.3})): 8 > draw(Combination(5).size=4); {1.3.4. 5} > oount(Pennutation([a.a,b])); 3 > it =iterstructs(Permutation([a.a,b)).size=2): > draw(Partitioci(9)), (2. 2.5] >all8tructs(Composition(3), size=2); П2. 1]. (1.2]] Для более полного знакомства с этими специфическими функциями обратитесь к справочной системе. 12.4. Пакет финансово-экономических функций finance Этот пакет представлен рядом функций в двух формах: function(args) finance|luiiction|(args) Благодаря правилам задания аргументов .можно реализовать практически все известные финансово-экономические расчеты, такие, как амортизация, накопле- ния и платежи по вкладам и т.д В свете задач рыночной экономики эти функции полезны для приверженцев решения всего не выходя из оболочки Maple. Все же надо отметить, что малозаметные тонкости в определении финансово-экономиче- ских функций затрудняют их применение Есть множество специальных финан- сово-экономических пакетов, например, «Бухгалтерия 1С», которые лучше подходят для наших экономических реалий, чем «заумный» Maple V. Для выполнения финансово-экономических расчетов используются две базовые конструкции функций: lunction(args) и ltnance((unclion](args). Полный перечень функций можно найти в справке по этому пакету. Ограничимся упоминанием нескольких наиболее характерных функций, связанных с использо- ванием вкладов annuitykash. rate. Вычисление суммы, находящейся на вкладе с начальным значением] npenods)cash, процентом начисления rale и числом периодов npenods.
cashl‘iows((lov>5, rale) Вычисление обшей суммы вклада по списку вложений (lows и процен- ту обесценивания денег rate. I 1 ' — .11.1.1 - — - ' futurevaluelamount, Вычисление будущего значения вклада при начальном вложении . rate, nperiods) amount, проценте начисления rate и числе периодов nperiods. । presentvatue(amount. Вычисление начального вклада для получения суммы в amount при , rate, nperiods)i проценте начислений rate и числе вкладов nperiods. Примеры применения этих функций даны ниже: > with(finance): > annuity(100, 10, 15); 760.6079506 > annuity(cash,rate,nperiods); /1 1 1 cash |-------------------------1 jrate nperiods | \ rate (1 * rate) / > cashflws(|1000,800,700,600),-0 05); 3492.146316 > 5:=1000+800+700+600: s .•« 3100 > futurevalue(1000.0.1,5); 1610 51000 > presentvalue(1610,0.1,5); 999 6833301 Поскольку формулы и обозначения в финансово-экономических расчетах в раз- личной литературе (особенно в нашей и западной) несколько отличаются, это может создать серьезные ошибки при вычислениях К примеру, в формулах Maple на самом деле используются не проценты начислений или обесценивания вкладов, а соответствующие нм относительные единицы — например, 10% это есть 0.1. В нашей литературе проценты обычно задаются в явном виде, т.е. rate=10 при 10 процентах. Надо следить и за знаком величины rate, поскольку она может трактоваться как процент начислений или процент обесценивания денег по вкладам, в зависимости от того, какого она знака. Расчеты подобного рола для Maple V относятся к самым простым, так что даже начинающий пользователь может составить свои функции для таких расчетов для вполне понятных ему и апробированных формул. Наю отметить однако, что используя символьное задание параметров формул легко получить вывод именно тех формул, которые использует система Maple, и сравнить их со своими формулами. В случае совпадения применение функций Maple возможно и пред- почтительно. 12.5. Пакет геометрических расчетов geometry Этот пакет содержит средства расчета основных параметров ряда геометрических объектов:
circle conic dsegment ellipse hyperbola line parabola point segment square triangle По каждому объекту возможно задание различных исходных параметров, так что пакет охватывает практически все виды классических геометрических расчетов. Несомненно, этот пакет заинтересует всех, кто работает в области геометрии и связанных с нею прикладных наук. Обратите внимание на то, что функции этого пакета вовсе не строят графически соответствующие их названиям фигуры, а лишь выполняют типовые геометриче- ские расчеты Разумеется, в дальнейшем, используя данные этих расчетов, можно построить соответствующую фигуру с помощью функций графики. Работу с пакетом поясним на примере одной из функций — circle. Она позволяет математически задать окружность и определить все ее геометрические парамет- ры. Функция может иметь несколько форм записи. Например, в форме circle(c, |А, В, С), п, 'centername'=m) она определяет построение окружности, проходящей через три точки А, В и С. Необязательный параметр п — лист с именами координатных осей. Параметр centername’=m задает имя центра. В форме circle(c, (А, В]. n. 'centemame'=m ) задается окружность, проходящая через две точки А и В. а в форме circle(c, |A, rad], п, 'centername'=m ) задается окружность, проходящая через одну точку Л с заданным (и произволь- ным) радиусом rad и центром с. Наконец, функция circle в форме circle(c, eqn, n, 'centername’=m ) позволяет задать окружность по заданному уравнению eqn и центру с. Проиллюстрируем применение функции circle на следующих примерах: > with(geometry) >_EnvHocizontalName :» пт _EnvVerticalName := n: Определим окружность cl, проходящую через три точки: > circle(c1 .(point(A.O.O), pomt(B,2.0), point(C,1,5)].'centemame =01): > center(c1), coordinates(center(c1)); 01. [1, 12/5J > radius(d); 1/2 1/2 1/25169 25 > Equat>on(c1); 22 m ♦ n - 2 m - 24/5 п = 0
> detailed); name of the object c1 form of the object; drcle2d name of the center O1 coordinates of the center [1. 12/5] radius of the circle' 1/25*1694 1/2)*2541/2) equation of the circle: mA2+n*2-2*m-24/5’n = 0 Определим окружность c2, проходящую через две точки. > pomt(M.HonzontalCoord(01 )-radius(c1),VerticalCoord(O1)), > point(N,HonzonlalCoord(01)+radius(c1 ).VerticalCoord(O1)): > arde(c2.[M,N]): > Equabon(c2), 2 2 m * n -2m- 24/5 n = 0 Определим окружность сЗ с заданным центром н радиусом: > arcle(c3,lcenter(c1 ).radius(c1 )]): > Equation(c3), 2 2 m * п -2m- 24/5 п = О Определим окружность с формульным представлением: > circle(c4,Equation(c1 J.'centername -02): > center(c4), coordmates(center(c4)), 02, |1.12/5] > radius(c4); 1/2 1/2 1/25169 25 > area(c1), 169 —— Pi 25 Аналогичным образом заинтересованный в таких расчетах читатель может озна- комиться с другими функциями самостоятельно Тем более что в справочной системе на этот пакет имеется множество примеров работы с его функциями. 12.6. Пакет интегральных преобразований inttrans Это один из наиболее важных для общематематических и научно-технических приложений пакетов Он содержит небольшой набор функций: addtable fourier fouriercos fouriersln hankel hilbert invfourter invhilbert tnvlaplace laplace melliti Однако эти функции охватывают такие практические важные области математи- ки. как ряды Фурье, прямые и обратные преобразования Лапласа и Фурье.
Z-преобразование и ряд других интегральных преобразований. Ниже они обсуж- дены более подробно. 12.6.1. Прямое и обратное преобразование Лапласа Прямое преобразование Лапласа заключается в переводе некоторой функции времени f(t) в операторную форму F(p). Это преобразование означает вычисление интеграла О* Ftp) = J f(t) е dt U Для осуществления прямого преобразования Лапласа Maple V имеет функцию: laplace(expr,t,p) Здесь: ехрг — преобразуемое выражение, I — переменная, относительно которой записано ехрг, р — переменная, относительно которой записывается результат преобразования. Обратное преобразование Лапласа означает переход от функции F(p) к функции f(t) с помощью формулы а + 1- /(0 = J Ftp) е’’ dp s - !»• Для вычисления этого интеграла служит функция: invlaplace(expr, р. t) где: ехрг — выражение относительно переменной р, t — переменная, относитель- но которой записывается результирующая зависимость. Эта функция также размещается в пакете расширений inttrans. Оба преобразования широко применяются в практике научно-технических вычис- лений и отражают суть операторного метода. При этом прямое преобразование создаст изображение, а обратное — оригинал функции. Ниже приведены примеры применения прямого и обратного преобразований Лапласа: > with(inttrans), (addtable. fourier, fouriercos, fouriersin, hankel, hilbert, invfouner, invhilbert, invlaplace. laplace, mellin] > laplace(sm(t)*a,cos(t),t,p). 1 ap 2 2 p +1 p *1 > invlaplace(",p,t): sin(t) ♦ a cos(t) Нетрудно заметить, что в данном случае последовательное применение прямого, а затем обратного преобразования восстанавливает исходную функцию *in(t)+a*cos(t)
12.6.2. Прямое и обратное преобразование Фурье Прямое преобразование Фурье преобразует временную функцию f(t) из времен- ной области а частотную и заключается в вычислении следующей интегральной функции: F(w) = f /(f)e"dz — ев Оно реализуется следующей функцией пакета интегральных преобразований inttrans: fourier(expr.t.w) Здесь: ехрг — выражение (уравнение или множество), t — переменная, от которой зависит ехрг, w — переменная, относительно которой записывается результирующая функция. Обратное преобразование Фурье задается вычислением интеграла. <ж> /(/) = — J F(w) е'1' dar 2л •* — W Оно фактически переводит представление сигнала в частотной области во вре- менное представление. Примеры преобразования Фурье представлены ниже: > founer(sio(t).t.w): -I Pt Diracfw -1) + I Pi Dirac(w + 1) > invfouner(’,w,t); 1/2 I (-exp(l t) ♦ exp(-l t)) > simptify(’); sin(t) > fourier(1-exp(-a*t),t,w), 2 Pi Dirac(w) - fourier(exp(-a t), t w) > invfourier(".w.t); 1 - exp(-a t) Обратите внимание на то, что даже в простом первом примере применение обратного преобразования Фурье вслед за прямым не привело к буквальному восстановлению исходной функции sin(t) — потребовалась команда simplify, чтобы перевести результат в виде представления синуса через экспоненциальные функции к обычному виду sin(t). 12.6.3. Вычисление косинусного и синусного интегралов Фурье Разложение функции Kt) в ряд Фурье требует вычисления интегралов следующе- го вида:
Ff = V2/? f /(Г) costs П dt О as = J f(t) sints t) dr 0 Они получили название косинусного и синусного интегралов Фурье и фактически задают вычисление коэффициентов ряда Фурье, в который может быть разложена функция f(t). Для вычисления этих интегралов в пакете используются функции: founercos(expr,t,s) и fouriersin(expr,t,s) Поскольку формат задания этих функций вполне очевиден, ограничимся приме рами их применения: > wth(mttrans) >fbunercoe(5,t,t,s); 1/2 2 -5-------------------- 1/2 2 Pi s > founerstn(5*t.t,s), 1/2 1/2 -5/2 2 Pi Dirac(1, s) > fcwriefcos(exp(-t),t,s); 1/2 2 1/2 2 Pi (1 ♦ s) > fouhersin(exp(-t),t,s). 1/2 2 s 1/2 2 P< (1 M| 12.6.4. Интегральное преобразование Ханкеля Интегральное преобразование Ханкеля задается следующим выражением so f|nu|(s) = j f(t) t BesselJ(пи, s t) At 0 и выполняется функцией hankeKexpr. t, s. nu) Здесь: ехрг — выражение, равенство (или множство, или лист с выражения- ми/ равенствами), t — переменная в ехрг, преобразуемая в параметр преобразо- вания s, пи — порядок преобразования
Следующий пример демонстрирует применение функции Ханкеля: > with(inttrans) > hankel(t*(1/3).t,s.2). 1/3 2 Pi 7/9----------------- 2 7/3 GAMMA(5/6) S 12.6.5. Прямое и обратное преобразования Гильберта Прямое преобразование Гильберта задастся следующим выражением F (s) =--------------- к и превращает функцию f(t) в F(s) Обратное преобразование Гильберта означает нахождение f(t) по заданной F(s) Эти преобразования выполняются функциями hilbert(expr. t. s), invhilbertCexpr. t, s), где назначения параметров очевидны Приведенные ниже примеры иллюстрируют выполнение этих преобразовании > with(inttrans): > assume(a>0); > hilbert(exp(1), г, z), О > hilbert(f(u), u. t), hilbert(f(u), u, t) > hilbertf. t, s); -f(s) > hilbert(ff(t), I. s). infinity / s hilbert(f(t). t. s) Pi + | f(_U) d_U i -infinity > hilbert(t/(tA2+1).t.s); 1 2 s * 1 > invhilbsrtf.t.s), 0
> hilbert(s«n(xyx.x.y). cos(y) - 1 У >hilbert(ln(l,a,x).x.y): hilbert(ln(l x). x, y) ♦ hilbert(ln(a~). x, y) > htlbert(",y,z), -ln(l z) Как видно из этих примеров, обратное преобразование Гильберта, осуществлен- ное над результатом прямого преобразования, не восстанавливает буквально функцию /(/). 12.6.6. Интегральное преобразование Меллина Интегральное преобразование Меллина задается выражением «о М(.$) = ] т(х) х dx О и реализуется функцией mellin(expr. х, s) с очевидными параметрами ехрг, х и s. Применение преобразования Меллина иллюстрируют следующие примеры: > with(inttrans): > assume(a>0), > mellin(x*a,x,s), GAMMA(s ♦ a~) Heaviside(s ♦ a~) GAMMA(-a~ - s) Heaviside(-a- - s) GAMMA(s «• a- * 1) GAMMA) 1 - s a~) >meliin(x/(xA2-1),x.s); cos(Pi (1/2 s + 1/2» Pi . 1/2--------------------- sin(Pi (1/2 s ♦ 1/2» 12.6.7. Функция addtable Как видно из приведенных примеров, нс всегда интегральные преобразования дают результат в явном виде. Получить его позволяет вспомогательная функция addtable(tname.patt,expr.t,s) где tnamc — наименование преобразования, для которого образец patt должен быть добавлен к таблице поиска. Остальные параметры очевидны Следующие примеры поясняют применение этой функции: > with) m ttrans) > fouriersin(f(t),t,s); founersin(f(t). t, s)
> addtabie(founersin.f(t),F(s),t,s); > fourierain(f(x),x,z); F(2) 12.7. Пакет решения задач линейной алгебры linalg 12.7.1. Состав пакета linalg Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций, назначение которых указано ниже: addcol Формирует линейные комбинации из столбцов матрицы addrow Формирует линейные комбина кии из строк матрицы adj Возвращает матрицу, умножение которой на исходную квадратную матрицу дает единичную матрицу. adjoint Аналогична функции adj. angle Вычисляет угол между векторами. augment Объединяет две или больше матрицы горизонтально backsub Обратная подстановка в матрице. band Создает ленточную матрицу. basis Находит базис для векторного пространства. bezout Создает Bezout матрицу двух полиномов. BlockDiagonal Создает блок-диагональную матрицу blockmatrix Создает блок-матрицу cholesky Холески-декомпозиция квадратной положительно определенной матрицы charmat Создает характеристическую матрицу. charpoly Возвращает характеристический полином матрицы col Извлекает столбцы матрицы как векторы coldim Определяет размерность столбца матрицы colspace Вычисляет базис пространства столбца colspan Вычисляет векторы охвата для места столбца companion Вычисляет парную матрицу для полинома cond Вычисляет условные числа матрицы copyinto Переметает элементы из одной матрицы в другую cross prod Вычисляет векторное произведение. curl Вычисляет ротор вектора. definite Тест на положительные (отрицательные) определенные матрицы. delcols Удаляет столбцы матрицы. delrows Удаляет строки матрицы det Вычисляет детерминант матрицы diag Создает блок-диагональную матрицу
diverge Вычисляет дивергенцию векторной функции. dotprod Вычисляет скалярное произведение векторов. eigenvals Вычисляет собственные значения матрицы. eigenvects Вычисляет собственные векторы матрицы. entennatnx Обеспечивает интерактивный ввод матрицы. equal Определяет, являются ли две матрицы равными exponential Создает экспоненциальную матрицу extend Расширяет матрицу. ligausselini Свободное от дробей Гауссово устранение на матрице. libonacci Матрица Фибоначчи forwardsub Прямая подстановка в матрицу Irobenius Вычисляет форму Frobenius матрицы. gausselim Гауссово устранение на матрице gauss jo rd Синоним для rref (устранение Gauss-Jordan) geneqns Генерация элементов матрицы из уравнении genmatrix Генерирует матрицу из коэффициентов уравнений. grad Градиент векторного выражения G ra rn Schmidt Вычисляет ортогональные векторы hadamard Вычисляет ограничение на коэффициенты детерминанта hermite Эрмитовая нормальная форма матрицы hessian Вычисляет Hessian-матрицу выражения hilbert Создает матрицу Гильберта. htranspose Находит Эрмитову транспонированную матрицу. ihermite Целочисленная Эрмитова нормальная форма indexfunc Определяет функцию индексации массива innerprod Вычисляет векторное произведение. intbasis Определить базис для пересечения пространства inverse Вычисляет обратную матрицу. «smith Целочисленная нормальная форма Шмидта. iszero Проверяет, является ли матрица ноль матрицей jacobian Вычисляет якобиан матрицы векторной функции jordan Вычисляет форму матрицы Джордана. JordanBlock Возвращает блок-матрицу Джордана kernel Вычисляет базис для нулевого промежутка. laplacian Вычисляет лапласиан. leastsqrs Решение уравнении по методу наименьших квадратов linsolve Решение линейных уравнений Ludecomp Существляет Ш-декомпозицию. matadd Сложение матриц или векторов. — . 1 —..
matrix Создает матрицу. minor Вычисляет миноры матрицы. minpoly Вычисляет минимальный полином матрицы. mulcol Умножает столбец матрицы на заданное выражение mulrow Умножает строку матрицы на таланное выражение multiply Перемножение матриц или матрицы и вектора norm Норма матрицы или вектора normalize Нормализация вектора orthog Тест на ортогональность матрицы. permanent 1 Вычисляет permanent матрицы pivot Вращение относительно элементов матрицы potential Вычисляет потенциал векторного поля. Qulecomp randmatrix Осуществляет QR л. Шдм Генерирует случайные матрицы ) randvector Генерирует случайные вектороы rank Возвращает ранг матрицы ratform Вычисляет рациональную каноническую форму (синоним для frobenius) references Выводит список основополагающих работ по линейной алгебр row Извлекает строку матрицы как пек гор. rowdim Определяет размерность строки матрицы rowspace Вычисляет базис пространства строки. rowspan Вычисляет векторы охвата для места столбца. rref Сокращенная форма эшелона строки. scalarmul Умножение матрицы или вектора на заданное выражение. singtai Вычисляет сингулярное значение матрицы smgularvals Вычисляет сингулярные значения матрицы smith Вычисляет Шмид тону нормальную форму матрицы stack Объединяет две или больше матрицы вертикально submatrix Извлекает указанную субматрицу из матрицы subvector Извлекает указанный вектор из матрицы. sumbasis Определяет базис для суммы векторных мест swapcol Меняет два столбца в матрице swaprow Меняет две строки в матрице. Sylvester Создает матрицу Сильвестра из двух полиномов toeplitz Создает Toeplitz-ыатрицу. trace Возвращает след матрицы transpose Вычисляет транспонированную матрицу. Vandermonde Создает матрицу Вандервуда ' vecpotent Вычисляет векторный потенциал.
vectdim Определяет размерность вектора vector Создает вектор. wronskian Матрица Вронскиана векторных функции Ниже мы рассмотрим более подробно только некоторые функции из этого пакета. 12.7.2. Интерактивный ввод матриц Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix > with(linalg). Warning, new definition for norm Warning, new definition for trace > A = array(1 3.1 .3) >entermatnx(A), После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид: enter element 1,1 > 1 enter element 1,1 > 2 enter element 1.3 > 3 enter element 2.1 > 4 enter element 2,2 > 5 enter element 2,3 > 6 enter element 3,1 > 7 enter element 3,2 > 8 enter element 3,3 > 9 (1 2 3J 1 [4 5 6) I ) [7 8 91 12.7.3. Основные функции для задания векторов и матриц В библиотечном файле linalg имеются следующие функции для задания векторов и матриц: vectorin.list) Задание вектора с n-элементами. заданными в списке matrix(n.m.list) Задание матрицы с числом строк п и столбцов m с элементами заданными списком list. Ниже показано применение этих функций: > with(lmalg'). >V:=vector(3,[12.34,56l); V .= [12. 34. 56) > M:=matrix(2,3.(1.2.3,4]}; (12 3 1 М =[ [4 М[2.2] М[2.3J]
> V12). 34 >М[1.3); 3 > М(2.3| М[2, 3] Обратите внимание на последние примеры. Они показывают задание вызова индексированных переменных вестора и матрицы. 12.7.4. Функции для работы с векторами и матрицами Maple V имеет множество функций для работы с векторами и матрицами, входящими в библиотечный модуль linalg. Заметим, что с помощью команды ?name можно для любой функции получить справочную информацию с подробным ее описанием и примерами применения. Поэтому ограничимся приведением краткого описания наиболее распространенных функций для работы с векторами и матрицами. Операции со структурой отдельного вектора V и матрицы М coldiin < М > Возвращает число столбцов матрицы М rowdicn(M) Возвращает число строк матрицы М vectdimlV) Возвращает число элементов вектора V coKM.i) Возвращает l-й столбец матрицы М row(M .0 Возвращает l-ю строку матрицы М minor(M.i.j) Возвращает мииор матрицы М для элемента с индексами i и J. delcolsIM i..j) Удаляет столбцы матрицы М от i-го до j го delrows(V.i. j) Удаляет строки матрицы М от i-й до j-й exlend(M.m.n.x) Расширяет матрицу М на m строк и п столбцов с применением заполни* теля х. Основные векторные и матричные операции dotprod(U.V) Возвращает скалярное произведение векторов Uh V, crobSprod(U.V) Возвращает векторное произведение векторов 11 и V norm(V) или norm(M) Возвращает нормированный вектор или матрицу. copyinto(A.B.i.j) Копирует матрицу А в В для элементов последовательно от i до ). Возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2 stack(Ml,M2) Возвращает объединенную матрицу с вертикальным слиянием Ml и М2 add(AB) или evalm(A+B) Возвращает сумму матриц А и В add(A B.c.d) Возвращает (с’А + d*B) multiply! AB) или evalm(A&’ B) Возвращает произведение матриц А и В
adjoint! M) или adj(M) Возвращает сопряженную с M матрицу. charpoMM.lambda) EigcnvaJstM. vector) Возвращает характеристический полином матрицы М относительно за данной переменной lambda Инертная форма функции, возвращающей собственные значения матри цы М и (при указании необязательного параметра vector) принадлежащие им вектора. dell Mi jortan(M) nermitelMI Возвращает детерминант матрицы М Возвращает матрицу М в форме Джордана. Возвращает матрицу М а Эрмитовой форме (M) M) 1 transpose! M) Возвращает след матрицы М. Возвращает ранг матрицы М Возвращает транспонированную матрицу М nversetM) или evalmU / М) Возвращает обратную М матрицу. - - - — Приведем примеры применения некоторых из этих фунший: >wthf linalg'). > Mr=matrix(2,2.[a.b.c.dJ); М ;-( ] [с d] > transpose(M), [a cj [b d] » inverae(M); ( d b ] [-----------------------। [ad-bc ad-bc| [ I I c a [ad-bc ad-bc j > det(M); ad-bc >rank(M), 2 > trace(M); a + d > M =malrix(2,2,[1.2,3.4]); (1 2] M =[ I [3 4] > ev=evalf( Eigen vais(M.V)), ev ; [- 372281323. 5 372281323]
> eval(V), [-8245646401 -4222291504] [ 5657674650 - 9230523143] > charpoly(M.p); 2 р -5р-2 > jordan(M); I 1/2 ] » [5/2 + 1/2 33 0 I 1/2] [ 0 5/2- 1/2 33 ] Читатель, понимающий суть матричных вычислений, легко справится с тестиро- ванием других функций, входящих в библиотечный модуль linalg В приведенных примерах полезно обратить внимание на то. что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операции. 12.7.5. Решение систем линейных уравнений Ниже представлен простои пример решения в символьном виде матричного уравнения с применением функций, входящих в модуль linalg: > with( linalg'). > A.=matnx(2.2,[a,b,c,d]), [a b] A:»[ ] [c d] > В =vector(2,[c,dj): В := [c, d| > X;-Unsolved AB) I 2 ] [ d (b - c) -c + a d ] X:.[-------------,----------j [ -cb + ad -cb + ad ] Следующий пример показывает решение более сложной системы линейных уравнений с комплексными коэффициентами: > with(linaig): > A =matrix(2.2 [[10+200’1,-200’1],[-200’1.170*1]]); [10 + 2001 -200 1] А;=[ 1 [-2001 1701] > В =vector(2.|5,0]) В:«[5. 0] > X =multiply(inverse(A).B);
[289 510 170 600 | X ,= + ——— I, +.....| ] [7778 3889 3889 3889 ] > Digits:=5 convert(eval(X) float); (.037156+ .131141, .043713+ 15428 I] На этот раз решение получено с использованием функций умножения матриц и вычисления обратной матрицы в виде Х=А '*В, т.е. в матричном виде. В конце примера показано преобразование результатов с целью их получения в обычной форме комплексных чисел с частями, представленными в форме чисел с плаваю- щей точкой. Заметим, что аналогично решаются в численном виде системы линейных уравнений с действительными элементами матрицы А и вектора свободных членов В 12.8. Пакет логических операций logic Пакет logic содержит ряд функций, относящихся к математической логике; bequal convert /toinert satisfy bsimp canon distrib dual tautology convert / MOD2 environ convert/irominert randboo! Приведем определения этих функций bequalfb 1 .b2> Возвращает логическое значение true, если логические выражения Ы н Ь2 эквивалентны, иначе возвращает false. hequal(bl.b2,'p) Проверяет логические выражения hl и Ь2 на эквивалентность и задает результат логическим значением переменной р bsiinp(b) Упрощает логическое выражение b canonlb,alpha,form) Представляет логическое выражение Ь в канонической форме. converl(b.forrn.alphs) Конвертирует b в заданную форму. /MOD2. distribfb,alpha) Представляет b в виде суммы произведении dual(b) Возвращает логическое выражение, дуальное Ь. environ(n) Задает уровень n (0.1.2.3) автоматического упрощения логических выражений randbool(alpha.b) Создает случайное логическое выражение satisfy(b.alpha) Подбирает переменные соответствующие истинности Ь tautologyfb.'p'l Тестирует b на тождественную истинность и помешает результат в р. | Ниже приведены примеры решения характерных задач математической логики >with(logic): bequal(x.x); true > bequal(true.false); false > bsimp(a &rff (a &or b)); a &or (&not(b))
> convert(a &and b.MOD2); a b > dual(a &or (Snot a) = false); a &and (&not(a))=true > randbool({a,b}); (a &and b) &or ((&not(b)) &and (&not(a))) > randboot({a.b}); &or(a &and b. a &and (&not(b)). b &and (&not(a))) > randbool({a,b}). a &and b > tautology(&and(a.b) Sor (Snot a) &or (&not b)); true > tautotogy((a &rff b) Sor b, p), false * p; . {a = true, b = false) Обратите внимание на применение функции randbool, поскольку она создает случайные логические выражения, то совпадения результатов ваших эксперимен- тов с приведенными данными не будет. 12.9. Пакет функций теории графов networks Графы широко используются при решении многих прикладных и фундаменталь- ных задач. Пользователей, занятых решением таких задач, наверняка порадует пакет network, содержащий весьма представительный набор из 75 функций: acycpoly addedge addvertex adjacency allpairs ancestor arrivals bicomponents charpoly chrompoly complement complete components connect connectivity contract countcuts counttrees cube cycle cyclebase daughter degreeseq delete departures diameter dinic d|spantree dodecahedron draw duplicate edges ends eweight flow tlowpoly Itindcyc getlabel girth graph graphical gstmp gunion head icosahedron incidence incident indegree induce is planar maxdegree mincut mmdegree neighbors new- octahedron outdegree path petersen random rank tankpoly shortpathtree sho* shank span spanpoly spantrec tail tetrahedron tuttepoly vdegree vertices void weight Теория графов используется достаточно широко даже при решении прикладных задач: например, вычисления оптимальных маршрутов движения жслезнодорож-
ных составов, наиболее целесообразной раскройки тканей и листов из различных материалов и т.д. Рассмотрим некоторые избранные функции этого пакета, которые наиболее часто используются при работе с графами: Функции создания графов new Создает пустой граф (без ребер и узлов) void Создает пустой граф (без ребер) dubltcate Создает копию графа. complete Создает полный граф random Возвращает случайный граф. petersen Создает граф Петерсена. Функции модификации графой addedges Добавляет в граф ребро. addvertecs Добавляет в граф вершины connect Соединяет одни заданные вершины с другими delete Удаление из графа ребра или вершины. Функции контроля структуры графов draw Рисует граф edges Возвращает список ребер графа. vertices Возвращает список узлов графа. show — Возвращает таблицу с полной информацией о графе ends Возвращает имена вершин графа. head Возвращает имя вершины, которая является головой ребер. tail Возвращает имя вершины, которая является хвостом ребер. Incidence Возвращает матрицу инцидентности. adjacency Возвращает матрицу смежности. eweight Возвращает веса ребер. weight Возвращает веса вершин isplanar Упрощает граф, удаляя никлы и повторяющиеся ребра, и проверяет его на планарность (возвращает true, если граф оказался планарным, и false — в противном случае). Функции с типовыми возможностями графов flow Находит максимальный поток в сети от одной заданной вершины к другой. short pathtree Находит кратчайший путь в графе с помощью алгоритма Дейкстры Каждая из этих команд имеет одну или несколько синтаксических форм записи Их можно уточнить при помощи справочной системы. С ее помощью можно ознакомиться и с назначением других функций этого обширного пакета. Проил- люстрируем его применение на нескольких типичных примерах.
На рис 12 1 показан пример создания графа, имеющего четыре вершины, и графа Петерсона с выводом их графиков графическом функцией draw ЯП Cl ?«»отас графами (гример 1) г J. 4 к > «полное I (11.3 |, | 4 6)1»), edges (ц) di > 01 *l>et el sxn(C*) '»х -ew<CJlJ . 1 ^МлИ*7 * g-'дост ] gjr* ( ' ' < Рис 12 I Построение графов (пример I) На рис 12 2 показан другой пример работы с графами — построение графа функцией complele и затем его преобразование путем удаления части вершин Исходный и преобразованный графы строятся функцией draw 3 £•» »"• I'M" rqe» ft»™ >O Fat >т» с графами (пример 2) 5 >r1r»iwtef|! •»! </?) >ndir(tt?J rh wfG?) • 2 g'-><WT |Яс*имр | a i^4 ♦ etj Рис 12 2 Преобразование графа удалением части вершин (пример 2)
В третьем примере (рис. 12 3) граф формируется по частям. Вначале задается пустой граф функцией new, а затем с помощью функций addvertex и addedge и него включаются вершины и ребра. Далее функция connect соединяет вершину а с вершиной с, делая граф замкнутым. Функция draw строит сформированный таким образом граф, а функции head и tail используются для выявления голов и хвостов графа. .S Mapto v НеИам 4|n«4wJ M»t] HUB Я £•> Z** !»*•* Fqtn* fjai Рибс» t графами (пр имср 3) rl ’> wt t li (n**t wnrku) <i»*w(G3) .«I'lvm Iei ( I *i b c | „ G3 ) ( {f.» Ь Д j.(b.c|l G3) rcnnv I ((a) (o) ,B3) Hi.»w(C41 > be-ulfeT ГЛ) he.«l<e?.&3| h e > Ull(bl.G3) tail(oV,C3) ч d 4344 йо>«« |(4>м.ы» gtiobar | A'uf | SJ' jq.f* nu Рис 12.3. Формирование графа и определение его голов и хвостов В четвертом примере, представленном на рис. 12 4. показано создание графа G2 (его рисунок дан на рис. 12.2) с вычислением для этого графа максимального потока от вершины I Обратите внимание, что в параметрах функции flow, использованной для этого, заданы две переменные: eset — принимает значение множества с ребрами, по которым проходит максимальный поток, и comp — принимает значение множества, в котором содержатся вершины, по которым проходит максимальный поток. Значения этих переменных выведены в области вывода. В конце этого примера дан пример применения функции shortpathtree, ищущей наиболее короткий путь от вершины I до других вершин Приведенный ниже пример иллюстрирует работу функции show, выдающую таблицу с полной информацией о графе, созданном функцией complete: > with(networks):G2:=complete(4)- > show(G2): tabled _E maxname = 6 Eweight = tabled e4 = 1 e1 = 1 e6 = 1 e2 = 1 e5= 1 83’ 1
И& i- |mr (икш идаит £.«Ь- Км> *1SJ ZJ Р»6от» с графмга и. и ме; 4 I ±1 > with(networkc):G? -соир lot • (6) Л > flow (С.2,1. 4 , <«et,coap) > ecet ({1.21. (1.4). (3.4). (2.4). (1.3}) > coup • ' (1.3,4) > GG: -abort pat ht ree (02,1) dtaw(GG) Рис 12 4 Пример вычисления максимального потока и наиболее коротких путей для заданного графа 1) JBicomponents = _Bicomponents Ends = tabled e4 = {2. 3} el «{1.2) e6 = (1,3) «2 «{1,4) e5 = {2.4) e3 = {3,4} ]) _Edges = (e1. e3, e2, e4. e5 e€} _Head = tabled 1) -Vertices = {1,2, 3, 4} _E connectivity = Econnectivity _Vweight = table(sparse, [ Г) Countcuts = _Countcuts _Edgelndex = table(symmetrtc, [ (2.4) = {e5} (1.2)»{e1} (1.4) = {82} (3,4) = {e3} (2. 3) = {e4} (1.3) = {e6) I) _Counttrees = _Counttrees -Status = (COMPLETE. SIMPLE} Neighbors = tabled
3 = {1,2,4) 4 s {1,2, 3) 1 = {2. 3, 4} 2 = {1.3, 4} ]) _Tatl = tabte(( I) I) Разумеется, приведенные примеры далеко не исчерпывают всех задач, которые можно решать с применением графов Но они наглядно демонстрируют, что для большинства пользователей пакет network превращает графы из окутанного ореолом таинственности средства в простой рабочий инструмент. 12.10. Пакет числовой аппроксимации питарргох 12.10.1. Состав пакета питарргох Этот пакет содержит небольшое число безусловно очень важных функций: chebdeg chebmult chehpade chebsort chebyshev conlracform homerform infnorm laurent minimax pade remez taylor В их числе функции интерполяции и аппроксимации полиномами Чебышева, рядом Тейлора, отношением полиномов (Паде-аппроксимация) и др. Все они широко применяются не только в фундаментальной математике, но и при решении многих прикладных задач. Рассмотрим их, начиная с функций аппрок- симации аналитических зависимостей. 12.10.2. Разложение функции в ряд Лорана Для разложения функции f в ряд Лорана с порядком п в окрестности точки с х=а (или х=0) служит функция: laurent(f. х=а. п) или laurentff, х. п) Представленный ниже пример иллюстрирует реализацию разложения в ряд Лорана: > with(numapprox) > laurent(f(x),x=0,4); (2) 2 (3) 3 4 f(0) + D(fXO) x ♦ 1/2 (D MW)* *1/6(0 XO<O)x + O(x ) > laurent(exp(x),x,5); 2 3 4 5 1 ♦ x + 1/2 x + 1/6 x ♦ 1/24 x + O(x ) 12.10.3. Паде-аппроксимация аналитических функций Для аппроксимации аналитических функций одной из лучших является Паде-ап- проксимация, при которой заданная функция приближается отношением двух полиномов. Для осуществления такой аппроксимации используется функция pade(f, х=а, |гп,п]) или pade(f, х. |п?,п|)
Здесь i — аналитическое выражение или функция, х — переменная, oti ситель- но которой записывается аппроксимирующая функция, а — координата точки, относительно которой выполняется аппроксимация, m, п — максимальные степе- ни полиномов числителя и знаменателя. Технику аппроксимации Пале поясняет рис. 12.5. Рис 12 5 Аппроксимация Пале для синусоидальной функции На рис 12.5 представлена аппроксимация синусоидальной функции, а также построены графики этой функции и аппроксимирующей функции. 12.10.4. Паде-аппроксимация с полиномами Чебышева Для многих аналитических зависимостей 1 хорошие результаты дает аппроксима- ция полиномами Чебышева. В общем случае применяется Паде-аппроксимация с отношением таких полиномов Она реализуется функциями chebpadeU, х=а b. |m.n|) chebpadelf, х. (т.п]) chcbpade(f, a..b, |т,п|) Здесь: а..Ь задает отрезок аппроксимации, тип — максимальные степени числителя и знаменателя полиномов Чебышева. Приведенный ниже пример показывает аппроксимацию Паде полиномами Чебы- шева для функции f=cos(x): >wrth(numapprox) > chebpade(cos(x), х=0. 1. 5); .8235847380 Т(0, 2 х - 1) - 2322993716 Т(1.2 х - 1) - 05371511463 Т(2, 2 х - 1) з- 002458235267 Т(3.2 х -1) -5 ♦ 0002821190575 Т(4. 2 х -1) - .7722229156 10 Т(5.2х-1)
> chebpade(cos(x), х=0 1 Д2.3)). (8162435876 Т(0, 2 х - 1) - 1852356297 Т(1. 2 х -1) • 05170917482 Т(2, 2 х - 1 )У<Т<0. 2 х - 1) ♦ 06067214548 Т(1.2 х -1) ♦ 01097466398 Т(2. 2 х -1) ♦ 0005311640964 Т(3. 2 х -1)) 12.10.5. Наилучшая минимаксная аппроксимация Минимаксная аппроксимация отличается от Ладе-аппроксимации минимизацией погрешностей в точках, где функции минимальна и максимальна Она реализуется следующей функцией: ininimaxff. x=a..b, |m,n|. w. maxerror’) Tirumax(f. a..b, |m.nl, w, 'maxerror’) Здесь, помимо уже отмеченных параметров, w — процедура или выражение specifying the weight function (по умолчанию I), maxerror — переменная, которой приписывается значение minimax — нормы. Ниже дан пример аппроксимации функции cos(x) в интервале (-3.3|: >with( питарргох): > nwnax(cos(x). хв-3. 3,[2,3],1 .’minmax); -9 5458304185 + (.5022945573 10 - 2308484266 х) х -8 .5217186404 * (.1603239465 10 ♦ .1062847466 х) х > minmax, 04621605638 12.10.6. Наилучшая минимаксная аппроксимация по алгоритму Ремеза Для получения наилучшей полиномиальной аппроксимации используется алго- ритм Ремеза, который реализует следующая функция remezlw, f. a. b, m. п. crit, 'maxerror') Здесь: w — процедура, представляющая функцию w(x) > 0 в интервале |a,b]. i — процедура, представляющая аппроксимируемую функцию Цх). а и b — числа, задающие интервал аппроксимации [a.b|. тип — степени числителя и знамена- теля аппроксимирующей функции, crit — массив, индексированный от I m+n+2 и представляющий набор оценок в критических точках (т.е. точек максимума/ми- нимума кривых огрешности). maxerror — имя переменной, которой присваивает ся минимаксная норма w*abs(f - г) Следующим пример иллюстрирует применение данной функции для аппроксима- ции функции егГ(х): > wlh(numapprox) > Digits >12: w = ргос(х) 1 0 end: > 1 = ргос(х) evalf(erf(x)) end. > crit=array(1. 7. [0. 10.25. 50. 75, 90.1 0]):
> remez(w.f,0,1,5.0, crit, 'maxerror’). X -> 0000221260859 ♦ (1.12678937622 ♦ (.018447321427 ♦ (-.453446232258 + (.141246775408 ♦ 00966355215462 х) х) х) х) х > maxerror. 0000221268881831 12.10.7. Другие функции пакета Отметим назначение других функций пакета numapprox: chebdegfp) Возвращает степень полинома Чебышева р. chebmtilHp. q) Умножает полиномы Чебышева р и q chebsort(e) Сортирует элементы ряда Чебышева. confracform(r) Преобразует рациональное выражение г в ценную дробь. coniracform(r. x) Преобразует рациональное выражение г в цепную дробь с неза- висимой переменной х. homerform(r) Преобразует рациональное выражение г в форму Горнера homerform(r. x) Преобразует рациональное выражение г в форму Горнера с независимой переменной х. infnormff. x=a...b. 'xmax') Возвращает L-бесконечную норму функции на отрезке х |а.Ь|. infnorm(f. a . b, 'xmax') Возвращает L-бесконечную норму функции на отрезке |а,Ь|. 12.11. Пакет ортогональных полиномов orthopoly Ортогональные полиномы находят самое широкое применение в различных математических расчетах. В пакете orthopoly задано 6 функций: G Н L PT U Однобуквенные имена этих функций отождествляются с первой буквой в наиме- новании ортогональных полиномов Вопреки принятым в Maple V правилам, прописные буквы в названии этих полиномов не указывают на инертность данных функций — все они являются немедленно вычисляемыми. Функции данного пакета будут полностью описаны в этой главе. Отметим определения указанных функций: G(n,a.x) — полином Гегенбауэра (из семейства ультрасферических полиномов); Н(п,х) — полином Эрмита; L(n.x) — полином Лагсрра; L(n,a,x) — обобщенный полином Лагерра; Р(п,х) — полином Лежандра; Р(п,а.Ь,х) — полином Якоби; Т(п.х) — обобщенный полином Чебышева первого рода; U(n,x) — обобщенный полином Чебышева второго рода. Свойства ортогональных многочленов хорошо известны (|43j) Все полиномы (у нас их называют также многочленами) характеризуются целочисленным поряд- ком п. аргументом х и иногда дополнительными параметрами а и Ь. Существуют простые рекуррентные формулы, позволяющие найти полином n-го порядка по значению полинома (n-l)-ro порядка. Эти формулы и используются для вычисле- ния полиномов высшего порядка.
Ниже даны примеры вычисления ортогональных полиномов: > wth(orthopoly); [G. Н. L. Р. Т, U] >G(0,1,x), 1 >G(1.i,x): 2х > G(1,1.5); • 10 >Н(3,х); 3 8х -12х >L(3,x); 2 3 1-Зх+3/2х - 1/6 х >Ц2,а,х); 2 2 1 + 3/2 а - 2 х + 1/2 а а х ♦ 1/2 х >Р(2,х); 2 3/2 х - 1/2 >Р(2.1,1,х); 2 15/4 х -3/4 >Т(5,х); 5 3 16 х -20х +5х >U(5,x); 5 3 32 х -32х *6х 12.12. Пакеты функций расширенной графики plots и plottools Это, несомненно, один из самых мощных пакетов, который заинтересует любого пользователя Он предоставляет расширенные возможности двумерной и трех- мерной графики, а также почти все мыслимые средства графического представ- ления математических понятий и функций В пакете имеется 49 функций графики: animate animateJd changecoords complexplot complexplot3d conformal contourplol contourplot3d coordplot coordplot3d cylinderplot densityplot display display3d fteidplot fieldplotld gradplot gradplot3d implicitplot i mplicitplot3d mequal listcontplot listcontplotid listdensityplot list plot
Iistplot3d pareto polygonplot Id setoptions suridata loglogplot point plot polyhedraplot seloptions3d text plot logplol matrixplot odeplot pointplot3d polarplot polygonplot replot rootlocus serrulogplot spaceeurve sparsematrixplot sphereplot textplot3d lubeplot Этот пакет настолько важен, что избранным его функциям посвящена глава 13. Пакет plottools служит для создания различных графических примитивов — дуг, окружностей, эллипсов, цилиндров и т.д. Он используется в графических струк- турах, описанных в главе 13. Возможности пакета реализуются в функциях: plottools|function|(args) или function(args) Указанные функции создают базовые графические объекты, которые выводятся на экран дисплея с помощью функции plots|display| Пакет plottools задает построение следующих базовых графических объектов: arc arrow circle cone cuboid curve cutin cutout cylinder disk dodecahedron ellipse ellipticArc hemisphere hexahedron hyperbola icosahedron line octahedron pieslice point polygon rectangle semitorus sphere tetrahedron torus После создания графической структуры возможно применение следующих функций: rotate scale stellate transform translate Возможности пакета plottools будут более детально рассмотрены в главе 13. 12.13. Пакет реализации степенных разложений powseries Степенные разложения часто используются в математических расчетах для приближенного представления разнообразных функций и обеспечения единообра- зия их представления. В пакете powseries сосредоточены расширенные средства по реализации таких разложению. Они представлены 22 функциями: compose evalpo* inverse multconst multiply negative роч add powcos powcreate powdlfi powexp powint powlog powpoly powseries puwsin powsolvc puwsqrt quotient reversion subtract tpsform В пакете powseries имеется целый ряд функций для работы со степенными рядами: I ” । ' | Объединяет ряды а и b evalpoxtexpr) Вычисляет выражение ехрг и возвращает его в виде ряда inverse(p) Инвертирует |>яд р.
imiltconsUp.const) Умножает ряд p на константу const | multiply(a.b) Умножает ряд а на ряд Ь. Llegal ive(p) [pouaddla.b.. ) Возвращает аддитивный обратный по отношению к Ь ряд Складывает ряды а, Ь„ . . Ipowcrealelexpr) Создает ряд для выражения ехрг. poupoly(pol.var) Создает ряд для полинома pol по переменной var. |pou solve! sys) Создает ряд для решения дифференциальных уравнений sys. [quofientta.bl Возвращает результат деления а на b в виде ряда. |rcversion(a) Дает об)*атное к композиции разложение ряда а [subtract(a.b) Даст разность рядов а и Ь. В выражении ехрг могут использоваться операторы: +, С ними могут комбинироваться встроенные функции и функции пользователя, например Kg). Кроме того могут использоваться следующие функции: рои exp powinv poulog powneg powrev powdiil powint powquo pousub powcos pout an powsec powcsc powcot powsinh powcosh powtanh powsech poucsch powcoth powsqrt powadd multiply Назначение большинства их этих функций очевидно из их названия: они возвра- щают соответствующую функцию (указанную после слова pow в имени) в виде разложения в ряд или полинома. Например, powexp раскладывает выражения с экспоненциальными функциями в ряд. Получаемые функциями ряды представляются в специальном формате. Поэтому для их применения в обычном виде необходимо использовать функцию tpsform в «иде: tpsiorm(p. var, order) — преобразует ряд р: lpslorm(p, var) — преобразует. Здесь: р — имя степенного ряда, var — переменная, относительно которой записан ряд, order — порядок ряда Если параметр order не указан, используется значение глобальной переменной Order Ниже даны примеры, иллюстрирующие технику работы со степенными разложе- ниями: > with(powseries): > р1 =powexp(sin(x)): р1 = proc(powparm) end > р2 =powexp(cos(x)); р2 := proc(powparm) end > t.psform(p1 ,x); 2 4 5 6 1 + x + 1/2x -1/8 x -1/15x + O(x )
> tpefonn(p2.x); 2 4 6 ехр(1)-1/2ехр(1)х + 1/6 ехр(1) х +О(х ) > а - powsenes[powexp](x): > b = powsenes[tpsform)(a. х, 5). > с = powaddf powpoly(1*xA2+x.x), powlofl(1+x)). > d = tpsform(c, x, 6), 2 3 4 5 b = 1 ♦ x + 1/2 x * 1/6 x * 1/24 x + O(x ) 2 3 4 5 6 d:»1*2x*1/2x *1/3x -1/4 x +1/5x + O(x ) 12.14. Пакет для решения задач линейной оптимизации simplex Задачи линейной оптимизации важны как в фундаментальных, так и в приклад- ных приложениях математики В пакете simplex дан достаточно представитель- ный набор функций и определений для решения таких задач: NONNEGATIVE basis convexhull ctenn define_zero display dual equality feasible maximize minimize pivot pivoteqn pivot var ratio setup standardize Отметим назначение этих функций: NONNEGATIVE Ключевое слово, указывающее на неотрицательный тип данных basis Возврат списка основных переменных для множества линейных уравнений convexhull Вычисление выпуклой оболочки для набора точек cterm Задание констант для системы уравнений или неравенств deiine_zero Определение наименьшего значения, принимаемого за ноль (по умолчанию оно увязано со значением системной переменной Digits) display Вывод в матричной форме системы уравнений или неравенств dual Выдача сопряженных выражений equality Опция для функции convert, указывающая на эквивалентность feasible Выяснение возможности решения заданной задачи maximize Вычисление максимума функции mnimize Вычисление минимума функции pivot Создание новой системы уравнений с заданным главным элементом pivoteqn Выдача подсистемы уравнений для заданного главного элемента pivotvar Выдача переменных с положительными коэффициентами я целевой функции ratio Выдача отношений для определения наиболее жесткого ограничения setup Задание системы линейных уравнений standardize Приведение заданной системы уравнении или неравенств к стандартной форме
Главными из этих функций являются функции maximize и minimize, оптимизиру- ющие задачу симплскс-методом. Они записываются в следующей форме: maximized, С) minimized. С) maximized, С. vartype) minimized. С, vartype) maximized. С. vartype. ’NewC’, ’transform’) minimized, C, vartype, ’NewC’, 'transform'). Jaecs f — линейное выражение, С — множество или лист условий, vartype — задаваемый лпцноино тип переменных NONNEGATIVE или UNRESTRICTED, NewC и transform — имена переменных, которым присваиваются соответственно оптимальное описание и переменные преобразования. Ниже даны примеры при- менения этих функций: > with(simplex): Warning, new definition for maximize Warning, new definition for minimize >minimize( x-y, {4*x+2*y <= 10. 3*x+4*y <= 16), NONNEGATIVE.'NC ,'vt’), {x»0.y«4} >NC;vt. (y = -1/4 SL2 ♦ 4 - 3/4 x. SL1 =2-5/2 x+1/2_SL2} 0 >maximize( x+y, {4’x*2*y <= 10, 3*x+4*y <= 16), NONNEGATIVE ); (y = 17/5, x = 4/5} 12.15. Пакет статистических расчетов stats 12.15.1. Характеристика пакета stats Мир математических систем сейчас насыщен статистическими системами, напри- мер, такими, как Statistica или StatGraphics. Они прекрасно приспособлены для решения задач статистической обработки обширных массивов данных. Тем не менее проведение статистических расчетов в системе Maple V возможно и в ряде случаев весьма целесообразно, например, когда они являются частью исследова тсльского проекта Пакет stats для таких расчетов представлен всего двумя многоцелевыми стати- стическими функциями: statslsubpackage. function Kargs) subpackage|function|(args) Однако, благодаря специальной форме задания параметров (в частности, в виде субпакетов subpackages), возможно вычисление самых разнообразных статисти- ческих функций. Возможно обращение к следующим субпакетам: anova — дисперсионный анализ: describe — функции распределения вероятности; fit — линейная регрессия; random — генерация случайных чисел с различными законами распределения; statevalf — вычисление статистических функции и получение оценок для массивов данных;
statplots — построение графикой статистических функций; transform — функции преобразования данных. 12.15.2. Генерация случайных чисел с заданным * распределением Основой этого подпакета является функция random: random|destribution) (quaniity.uniform.method) или statslrandom. destributionl (quantity,uniform,method), где: destnbution — описание закона распределения случайных чисел; quantity — положительное число, указывающее на количество получаемых случайных чисел (по умолчанию 1. возможна опция generator’); uniform — процедура генерации чисел с равномерным распределением или ключевое слово default’ (по умолчанию); method — указание на один из трех методов ('auto', 'inverse' или 'builtin'). Возможно задание дискретных и непрерывных распределений, например, bino- miald — дискретное биномиальное распределение, discreteuniform — дискретное равномерное распределение, empirical — дискретное эмпирическое распределе- ние, poisson — дискретное распределение Пуассона, beta — бета-распределение, cauchi — распределение Коши, exponential — экспоненциальное отношение и др. (практически существуют функции для всех известных распределений). Следующие примеры демонстрируют технику получения случайных чисел с заданным законом распределения: > with(stats):Digits =5 > statspandom. normald)(5): .79697,- 40654,-.085304, 71297, 1 1119 > statsfrandom normaid)(5.default'.'inverse'); -.63631, 72218. - 063423,-1 5123 84664 > seed:=1: > uniform_generator:=proc() > global seed > seed.=irem(seed*11,101); >RETURN(seed/101) > end : > random[gamma(3fi(5,undorm generator), 1.1719, 1.5144. 3 3684, 1.9976. 4 8183 12.15.3. Регрессионный анализ Под регрессионным анализом (или просто регрессией) обычно подразумевают нахождение некоторой формальной аналитической зависимости, которая прибли- женно (по критерию минимума среднеквадратичной ошибки) аппроксимирует
некоторую исходную зависимость. Чаще всего она бывает представлена набором (облаком) точек, например, данных эксперимента. Для проведения регрессионного анализа служит функция fit. которая вызывается следующим образом: stats|fit.leastsquare[vars,eqn.parms||(data) или iit[leaslsquare(vars.eqn.parms|Kdata) где: data — список данных, vars — список переменных для представления данных, eqn — уравнение, задающее аппроксимирующую зависимость (по умолчанию линейную), parms — множество параметров, которые будут заменены вычислен- ными значениями. На примерах ниже показано проведение регрессии с помощью функции fit для зависимостей вида у(х)’. > with(stats):Digrts =5, Digits := 5 >fit]leastsquare[]x,y]]]({(1.2,3.4], |3,3.5,3.9,46]]), у = 2.4500 + 52000 х > fit(leastsquare[]x,y], у=а-хЛ2+Ь*х+с]]( Ц1,2,3,4].(1 8,4 5.10.16 5]]); 2 у = .95000 х + .21000 х + 55000 В первом примере функция регрессии не задана, поэтому реализуется простейшая линейная регрессия и функция fit возвращает полученное уравнение регрессии для исходных данных, представленных списками координат узловых точек. Это уравнение аппроксимирует данные с наименьшей среднеквадратичной погрешно- стью. Во втором примере задано приближение исходных данных степенным многочленом второго порядка. Вообще говоря, функция fit обеспечивает прибли- жение любой функцией и. таким образом, реализует практически все виды регрессии для функций одной переменной. Однако функция fit может обеспечивать регрессию и для функций ряда переменных. При этом просто надо увеличить размерность массивов исходных данных. В качестве примера ниже приведен пример регрессии для функции двух переменных >f =fit(leastsquarenx.y.z].z=a+b’x+c*y.(a.b.c)]]\ Ш1.2,3.5,5],(2,4,6.8,8l,[3.5,7.10,WeighW15.2)]]): f:« г = 1 + 13/3 х - 7/6 у > fa=unappiy(rhs(f),x,y); fa := (х. у)-> 1 ♦ 13/3 х-7/6 у >fa(1„2); 2 999999999 > »а(2.3>. 37/6 В данном случае уравнение регрессии задано в виде г=а+б*х+с*у. Обратите внимание на важный момент в конце этого примера — применение полученной функции регрессии для вычислений или построения ее графика. Прямое приме-
некие функции / в данном случае невозможно, так как она представлена в невычисляемом формате. Для получения вычисляемого формата она преобразует- ся в функцию двух переменных fa(x,y) путем отделения правой части а выраже- нии для функции / После этого возможно вычисление значений функции fa(x,y) для любых заданных значений х и у. 12.16. Пакет полезных студентам функций — student В этом пакете имеется почти полсотни функций: D Дифференциальный оператор. Diff Инертная форма функции вычисления производной. Doubleint Инертная форма функции вычисления двойного интеграла Int Инертная форма функции интегрирования int Limit Инертная форма функции вычисления предела limit Lineint Инертная форма функции вычисления линейного интеграла lineint Point Тестирование объекта на соответствие типу точки (point) Product Инертная форма функции вычисления произведения членов последовательности. Sum Инертная форма функции вычисления суммы членов последовательности Tripleint Инертная форма функции вычисления тройного интеграла । changevar Замена переменной. combine Объединение подобных членов. completesquare Вычисление полного квадрата (многочлена) distance Вычисление расстояния между точками ’ equate Создание системы уравнений из списков, таблиц, массивов extrema Вычисление экстремума выражения integrand Вывод подынтегрального выражения из-под знака инертного интеграла intercept Нахождение точки пересечения двух кривых. intparts Интегрирование по частями. isolate Выделение подвыражения leftbox Графическая иллюстрация интегрирования методом левых прямоугольников. leftsum Числовое приближение к интегралу левыми прямоугольниками makeproc Преобразование выражения в процедуру Maple. maximize Вычисление максимума функции. middlebox Графическая иллюстрация интегрирования методом центральных прямоуголь- ников. middlesum Числовое приближение к интегралу центральными прямоугольниками. midpoint Вычисляет среднюю точку' сегмента линии minimize Вычисление минимума функции powsubs Подстановка для множителей выражения. nghtbox Графическая иллюстрация интегрирования методом правых прямоугольников rightsum Числовое приближение к интегралу правыми прямоугольниками
s bowtangent График функции и касательную линию simpson Числовое приближение к интегралу по методу Симпсона slope Вычисление и построение касательной к заданной точке функции. | trapezoid Числовое приближение к интегралу метолом трапеции | value Вычисляет инертные функции 1 Это, несомненно, один из самых «милых» для студентов и аспирантов пакетов В нем собраны наиболее распространенные и нужные фунщии, которые студенты университетов и иных вузов обычно используют на практических занятиях, при подготовке курсовых и дипломных проектов Набор этих функций, разумеется, не ограничивается «скромными» потребностями студентов — просто это наиболее распространенные функции, в основном относящиеся к математн1ескому анали- зу Наряду со студентами эти функции широко используют профессионалы-мате- матики и ученые, использующие математические методы в своей работе. В пакетах расширения Maple V можно найти множество специальных функций для вычисления интегралов различного типа Например, в пакете student имеются следующие функции. Int(expr.x) — инертная форма вычисления неопределенного интеграла; Doubleint(expr.x.y.Doniain) — вычисление двойного интеграла по переменным х и у по области Domain; Tripleint(expr.x,y,z) — вычисление тройного интеграла; intparts(f.u) — интегрирование по частям. На рис. 12 6 показано применение функции Tripleint этого пакета для вычисления тройного интеграла. Im 00> гМм » fw. ИЖ! у n»«»«»»« I gauxn| 0O-i «а Рис 12 6 Вычисление тройного интеграла с помощью функции Tripleint
В главе 13 будет описано несколько графических функций пакета student, указанных выше в их общем списке Они в основном используются для иллюст- рации интегрирования методом прямоугольников и построения касательной к заданной точке функции. Пакет дает также дополнительные возможности по анализу функций, например по поиску экстремумов функций. 12.17. Пакет работы с тензорами tensor Этот новый пакет, отсутствовавший в предшествующих реализациях Maple V, дает средства для работы с тензорами и вычислениями, используемыми в общей теории относительности. В нем использован специальный тип данных tensor_type в виде таблиц, с двумя полями: компонент и характеристик индексов. Поле компонент — массив с размерностью, эквивалентной рангу объекта Поле харак- теристик индексов задается списком чисел I и -1. При этом 1 на i-й означает, что соответствующий индекс контрвариантный, а - 1 — что он ковариантный. Процедура tensor_type вовзращает логическое значение true, если ее первый аргумент удовлетворяет свойствам тензора, и false, если он этому свойству не удовлетворяет. Каждому тензору соответствуют еще две таблицы Таблица коэффициентов вращения задает коэффициенты вращения Ньюмена-Пенроуса, которые вычисля- ются функцией tensorjnpspin] и индексируются именами греческих букв alpha, beta, gamma, epsilon и т.д. Другая таблица (компонент кривизны) содержит компоненты кривизны Ньюмена-Пенроуса. Они представлены тремя полями: полем Phi в виде массива размерности <0..2,0 .2) с компонентами Риччи, поле Psi с массивом размерности (0..4) с компонентами Вейля и поле R со скаляром Риччи. Объявление > with(tensor); дает доступ к следующим функциям пакета: Christoffel 1 Вычисление символов Кристоффеля первого рода Christoffel2 Вычисление символов Кристоффеля второго рола. Einstein Возвращает тензор Эйнштейна. display_alJGR Описывает ненулевые компоненты мех тензоров и параметров, вы численных командой tensorsGR (Общая теория относительности). displayGR Описывает ненулевые компоненты конкретного тензора (Общая теория относительности) enorsGR Вычисляет тензор кривизны в данной системе координат (Общая теория относ ител ьност и) Jacobian Якобиан преобразования координат №lling_eqns Вычисляет компоненты для уравнений Киллинга (имеет отношение «симмет- риям пространства) 1 LevICivita Вычисляет ковариантные и контравариантные псевдотензоры Леви-Чивита 1 Lie_diff Вычисляет производную Ли тензора по отношению к контраиарнантниму векторному полю L. • Ricci Тензор Риччи. Ricciscalar Скаляр Риччи.
Riemann Тензор Римана RiemannF Тензор кривизны Римана в жесткой системе отсчета Weyl Тензор Вейля act Применяет операции к элементам тензора таблицам вращений или кривизны antisymmetrue Антисимметризаиия тензора по любым индексам change basis Преобразование системы координат commutator Коммутатор двух контравариантных векторных нолей compare Сравнивает два тензора, таблицы вращений или кривизны conj Комплексное сопряжение connexF Вычисляет связующие коэффициенты для жесткой системы координат contract Г_ Свертка тензора по парам индексов convert NP Преобразует связующие коэффициенты или тензор Римана к формализму Ньюмена-Пенроуза. cov_dift Ковариантное дифференцирование create Создает тензорный объект dlmetnc Первая частная производная метрики d2metric Вторая частная производная метрики directionaLdiff Производная по направлению dual Осуществляет дуэльную операцию над индексами тензора entermetric Обеспечивает ввод пользователем координатных переменных и ковариант- ных компонент метрического тензора. exterior.difF Внешнее дифференцирование полностью антисимметричного ковариантного тензора exterior_pro<t Внешнее произведение двух ковариантных антисимметричных тензоров frame Залает систему координат, которая переводит метрические компоненты к диагональной сигнатурной матрице (с положительными или отрицательными единицами) geodesic_eqns Уравнение Эйлера-Лагранжа для геодезических кривых. get_char Возвращает признак (ковариантный/контравариантиый) объекта getcompts Возвращает компоненты объекта get_rank Возвращает ранг объекта invars Инварианты тензора кривизны Римана (Общая теория относительности). invert Обращение тензора второго ранга lincom Линейная комбинация тензорных объектов lower Опускает индексы npcurve Компонента кривизны Ныомена-Пенроуза в формализме Дебеаера (Общая теория относительности) npspin Компонента вращения Ньюмена-Пенроуза в формализме Дебевера (Общая теория относительности) partiaLdiii Частная производная тензора pcrmutejndices Перестановка индексов.
petrov Классификация Петрова тензора Вейля prod Внутреннее и внешнее тензорное произведение raise Поднятие индекса. symmetrize Симметризация тензора по любым индексам. transform Преобразование системы координат Примеры применения этого пакета можно найти в справочной базе данных системы Пакет представляет интерес для физиков-теоретиков, работающих в области Общей теории относительности и в ее приложениях Для них (но нс для большинства пользователей) приведенные данные полезны и понятны. 12.18. Пакет упорядочения переменных totorder Этот небольшой пакет служит для упорядочения переменных по заданным неравенствам г и содержит следующие функции; tassume tis forget ordering inif Приведем их определения (г — последовательность отношений): tasume(r) Дает полное упорядочение имен по заданной последовательности отношении. tis(r) .Тестирует неравенства. forget(r) Уничтожает отношения порядка для одной переменном forget(everythmg) Уничтожает отношения порядка для всех переменных. orderingO Возвращает текущие отношения порядка initO Восстанавливает первоначальные отношения порядка. Примеры применения функций пакета totorder: > with(totorder>:ioit() tassume(x<y. y<z, z=d): assumed. x<y, y<z, z = d > tassume(u>d); assumed, d < u > tis(u<z); false > forget(u); forgotten, и > ordering(), x<y, y<d. d = z > tassume(u>d); assumed, d < u > tis(2*z-z<d); false > tis(2*z-z=d); true
12.19. Пакеты специального назначения В этом разделе дано перечисление функций и указано назначение ряда пакетов специального назначения, относящихся к теории чисел, формам и иным специаль- ным разделам математики, редко используемым в прикладных расчетах. 12.19.1. Пакет Domains Этот пакет служит для создания доменов — таблиц операций для вычислений. Ограничимся приведением вариантов задания функции Domains этого пакета: Domains|<lomam| Domains|evaldomains| Domainslexamplel Doinams|coding) Следующий пример поясняет создание и использование доменов Q (для рацио- нальных данных) и Z (для целочисленных данных) > with(Domains), Domains version 1 0--------------------------- Initially defined domains are Z and Q the integers and rationals Abbreviations, e g DUP for DenseUntvanatePolynomial, also made [init] > O[ +')(1/2,2/5.3/8); 51 40 >ZJGcd)(660.130), 10 Следующая операция показывает, что домен Z является таблицей: > type(Z.table), true А функция show позволяет вывести полный перечень всех операций, доступных для домена Z: > show(Z.operations); Signatures for constructor Z note operations prefixed by — are not available • : (Integer.Z) -> Z • (Z.Z‘)->Z ♦ : (Z.Z*) -> Z -:(Z.Z)->Z -:Z->Z 0 Z 1 :Z < (Z.Z) -> Boolean < = : (Z.Z) -> Boolean о (Z.Z) -> Boolean = : (Z.Z) > Boolean > (Z.Z.) > Boolean > =: (Z.Z) •> Boolean Abs :Z->Z Characteristic: Integer Coerce : Integer -> Z
Div (Z.Z) -> Union(Z.FAIL) EuclideanNorm : Z -> Integer Factor: Z -> (Z.QZ, Integer]’]) Ged : Z’ -> Z Gcdex (Z2,Name) -> Z Gcdex (Z.Z.Name.Name) -> Z Input: Expression -> Umon(Z.FAIL) Inv : Z -> Umon(Z,FAIL) Lem Z’-> Z Max (Z,Z*)->Z Min (Z.Z*) -> Z Modp : (Z.Z) •> Z Mods (Z.Z) -> Z ModularHomomorphism : () -> (Z -> Z.Z) Normal Z -> Z Output • Z -> Expression Powmod (Z.lnteger.Z) -> Z Pnme Z -> Boolean Quo: (Z,Z,Name)->Z Quo : (Z.Z) -> Z Random () -> Z RelativelyPrime (Z,Z) •> Boolean Rem (Z.Z) -> Z Rem : (Z.Z Name) -> Z Sign : Z-> UNION(1.-1.0) SmallerEuclideanNorm . (Z.Z) -> Boolean Sqrfree : Z -> [Z,([Z.Integer]’]] Type Expression -> Boolean Unit Z -> Z UnitNormal. Z -> [Z.Z.Z] Zero : Z -> Boolean * : (Z,Integer) -> Z Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целого, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная «экзотика», чем как реальное средство для оптимизации вычислений. Потребуется время, чтобы показать, что это нс так. 12.19.2. Пакет функций теории чисел numtheory В этом обширном пакете собрано 58 функций, относящихся к теории чисел В F Glgcd J L м bernoulli bigoniega cfrac efraepol cyclotomic divisors euler lactorEQ lactorset fermat (factor ilactors imagunit index mvcfrac invphi isoIve isprime issqrfree ith prime Jacobi kronecker lambda legendre mcombine mersenne minkowski mipolys mlog mobius mroot msqrt nearestp nextpnmc nthconver nthdenom nthnumer nthpow order
pdexpand phi ppnmroot quadres rootsunity safeprime sum2sqr tau thue prrvpnnie prnnrool sigma sq2iactor Большинство функций этого пакета достаточно просты, н заинтересованный читатель вполне в состоянии провести их тестирование самостоятельно. 12.19.3. Пакет padic для работы с р-адическими числами Этот весьма специфический пакет содержит следующие функции для работы с р-адическими числами: evxlp expansion function Icoeffp orderp ordp ratvaluep rootp valuep Ввиду специфичности функций этого пакета их изучение мы оставляем заинтере- сованному читателю. 12.19.4. Пакет для определения конечного поля Галуа GF Этот пакет содержит функцию GF в двух формах: GF(p.k) и GF(p.k.a) Здесь р — простое число, к — натуральное число, а — неприводимый полином степени к над полем целых чисел по модулю. Функция GF возвращает таблицу G-функций и констант для выполнения арифметических операций над конечным полем GF(pk). именуемым полем Uakkef с рк-элементами. 12.19.5. Пакет Gausslnt для работы с Гауссовыми целыми числами Гауссово целое число — число вида а+1*Ь, где а и b — любые целые рациональ- ные числа. Так что их можно считать подвидом более общего класса комплексных чисел. Пакет Gausslnt содержит достаточно представительный набор функций для работы с такими числами: Gtbasts Glchrem Gldivisar Glfacpoly GIfacset Gliactor Gllactors GIgcd GIgcdex Gfhermite Glissqr Gllcm GImcmbine GInearest Glnodiv Glnorm Glnormal Glorder Glphi GIpnme Glquadres Glquo Glrem GIroots GIsieve Glsmith Glsqriree Glsqrt Glunitnormal Нетрудно заметить, что в этот набор входят уже известные числовые функции к чьим именам добавлены буквы GI. Например, функция Gltactor(c) раскладывает Гауссово число на простые множители. GIgcd(cl.c2) находит наибольший общий делитель Гауссовых чисел с! и с2 и т.д. Функции этого пакета достаточно просты, так что ограничимся приведенными примерами. Гауссовы целые числа в большин- стве научно-технических расчетов встречаются крайне редко. Так что этот пакет рассчитан на специалистов-математиков, работающих в области теории чисел.
12.19.6. Инструментальный пакет для линейных рекуррентных уравнений LREtools Этот пакет полезен математикам, часто использующим рекуррентные отношения и формулы. Он дополняет функцию rsolve основной библиотеки и содержит следующие функции: REcontent REcreate REplot REprimpart REreduceorder REloDE REtodeita REtoproc constcoeffsol delta 12.19.7. Пакет функций дифференциальных форм difforms В пакете дифференциальных форм содержится следующий ряд функций: const d deffonn form formpart mixpar parity scalar scalarpart simpform wdegree wedge Демонстрационные материалы по применению этого пакета входят в поставку Maple V R4 12.19.8. Пакет для работы с рациональными производящими функциями genfunc В этом пакете содержатся средства для работы с рациональными производящими функциями: rgLcharseq rgLencode rgLexpand rgLfindrecur rgLhybrid rgLnorm rgCpfrac rgLrelate rgLsequence rgLsimp rgl_lerm termscale Эти функции представляют специальный интерес для пользователей, работающих в области теории чисел и рациональных функций. 12.19.9. Пакет вычислений по базису Гребнера Это еще один пакет из специальных областей математики. Он представлен дюжиной функций: rgLcharseq rgLencode rgLcxpand rgLfindrecur rgLhybrid rgLnorm rgLpfrac rgLrelate rgLsequence rgf_simp rgLterm tennscale Маловероятно, что эти функции, реализующие вычисления по базису Гребнера. заинтересуют большинство пользователей системы Maple V. По их включение в пакеты расширений свидетельствует о полноте системы 12.19.10. Пакет операций для работы с конечными группами groups Этот пакет содержит весьма представительный набор функций: DerivedS LCS NortnalClosurc RandElement Sylow
areconjtigate center centralizer convert core cosets cosrep derived grelgroup groupmember groupordcr inter invperin isabclian isnormal issubgroup mulperms normalizer orbit perm group perm rep pres suhgrel typ В рамках основной ориентации данной книги — массовые математические н научно-технические расчеты — применение этих функций довольно ограничено Надо полагать, специалисты в этой области смогут разобраться с этим пакетом самостоятельно. 12.19.11. Пакет для работы с симметрией Ли liesymm В этом пакете, относящемся к понятиям симметрии Ли. имеется ряд функций: &’ &mod Eta Lie Lrank TD annul autosimp close d depvars determine dvalue extvars gctcocff getform hasc losure hook tndepvars makeiorms mixpar prolong reduce setup translate vfix wcollect wdegree wedgeset wsubs Эти функции представляют достаточно специфический интерес и потому в дальнейшем не рассматриваются. 12.19.12. Пакет работы с суммами sumtools Этот инструментальный пакет предназначен для работы с суммами. Он содержит указанные ниже функции: Hypersum Sumtohyper cxtended_gosper gospcr hyperrecursion hypersum hyperterm simpcomb sumrecursion sumtohyper 12.19.13. Пакет организации мультипроцессов process Этот узкоспециализированный пакет содержит ряд функций по организации мультипроцессов: block exec fork kill pclose pipe popen wait Данные функции представляют интерес для пользователей операционной системы UNIX, так что в проблематику данной книги не входят. 12.20. Библиотека пользователей SHARE В поставку системы Maple V R4 Power Edition входит богатая библиотека расширений, составленная пользователями этой системы. Она может быть полу- чена и по Internet. Сейчас эта библиотека имеет множество разделов, многие из которых подобны названиям пакетов расширений системы:
Раздел Справка Раздел Справка Algebra ’share.algebra Modular computations ’share,mod Analysts ?share,analysis Numerics ?share.numerics Calculus ’share.calculus Number Theory ’share.numtheor Combinatorics ?share.combmat Graphics 'share,graphics Conversions ’share.convert Programming ’share,program Courses ’sharc.courscs Science ’share,science Engineering ’share.engmeer Statistics ’share.stats Geometry ?share.geomelry System Tools ’share.system Linear Algebra ?share.1inalg Для загрузки библиотеки совместного использования надо в командной строке дать команду > with(share); В состав большинства файлов библиотеки входит документация, подготовленная на языке LaTeX Благодаря библиотеке share пользователи в разных странах мира могут работать над совместными проектами. В новой реализации Maple V R5 библиотека SHARE существенно расширена и поставляется на отдельном CD-ROM
Глава 13. Графика в системе Maple V 13.1. Двумерная графика 13.1.1. Основные возможности двумерной графики Лидером ио графическим возможностям среди математических систем для персо- нальных компьютеров долгое время считалась система Mathematica 2. Однако в реализации Maple V R4 возможности графики системы Maple V приблизились к таковым у системы Mathematica 2 и даже Mathematica 3. Они настолько обширны, что, будь математическая графика Maple V единственным назначением системы, оно вполне оправдало бы ее разработку. Графика Maple V реализует все мыслимые (и даже ♦немыслимые») варианты математических графиков — от построения графиков простых функции в Декар- товой и в полярной системах координат до создания реалистических образов сложных пересекающихся в пространстве фигур с их функциональной окраской. Возможны наглядные графические иллюстрации решений самых разнообразных уравнений, включая системы дифференциальных уравнений. В само ядро Maple V встроено ограниченное число функций графики. Это прежде всего функция для построения двумерных графиков (2В-типа) — plot и функция для построения трехмерных графиков (ЗГКтипа) — plot3d. Они позволяют строить графики наиболее распространенных типов. Для построения графиков специаль- ного типа (например, в виде векторных полей градиентов, решения дифференци- альных уравнений, построения фазовых портретов и т.д.) в пакеты расширения системы Maple V включено большое число различных графических функций. Для их вызова необходимы соответствующие указания. Вообще говоря, средства для построения графиков принято считать графическими процедурами или операторами Однако мы сохраним за ними наименование функций в силу двух принципиально важных свойств: • графические средства Maple V возвращают некоторые графические объекты, которые размещаются в окне документа в строке вывода или в отдельном графическом объекте; • эти объекты можно использовать в качестве значении переменных, т е пере- менным можно присваивать значения графических объектов и выполнять над ними соответствующие операции (например, с помощью функции show выво- дить на экран несколько графиков) Графические функции заданы таким образом, что обеспечивают построение типовых графиков без какой-либо особой подготовки. Все. что для этого нужно, это указать функцию, график которой строится, и пределы изменения независимых переменных. Однако с помощью дополнительных необязательных параметров — опций можно существенно изменить вид графиков, например, изменить стиль и цвет линий, вывести титульную надпись, изменить вид координатных осей и т.д.
13.1.2. Основная функция двумерной графики — plot Для построения двумерных графиков служит функция plot. Она задается н виде: plot(f, h. v) или plot((, h. v, о), где f — функция (или функции), чей (чьи) график(и) строятся, h — переменная с указанием области ее изменения по горизонтали, v — заданная опционально переменная с указанием области изменения по вертикали, о — опция или набор опций, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т.д.). Самыми простыми формами задания этой функции служат: plot(f.xmin..xmax) — построение графика функции f, заданной только именем: plot(f(x),x=xmin..xmax) — построение графика функции f(x). Диапазон изменения независимой переменной х задается как xmin..xmax, где xmin и max — минимальное и максимальное значение х. .. (две точки) — составной символ, указывающий на изменение независимой переменной. Разуме- ется. имя х здесь дано условно — независимая переменная может иметь любое допустимое имя Для двумерной графики возможны следующие опции: axes Вывод различных типов координат (axes=NORMAL — обычные оси. выводятся по умолчанию. axes»BOXES — график заключается в рамку с оцифрованными осями. axes=FRAME — оси в виде перекрещенных линий и axes=NONE — осн не выводятся) color Задает цвет кривых (см. далее) coords Задание типа координатных систем (см далее) numpoints Задает минимальное количество точек графика (по умолчанию nunipoints®49) resolutions Залает горизонтальное разрешение устройства вывода (по умолчанию resolutions-200. параметр используется при отключенном адаптивном методе построения графиков) scaling Залает масштаб графика CONSTRAINED (сжатый) или UNCONSTRAINED (несжатый — по умолчанию). I size Задает размер шрифта в пунктах. style Задаст стиль построения графика (POINT — точечный. LINE — линиями). symbol Задает вил символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест. CIRCLE — окружность. POINT — точка. DIAMOND — ромб) title Задает построение заголовка графика (title=«strtng». где string — строка) titlefont Определяет шрифт для заголовка (так же как и для font). labelfont Определяет шрифт для меток (labels) на осях координат (так же как и для font) thickness Определяет толщину линии графиков (0, I, 2, 3. по умолчанию 0). view=(A, B| Определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = |xmin xmaxl B=|ymtn ymax| (по умолчанию отображается вся кривая) xtickmarks Задает минимальное число отметок по оси X. ytickinarks Задает минимальное число отметок по оси Y.
В основном задание параметрон особых трудностей не вызывает. За исключением задания титульной надписи с выбором шрифтов по умолчанию — в этом случае не всегда поддерживается вывод символов кириллицы (русского языка). Подбо- ром подходящего шрифта эту проблему удается решить. 13.1.3. Задание координатных систем 20-графиков и их пересчет В версии Maple V R1 параметр coords задает 15 типов координатных систем для двумерных графиков. Ио умолчанию задана прямоугольная (Декартовая) система координат (coords=cartesian) При использовании других координатных систем коор- динаты точек для иих (u,v) преобразуются в координаты (х,у) как (u. v) -> (х, у) Ниже приведены наименования систем координат (значении параметра coords) и соответствующие формулы преобразования: bipolar х » <mh(v)/(cosh(v)-cos(u)) у = sin(u)/(cosh(v)-cos(u)) cardiod х« l/2*(u‘2-v'2)/(u‘2+v‘2)‘2 у » u‘v/(u’2+v‘2)'2 cartesian X = u у = V cassinian x = a*2"(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)"(l/2) + exp(u)*cos(v)+l)'(l /2) у = a*2‘(l/2)/2*((cxp(2“u)+2*exp(u)*cos(v)+l)‘(l/2) - exp(u)*cos(v)-l) (l /2)| elliptic x • cosh(u)*cos(v) у = slnh(u)*sin(v) hyperbolic x = ((u'2+v'2)'(i/2)+u)'(l/2) у = ((u‘2+v'2)*(l/2)-u)‘(l/2) inveassinian x = a*2‘(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)‘(l/2) + exp(u)*cos(v)+l)'(l /2)/(exp(2*u)+2*exp(u)*cos(v)+l)'(l /2) у = a*2 (l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)’(l/2) - exp(u)*cos(v)-l )‘(l /2)/(exp(2*u)+2*exp(u)*cos(v)+l)‘(l /2) invell iptic x = a*cosh(u)*cos(v)/(cosh(u)*2-sin(v)‘2) у = a*sfnh(u)*sin(v)/(cosh(u)*2-sin(v)‘2) logarithmic x = a/Pi*ln(u*2+v"2) logcosh x = a/Pi*ln(cosh(u)'2-sin(v)"2) maxwell x = a/Pi‘(u+l+exp(u)*cos(v)) parabolic x = (u'2-v'2)/2 у = 2*a/Pi*arctan(v/u) у = 2*a/Pi*arctan(tanh(u)*tan(v)) у = a/Pi*(v+exp(u)*sin(v)) у = u*v
polar х = u*cos(v) у = u’sintv) rose х = ((u‘?*v'2)‘(l/2)+u)(l /2)/(u‘2+v’2) (l/2) у = (<u‘2*v‘2)'( 1 /2)-u)'( 1 /2)/(u‘2+v*2)*( 1 /2) tangent x = u/(u‘2+v'2) у = v/(u‘2+v‘2) 13.1.4. Управление стилем и цветом линий 20-графиков Maple V R4 позволяет воспроизводить на одном графике множество кривых. При этом возникает необходимость из выделения. Для этого можно использовать построение линии разными стилями и разными цветами и разной толщиной линий. Набор средств выделения кривых позволяет уверенно различать их как на экране цветного дисплея и распечатках цветным струйным принтером, так и при печати монохромными принтерами. Параметр style позволяет задавать следующие стили для линий графиков: SP1SV = POINT или point — график выводится по точкам; LINL или line — график выводится линией. Если задано построение графика точками то параметр symbol позволяет предста- вить -очки в виде различных символов, например, прямоугольника, креста, окружности или ромба. Другой параметр color позволяет установить обширный набор цветов линий графиков: aquamarine black blue navy coral cyan brown gold green gray grey khaki magenta maroon orange pink plum red sienna tan turquoise violet wheat white yellow* Различные цветовые оттенки получаются использованием RGB-комбинаций базо- вых цветов: red — красный, green — зеленый, blue — синий. Приведем перевод ряда других комбинированных цветов: black — черный, white — белый, khaki — цвет «хаки», gold — золотистый, orange — оранжевый, violet — фиолетовый, yellow — желтый и т.д Перевод цветов некоторых оттенков на русский язык не всегда однозначен и потому не приводится. Средства управления стилем графиков дают возможность легко выделять различные кривые на одном рисунке, даже если для выделения не используются цвета 13.2. Примеры построения основных типов 20-графиков 13.2.1. Построение графиков одной функции При построении графика одной функции она записывается в явном виде на место шаблона Г Примеры построения графика одной функции представлены на рис. 13.1. Обоатитс внимание на то. что график функции sin(x)/x строится без
характерного провала в точке х=0. который наблюдается при построении графи- ков этой функции многими программами Он связан с используемым в них правилом — функция задается равной нулю, если ее числитель равен нулю. Данная функция в этой точке дает устранимую неопределенность 0/0->1. что и учитывает графический процессор системы Maple V. Постр««ии< простого графим фуиодии в декар тори* системе коордххп > plot <«ПЦ1)/х. х— 15 15,colored) Построение графим фхккихх в Декартовой системе координат утсздеиио* хииией > plot (slntx Ч»Р I 3*V< t hlc.knc««-2 , color— back ) Рис 13 I Примеры построения графиков одной функции При построении графиков одной функции могут быть введены указатели масштабов и различные опции, например задания цвета кривой, толщины линии, которой строится график функции и другие параметры. К примеру, запись в списке парамет- ров color=0 (не документированная возможность) или запись color=black задают вывод кривых черным цветом, а запись thmkness=2 задает во втором примере рис. 13.1 построение графика линией, удвоенной в сравнении с обычной толщиной. 13.2.2. Управление масштабом графиков Для управления масштабом графиков служат указатели .масштабов. В ряде случаев их можно не применять и система автоматически задает приемлемые масштабы Однако их явное применение позволяет задать масштаб «вручную». Иногда соответствующее задание масштаба случайно или целенаправленно ведет к отсечению части графика — например на рис I3.2 в первом примере отсечена верхняя часть графика. Правильный выбор масштаба повышает представительность графиков функций. Рекомендуется вначале пробовать строить такие графики с автоматическим масштабированием, а уже затем использовать указатели масштабов. 13.2.3. Графики функций в неограниченном масштабе Изредка встречаются графики функций f(x). которые надо построить при измене- нии значения х от нуля до бесконечности или даже от минус бесконечности до
•Ь М.ф1г V Нейма» 4 (ркм? Mi| ЗП* С* /»*• 1пввг гоп* Qpbom ^гкЬ* (1ер J4J2SJ Г Построение графин» фувкаяж. мдоаой фуиксией пслиовагеля л1 > fun-sln(x)/>- Я > plat(ain(z) 2,z— 5. 5, у-0.. О. 5.color-О, at ylo—|>olnt ) ; Построение графика фтккаям при х стремящемся в бесконечность > plot(ln(I-сож<ж)),х-0 infinity, у- 10 1.color—0) <пу,.| V J Л 2J й°"’ ||фи«Ы Jgjoor I пл Рис 13.2. Построение графиков функции с явным указанием масштаба плюс бесконечности Бесконечность в таких случаях задается в указателях масштаба как особая константа infinity В этом случае масштаб автоматически меняется по ходу построения графика. Рис. 13.2 (второй пример) иллюстрирует сказанное. Пересчет значений координаты х, устремляющейся в бесконечность, выполняется с помощью функции для арктангенса. 13.2.4. Графики функций с разрывами Некоторые функции, например tan(x). имеют при определенных значениях х разрывы, причем случается что значения функции в этом случае устремляются в бесконечность Функция tan(x). к примеру, в точках разрывов устремляется к +» и -<*. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple V не всегда в состоянии определить оптимальный масштаб по оси ординат, а график функции выглядит весьма непредставительно — если не сказать безобразно (см рис. 13.3 — первый пример). Среди параметров функции plot есть специальный параметр discont. Если задать его значение равным true, то качество графиков существенно улучшается — см. рис. 13.3 — второй пример. Улучшение достигается разбивкой графика на несколько участков, в которых функция непрерывна, и более тщательным конт- ролем за масштабом 13.2.5. Построение графиков нескольких функций на одном рисунке Важное значение имеет возможность построения на одном рисунке графиков нескольких функций. В простейшем случае (рис. 13.4 первый пример) для построения таких графиков достаточно перечислить нужные функции и устано- вить для них общие масштабы.
М^Ог V Release 4 |ЫпП м*э|ЯПП а У» t* /»« 1п«и ^чгл Qstax ЩпАм tj«v .If | «I Построение графи» разрывной функции без оппни ducont ±1 > plot (In (1 •t an(х) ), и--10 10. color-0) Я Рис 13 3 Построение графиков функций с разрывами Обычно графики разных функций автоматически строятся разными цветами. Но они не всегда удовлетворяют пользователя — например, при распечатке графиков монохромным принтером некоторые кривые могут выглядеть слишком блеклыми или даже нс пропечататься вообще Используя списки параметров color (цвет линий) и style (стиль линий) можно добиться выразительного выделения кривых — это показывает второй пример на рис. 13.4. M«p4r V RHrare 4 |p*at4 *w*| ЯПCJ £3 L* I'M I'xrt feintox a»u Построение графиков грех функций линиями одного типа л| > plot((sln(x).ainCx)/х atntx'3/100)I,ж» 10 10.со1ог-0) Я и линиями трех цпетоп и трех стилен > plot ( (alnfx) , ain(x)/x .*ln(x’ 3/100) 1 ,х-- 10 10 .color-(black , blu«, rod |, style-(lino. Hue, point)) .
На рис. 13.5 показан еще один пример такого рода. Здесь построен график функции sin(x)/x и график ее полиномиальной аппроксимации Она выполняется настолько просто, что соответствующие функции записаны прямо в списке параметров функции plot. Л» М М 4 1ркй*> Я f* ut ¥“* |ПИ« QOMnt tfrrftn- а«1- Пос1^>еяие графика функции й< (сплавим чсриая линия} и ее пилиноми.мьхоП аппрпшимяиип (красные крестики) at < |f (a), convert (series (Г^х) ж 1S),polynoe)I.1--10 .10.у 0 3 1 .color- (back с ed) . st fie- | llixt, point ) ). ЯВ1») Рис 13 5 График функции sin(x)/x и ее полиномиальной аппроксимации В данном случае сама функция построена сплошной линией, а график полинома — крестиками. Хорошо видно, что при малых х аппроксимация дает высокую точность, но затем с ростом х погрешность ее резко возрастает. Рис. 13.6 показывает построение нескольких любопытных функции, полученных с помощью комбинаций элементарных функций. Эти комбинации позволяют получать периодические функции, моделирующие сигналы стандартного вида в технических устройствах: в виде напряжения на выходе лвухполупериодного выпрямителя, симметричных прямоугольных колебаний (меандр), пилообразных и треугольных импульсов, треугольных импульсов со скругленной вершиной. В этом рисунке запись axes=NONE убирает координатные оси. Обратите внима- ние, что смещение графиков отдельных функций вниз с целью устранения их наложения достигнуто просто прибавлением к записи каждой функции некоторой константы. 13.2.6. Построение графиков функций, заданных отдельными точками Показанный на рис 13.5 график полинома, построенный крестиками, не означает, что полином представлен отдельными точками. В данном случае просто выбран стиль линии в виде точек, представленных крестиками. Однако, часто возникает необходимость построения графиков функции, которые представлены просто совокупностью точек. Она может быть создана искусственно, как на рис. 13.7, либо просто задаваться списком координат х и значений функции.
душ "тг-тт—в. *ь, ЯГй I Любопытяые фтккаиа д| > plot ( (в1п<х) ,аЬя(яш(х))? 5,*lyuua(sln(x)} 4 <m-«in(nn(i -J )) 5 S, t 411 ( III (х>) Ь $, arol in(»rfu<n)) 10} X- 10. 10 у 11. 1 ,oolor-b.ick , t h IcklMMfX—?, dixo<Mlt “• ru« дхи»-ИОМ1) /////// JBlly.»| ^ Mute V fl«>»«.« 4 gc lOOI| «jCylteP| ЦЯ}.{ I’M Рис 13.6 Построение графиков нескольких любопытных функций Рис 137. Формирование списка отдельных точек функции и их построение на графике В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(x). В этом нетрудно убедиться, заменив знак «:» после выражения, задающего Р на знак •:» Далее по списку Р построен график точек в виде крестиков, которые отображают отдельные значения функции sin(x). На рис. 13.8 показано построение графиков функций по точкам при явном задании функции списком координат ее отдельных точек. В первом примере эти
точки соединяются отрезками прямых, так что получается кусочно-линейный график. Видно также, что указание типа точек после указания стиля линии игнорируется. — а жаль, было бы неплохо, чтобы наряду с кусочно-линейной линией графика строились и выделенные окружностью точки. • М.ф1е V Rrle.ir 4 ||ЛхЧ fl fte £<* tfaw Fopmc -lei *1 Построение графиков данных, заданных отдельными точкам» И > plot((10,01.11,0.5],(2,0 7| (3,0.4|.(5,0 2]1.х-0 5 style- 3 line,symbol-circle) | 0 7 os \ 00 \ 04 оз 02 О 1 <Г ' ' 1 2 Т \ 3 ' ’ ' ” 4 ' 1-1 • > plot (НО 2,0.1), (1,0 м, (2,0,7) , (3,0 4), (5.0 2 J ) , х О . . 5 , St ylo-point , symbol -с ire Л о) ; 0 7. 03 • О 5- 04 . 03 02- nd > . ----- - - - - - - - - ----- 0 1 2 и Э 4 в гд _______ Л Й £(•)..< gp<oor | ^0^4^ Рис. 13 8 Построение графика функции явно заданной отдельными точками Во втором примере рис. 13.8 показано построение только точек заданной функ- циональной зависимости. Они представлены маленькими кружками. Читателю предлагается совместить самому оба подхода к построению графиков по точкам и создать график в виде отрезков прямых, соединяющих заданные точки функции, представленные кружками или крестиками. 13.2.7 . Построение графиков функций, заданных их именами Способность Maple V к упрощению работы пользователя просто поразительна — жаль только, что многие возможности этого становятся ясными после основатель- ного изучения системы, на что ухолят увы не дни. а месяцы, а то и годы Применительно к графике одной их таких возможностей является построение графиков функций, заданных только их функциональными именами — даже без указания параметров н круглых скобках. Такую возможность наглядно демонст- рирует рис. 13.9. Этот пример показывает, что возможно построение графиков функций даже без применения в команде plot указателей масштабов. При этом масштаб по горизон- тальной оси устанавливается равным по умолчанию -10 .10. а по вертикальной оси устанавливается автоматически в соответствии с экстремальными значения- ми функций в указанном диапазоне изменения независимой переменной — условно х.
Млр4« V Нйеше 4 |эЫв «т| Я Ей £<* yew {пми Renat ДсЧьт y^ndftw фЬ - ! Л Xl Построение графиков четырех фувцвя.эмшшхлнпв их именами > plot < (arct au, «in,сои, In J ,oolor-<lj Я Рис 13 9 Построение графиков четырех функций, заданных только их именами 13.2.8 . Построение графиков функции с ординатами, заданными вектором Часто возникает необходимость построения графика точек, ординаты которых являются элементами некоторого вектора. Обычно при этом предполагается равномерное расположение точек по горизонтальной оси. Пример построения такого графика дан на рис 13.10 Из этого примера нетрудно заметить, что данная задача решается составлением списка парных значений координат исходных точек — к значениям ординат точек, взятых из вектора добавляются значения абсцисс. Они задаются чисто условно, поскольку никакой информации об абсциссах точек в исходном векторе нет. Так что фактически строится график зависимости ординат точек от их порядкового номера п. 13.2.9 . Построение графиков функций, заданных процедурами Некоторые виды функций, например кусочные, удобно задавать процедурами. Построение графиков функций, заданных процедурами, не вызывает никаких трудностей и иллюстрируется рис. 13.11. Здесь, пожалуй, полезно обратить внимание на то, что когда в функции plot указывается имя процедуры без списка ее параметров, то указатель масштаба должен просто указывать пределы графических построений по оси х
L -I in YinlI Sn—1 10| • plotfL n-0 lO.yO. 5 stylo-point synlol -circle) /«=).35.4.\ 4.3.2, 15. 2. I] L П1.1|.[г35|.[3.45].|4.4].(5.3Ив.:Ц’.1].[8 5Ц9. 2JJ)0. 1]| о } « e » 10 П <ny.| >2 J «21 йо»° ||фмм I 15Щ1 IMS Рис 13 10 Построение графика точек с ординатами, заданными элементами вектора «к Maple V ПМеа» « |ЫЫ11 >мп| НГ1ЕЗ я Е*» 1<к /«. «ж f-*-" Q₽*« Н* -toi Построение графиков кусочных фуикииИ заданных ггропелурами "J > w -prec(z) if sin(r) 0 ♦h«n sin(x) ole* -sln(x) fi end —1 w « pror 11 ifO < яп(.т) riian wi'x) elae -я» к П end > plot<m, -15 J 5.color-back) ’> r pioc(x) if a ? then G a else a ? fi end r prer'xl if 2 < x then i - r elae •"2 fi end > plot(z t. 7. color-back)
13.2.10 . Построение графиков функций, заданных функциональными операторами Еще одна «экзотическая» возможность функции plot — построение графиков функций, заданных функциональными операторами. Она иллюстрируется рис. 13.12. Л Мч» * Relwte 4 1Н<И1?<М>|| ЯГЛП ЕЗ t* 1<» |г»«* Catom «101 Д| П'Хтрххиие гр»фк» 'Ь функций.сданных функционал».иыми операторами и -J встроенными фуихонхми с выводом титульной наяписа J > р tat t ? , х х 11, 1 1 Ох» tor—О 1 14 1е— Нч •изо таи Просто* II) J|0w«| VJ8J ||»ИчХ gjdXn ”’«> Рис 13 12 Построение графиков функции, заданной функциональными операторами. Имена функций (без указания списка параметров в круглых скобка:, тоже по существу являются функциональными операторами Так что и они могут исполь- зоваться при построении графиков упрошенными способами. 13.2.11 . Построение графиков функций, заданных параметрически В ряде случаев для задания некоторых зависимостей используются заданные параметрически уравнения, например x=fl(t) и y=f2(t) при изменении перемен- ной t в некоторых пределах. Точки (х.у) наносятся на график в Декартовой системе координат и соединяются отрезками прямых Для этого используется функция plot в следующей форме. plot((f!(t),(2(0,t=tmin. tmax|,h,v,p) Если функции fl(t) и f2(t) содержат периодические функции (например, тригоно- метрические). то для получения замкнутых фигур диапазон изменения перемен- ной t задается обычно O..2*Pi или -Pi Pi. К примеру, если задать к качестве функции 11 (t) и f2(t) функции sin(t) и cos(t). то будет получен график окружности Рис. 13.13 показывает другие, чуть менее тривиальные примеры построения графиков такого рода
Задание указателей масштаба h и V, а также параметров р не обязательно. Но, как и ранее, позволяет получить вид графика, удовлетворяющий всем требования пользователя Построение грификов фу нкц at. заданных в ааримпричежо* форме > plot ( (sln<3*t) ,co»(5*t) ,t-0. . 2«₽1) .color-0) .- > plot ( |cos(x'2) . xln(x''3), x— 2. 2|,-1. .1, 1 1 .color-blue) V58 4 ftOw. Цфм<ф1 Д&А01 I Рис 13 13. Построение функции латанных параметрически 13.2.12 . Построение графиков функций в полярной системе координат Графики в полярной системе координат представляют собой линии, которые описывает конец радиус вектора r(t) при изменении угла t в определенных пределах — от tmin до tmax Построение таких графиков производится также функцией plot, которая записывается в следующем виде: plot(|r(t).tlieta(t),t=tniin..tmax],h,v,p,coords=polar) Здесь существенным моментом является задание полярной системы координат опцией coords= polar. Рис. 13 14 дает примеры построения графиков функций в полярной системе координат. Графики параметрических функций и функций в полярной системе координат отличаются огромным разнообразием Снежинки и узоры мороза на стеклах, неко- торые виды кристаллов и многие иные физические объекты подчиняются математи- ческим закономерностям, положенным в основу построения таких графиков 13.3. Построение ЗО-графиков с помощью функции plot3d 13.3.1. Особенности применения функции plot3d Для построения графиков трехмерных поверхностей Maple имеет встроенную в ядро функцию plot3d Она может использоваться в следующих форматах
|-S Motr » R«l»».<. 4 (ptrrfKawH япп at*- t* yw 1"мк дт» tw -isixi Построение графиков функций в полярной системе координат Д| > plot ( [l-ein<t ) t,t-O. ooloT-Oooordn-polar) ' Рис 13 14 Построение графикой функций в полярной системе координат plot3d(exprl. x=a..b, y=c..d,p) plot3d(f, a b, c.d.p) plot3d(|exprf,exprg,exprh|, s=a..b, t=c..d,p) plot3d([f,g,h], a .b. c..d,p) В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметриче- ской формой задания поверхности В приведенных формах: f, g и h — функции, expri — выражение, отражающее зависимость от х и у, exprf, exprg и exprh — выражения, задающие поверхность параметрически, s, t, а и b — числовые константы действительного типа, end — числовые константы или выражения действительного типа, х. у. s и t — имена независимых переменных и р — параметры-опции Параметры для функции plot3d задаются аналогично их зада- нию для функции plot 13.3.2. Параметры функции plot3d С помощью параметров р можно в широких пределах управлять видом трехмер- ных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изменяя вид координатных осей и т.д Следующие параметры функции plot3d задаются аналогично их заданию для функции plot: axesfont font color coords font labelfont linestyle numpoints scaling style symbol thickness title titlefont Однако функция plot3d имеет ряд дополнительных специфических параметров
ambienllight=|r.g.b| Задает интенсивность красного (red), зеленого (green) и синего (blue) цветов в относительных единицах (от 0 до 1) axes*f Задает вил координатных осей (BOXED. NORMA).. FRAME и NONE, по умолчанию NONE) grid4m.nl Задает число линий каркаса поверхности gr>dstyle«x Задает стиль линий каркаса х ( rectangular' или triangular’). labels=|x.y,i| Залает надписи по осям (х. у и г. — строки, по умолчанию пустые) liglit=|phi.theta,r.g. bl Задает углы, под которыми расположен источник освещения поверхно сти и интенсивности составляющих (г. g и Ь) цвета ItghtmodeHx Задает режим яркости (соответственно, попе’, 'light 1’, ’Iigfit2’. 'Iighl3‘ и ’hght4) oricntation=(theta. phi) Задает углы ориентации поверхности (по умолчанию 45 градусов) projection=r Задает перспективу прн обзоре поверхности (г может быть числом 0 или 1. задающим включение или выключение перспективы, а также одной* из строк 'FISHEYE'. 'NORMAL, или 'ORTHOGONAL («то соответст-| вует численному значению г 0. 0 5. или 1. соответственно, причем по] умолчанию задано projection = ORTHOGONAL). shading=s Залает направления, по которым меняется цвет функциональной окра-, скн (значения s могут быть XYZ. XY. Z. ZGRF.YSCALE. ZHUE. NONE) tickmarks=lLn.m] Задает характер маркировки по осям х. у и г (числа !. п и иг имеют ’ значения не менее 1) view=zmin..zmax ИЛИ |xmm .xmax.ynun.. ymax.zmm zmax| Задает минимальные и максимальные координаты поверхности для ее видимых участков 13.3.3. Выбор и пересчет координат ЗО-графиков Дтя трехмерных графиков возможно задание 31-го типа координатных систем с помощью параметра соог35=Тип_координатной_системы. Поскольку на экране дисплея поверхность отображается только в прямоугольной системе координат и характеризуется координатами х. у и х, то для представления поверхности, заданной в иной системе координат с координатами u. v и w используются известные (46.471 формулы для преобразования (u. v. w) —> (х. у. х). Ниже представлены типы координатных систем для трехмерной графики и соответству- ющие формулы преобразования: bipolarcylindrical х = a*sinh(v)/(cosh(v)-cos(n)) bispherical х = sin(u)*cos(w)/d x = sinh(v)/d cardiodal x = u*v*cos(w)/(iT2+v‘2)‘2 x = (u‘2-v‘2)/2/(u‘2+v'2)‘2 cardiodcylindrical x = (u'2-v 2)/2/(u'2+v’2>‘2 у - a*sin(u)/(cosh(v)-cos(u)) у = sin(u)*sin(w)/d (где d = cosh(v) - cos(u) ) у = u*v*sin(w)/(u‘2+v‘2)’2 у = tt*v/(u*2+v‘2)‘2
casscylindrical х = а*2'( 1 /2)/2*((exp(2*u)+2*exp(u)*cos(v)+l )(1 /2)+exp(ij)*cos(v)+l)'(l/2) у = а‘2‘( I /2)/2*((exp(2*u)+2*exp(u)*cos(v)+l И 1 /2)-exp(u)*cos(v)-l)‘(l /2) i = w confocalcllip х = ((a*2-u)*(a'2-v)*(a'2-w)/(a‘2-b'2)/(a'2-c‘2))‘(l/2) у = ((b'2-uHb’2-v)*(b'2-w)/(b'2-a'2)/(b-2-c'2))-(l/2) i = ((c‘2-u)*(c‘2-v)*(c'2-w)/(c*2-a‘2)/(c‘2-b‘2))'(l/2) confocalparab x = ((a'2-u)*(a'2-v)*(a’2-w)/(b‘2-a’2))'(l/2) у = ((b"2-u)*(b’2-v)*(b‘2-w)/(b"2-a'2) ) (1 /2) i - (a‘2+b'2-u-v-w)/2 conical x = u'v-w/(a‘b) у = u/b‘((v‘2 - b‘2)*(b‘2-w-2)/(a '2-b-2)r(l/2) i = u/a*((a‘2 - v'2)*(a‘2 - w-2)/(a‘2-b‘2))(l/2) cylindrical x = u*cos(y) у = u*sin(y) X = w (cylindrical x = a*cosh(u)*cos(v) у = a*sinh(u)*sin(v) z = w ellipsoidal x = u*v*w/a/b у = ((u‘2-b'2)*(v‘2-b‘2),(b'2-w‘2)/(a‘2-b'2))‘( I/2)/b i = ((u’2-a‘2)*(a‘2-v'2)*(a‘2-w'2)/(a‘2-b‘2))‘(l/2)/a hypercylindrical x = ((u‘2+v*2)‘(l/2)+u)(l/2) у = ((u'2+v‘2)U/2)-u)‘(l/2) z = w invcasscylindrical x = a*2’(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)’(l/2) + exp(u)*cos(v)+ l)‘(l/2)/(exp(2fu)+2*exp(u),‘cos(v)+l)'( 1/2) у = a*2’(l/2)/2*((expl2*u)+2*exp(u)’cos(v)+l) (l/2) - exp(u)*cos(v)~ l)‘(l/ 2) / (exp(2*u)+2*exp(u)*cos(v)+l)‘(I / 2) z = w invellcylindrical x = a*cosh(u)*cos(v)/(cosh(u)‘2~sin(v)'2) у = a‘sinh(u)*sin(v)/(cosh(u) 2-sin(v)‘2) z = w invoblspheroidal x 1 a’cosh(u)*sin(v)*cos(w)/(cosh(u)‘2-cos(v)‘2) у = a*cosh(u)*sm(v)*sin(w)/(cosh(u)‘2-cos(v) 2) z = a*sinh(u)*cos(v)/(cosh(u)'2"cos(v)'2) invprosphcroidal x = a*sinh(u)*sin(v)*cos(w)/(cosh(u)'2-sin(v)‘2) у = a*sinh(u)*sin(v)“sin(w)/(cosh(u)‘2-sin(v)*2) z = a*cosh(u)*cos(v)/(cosh(u)'2-sin(v)‘2)
logcoshcyl indrical х = a/Pi*ln(cosh(u)"2-sin(v)'2) у = 2*a/Pi*arctan(tanh(u)*tan(v)) z = w maxwellcyl indrical x = a/Pi*(u+l+exp(u)*cos(v)) у = a/Pi*(v+cxp(u)*sin(v)) z = w oblatespheroidal x = a*cosh(u)"sin(v)*cos(w) z = a*sinh(u)*cos(v) paraboloidal x = u‘v*cos(w) у = a*cosh(u)*sin(v)*sin(w) у = u*v*sin(w) z = (u'2 - v'2)/2 paraboloidal? x = 2*((u-a)*(a~v)*(a-w)/(a-b))'(l/2) у = 2’((u-b)*(b-v)*(b-w)/(a-b))‘(l/2) z = u+v+w-a-b paracyl indrical x = (u'2 - v‘2)/2 prolatespheroidal x = a*sinh(u)*sin(v)*cos(w) z=a*cosh(u)‘‘cos(v) rectangular x = u у = V у = u*v z = w y=a*sinh(u)*sin(v)*sin(w) z = w rosecylindrical x = ((u*2+v‘2) (l/2)+u)‘(l/2)/(u'2+v 2) (1 /2) у = ((u*2+v*2)‘(l/2)—u)'(l/2)/(u*2+v'2)*(l/2) z = w sixsphere x = u/(u'2+v'2+w"2) spherical x = u*cos(v)esin(w) tangen (cylindrical x = u/(li*2+v*2) tangentsphere x = u*cos(w)/(u'2+v*2) toroidal x = a*sinh(v)*cos(w)/d z = a*sin(u)/d у = v/(u‘2+v'2+w'2) у = u*sin(v)*sin(w) у * \/(u‘2+v'2) у = u*sin(w)/(u‘2+v‘2) у = a*sinh(v)*sin(w)/d ,e d = cosh(v) - cos(u) ) z = w/(u’2+v‘2+w‘2) z = u*cos(w) z = w z = v/(u‘2+v'2) Эти формулы полезно знать, поскольку н литературе встречаются несколько отличные формулы пересчета Вид графиков трехмерных поверхностей очень сильно различается в разных координатных системах. По умолчанию трехмерные графики строятся в прямо- угольной системе координат — rectangular.
13.4. Примеры построения трехмерных поверхностей с помощью функции plot3d 13.4.1. Простейшее построение ЗО-поверхности с разным стилем На рис. 13 15 показано два примера простейших построений графиков трехмерной поверхности По умолчанию строится каркасная поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение в первом примере задано линиями черного цвета с помощью параметра color-black. I «Ь hUpfe V Krlrete 4 япг 3 I""' f<"-' ywto- h* □oerpoexxe графике* трехмерных понерхиоетосгей _i| > plot 3d («In(х*у). т—- 3 3. у— 3 3.colox—black.) ; Ж > plot 3d(«»n<i 2-y 2) . ж—Я ?f—? 7 xt у I..-pal uh) Рис 13 15 Примеры простейшего построения трехмерных поверхностей Во втором примере та же поверхность построена с параметром stylc=patch, что приводит к появлению ее функциональной окраски (уны. на рисунках в книге воспринимаемой как окраска оттенками серого цвета). Функциональная окраска делает рисунки более информативными. Помимо значения path, можно задавать ряд других стилей для построения трехмер- ных поверхностей point — точками, contour — контурными линиями, line — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями ранного уровня. Цвет трехмерного графика может задаваться (как и у двумерного) опцией со1ог=с. где с — цвет (оттенки цвета указывались выше) Возможно еще два алгоритма задания цвета: HUE — алгоритм с заданием цвета в виде color=f(x,y), RGB — алгоритм с заданием цвета в виде color=|exprr,exprg.exprb], где выраже- ния ехргг, exprg и exprh — выражения, .задающие относительную значимость (от О до 1) основных цветов (красного — red. зеленого — green и синего — blue)
Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реали- стический вид. 13.4.2. Построение фигур в различных системах координат Как отмечалось, вил графика трехмерной поверхности существенно зависит от выбора координатной системы. Рис. 13.16 показывает пример построения пели ценного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cy!indncal. Я £Ь [Ы Few* 0(Ляг» «IBI и| Пострсемиг графта трехмерно! поаерхяоегосга в цклиалржесхоя :вст*ме к-.<'рдинлт •) > pld3d(|i ?.« -Pl. Pi,h-S Ь .coorde-ny I indr tn j I. «I у Ln-ца» с —J II, tit 1я- MOKI. 1 ИРАК CONI’ ) NONI INF AR CONF Рис 13 16 Нелинейная цилиндрическая поверхность. При построении этой фигуры также использована цветная функциональная окраска Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи. Приведем еще один пример построения трехмерной поверхности — на этот раз в сферической системе координат (рис. 13.17). Здесь функция задана вообще элементарно просто — в виде числа I Но поскольку выбрана сферическая система координат, то строится поверхность шара единичного радиуса При этом построении также задана функциональная окраска поверхности и вывод титульной надписи. О том, насколько необычным может быть график тон или иной функции в различных системах координат свидетельствует рис. 13.18 Па нем показан график параметрически заданной функции от одной координаты t — sin(t’3), построенный в сферической системе координат Кстати, рис. 13 18 иллюстрирует возможность одновременного наблюдения более чем одного окна — в данном случае двух окон. В одном окне задано построение графика, а в другом — построен сам график. При построении графика в отдельном
Построение гонфмс грехмерниВ поеерхн'хтоетв сфп«че'«.'й си.теме г.о рдкпт > plot 3.1(1, t- Pi Pi.p 0 t !«»• SPHERE ) Pi cdorder-spber teal st ylo-pateh, t1 SPHERE Рис 13 17 Построение шарообразной поверхности в сферической системе координат. jdcdow f* Построение грхфеха трехмерной понерххостости в сферической системе коорвииат > plot3d(«>n(t'3) t «tyle-patc.il) Pi соогйи-Kpharica1 Рис 13 18 График еще одной поверхности в сферической системе координат окне появляется панель форматирования графика С помощью ее довольно наглядных кнопок-пиктограмм можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).
13.4.3. Построение графиков параметрически заданных поверхностей На рис. 13 19 показано построение поверхности при полном ее параметрическом задании В этом случае поверхность задается тремя формулами, содержащимися в списке. •Ь Mapte V Qetef 4 IgJdpe» и| РЮ С t* fat"'* яИММгаМВВНННЯНиНН Пиорогииг 3D |рйфнка MS функции. тадакмон и параметрический rl форме: —* > plot 3d(|cos(t)*(!• 2«аIn(u)).a in(t)*<1-.2*aln<u)), 2*sIn(t ) *<xi« (u) 1, t -0 Pepl,u—-Pl Pl.tltle- 30 фигура )' 3D ф>иура Рис 3 19 График 3D поверхности при полном параметрическом ее задании В данном случае функциональная окраска задана из меню, поэтому в состав функции соответствующий параметр не введен. 13.4.4. 30-график как графический объект Принадлежность функций plot и plot3D к функциям (в ряде книг их именуют операторами, командами или процедурами) наглядно выявляется при создании графических объектов. Графический объект — это в сущности обычная переменная, которой присваива- ется значение графической функции После этого такая переменная, будучи вызванной, вызывает построение соответствующего графика Пример этого дан на рис. 13.20. В данном случае строится кольцо Мебиуса, свойства которого (например, плав- ный переход с одной стороны ленты на другую) уже много веков будоражат воображение людей 13.4.5. Задание 30-графики в виде процедуры Язык программирования Maple V допускает применение в процедурах любых внутренних функций, в том числе графических. Пример такого применения дает рис. 13 2I.
* МацДе ¥ Rwtaw 4 (United И>| ИПГЗ Я Fte £• Те* Ым r«!M' С». 4'rrtw Н«Р Построгнм* МЙЯММ Мм>ну<-а > воеЫив - plot 3d ( I(5»соа(l/2*t)*и)*со»(t) , 3 (5»co«(l/?*t )*u)*sUi(t) , sln(l/2*t )*ul , > 4 0. .2*P1. 'u'-1 1, grid- 160,10), Bt-.il inq-COHSTHArHt D.cii Hint at ton-] • 106,70]). > noabtus Рис. 13 20. Пример задания и вывода трехмерного графического объекта •fr М<«|»4«1 V Rnlratr 4 |>lnlirird |H|) Я О [d* 1пш' ful"* Qctnm <«kw H«P ,101 Х| г Процедура пострпеина к-ольца Мебиуса д! > *оЬ :• proc(width) Я > plot 3d (t (5»co»(l/2*t )*u)*co« (t ) , (b‘CoB(l/?*t)*u)**lo(t ),slii(l/2*t )*ii),t-0 2*Pi, > u--width/'. wldtb/S. grid-(60.10] > sr.airog-cOHHTKAlNtD, or lent at Ion- | 106 701 ) > «nd > вюЬ<5) Рис. 13 21 Пример создания и применения процедуры 3D-графики Этот пример показывает еще один способ задания и построения кольца Мебиуса. Практически любые графические построения можно оформлять в виде процедуры и использовать такие процедуры в своих документах. Подробно создание графи- ческих процедур описано в книге (38|, поставляемой в составе коммерческой реализации системы
13.4.6. Построение ряда трехмерных фигур Функция plot3d позволяет строить одновременно несколько фигур, пересекаю- щихся в пространстве При этом она обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части соответствующих фигур Это создает графики фигур, выглядящие вполне естественно Для построения таких графиков достаточно вместо одной функции указать ряд функций. Пример такого построения для двух функций показан на рис. I3.22. М«(4е V НгЧв-ме 4 |1|л1'Нв<1|7|| ипв 2 Гй £а* Y*~ l>w Гог^ Hw - Iff J «I Построена* график* пересехж.щяпя поверхностей plot3d((2*«in(х«у)-1, х‘2 ♦ 2*у 2 5),х- Pi. Pl,у- Pi Pl) • 9 Рис 13.22 Пример построения двух ЗО-фигур. пересекающихся в пространстве Фигура на рис. 13.22 показана после ее коррекции и функциональной окраски в «ручном» режиме — с применением инструментальной панели окна графики 13.5. Графические структуры двумерной и трехмерной графики 13.5.1. Понятие о графических структурах Функции PLOT и PLOT3D. с именами, набранными большими буквами, позволя- ют создавать графические структуры, содержащие ряд графических объектов si. s2. s3 и т.д Каждый объект может представлять собой точку или фигуру, полигон, надпись и т.д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PLOT3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после считыва- ния файлов) представлять в виде графиков. Особые свойства этих функций подчеркиваются записью их прописными буквами.
13.5.2. Графические структуры двумерной графики Графическая структура двумерной графики задается в виде: PLOTfsl. s2. s3..о); где si. s2, s3 .... — графические объекты (или элементарные структуры-примити- вы). о — общие для структуры опции). Основными объектами являются: POINTS((xl.yl |.(х2,у2|....|хп,уп|) — построение точек, заданных их координатами; CL'RVES(|[xl l,y 111.. (xln.yln||.||x21,y21). .|x2n,y2n]|,...||xml.ym)],... (xmn.ymnll) — построение кривых по точкам; POLYGONS(||x! I.ylI|,...|х1п,у1п||.Пх21,у2!!,...{x2n.y2n||....[|xml,ym 11„„ |xinn.ymn||) — построение замкнутой области — полигона (последняя точка должна совпадать с первой); ТЕХТ(|х.у|.'string',horizontal.vertical) — вывод текстовой надписи 'string', позици- онированной координатами |х,у| с горизонтальной или вертикальной ориента- цией. Опция horizontal может иметь значения ALIGNLEFT или AL1GNR1GHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично опция vertical может иметь значения ALIGNABOVE или ALIGNBELOW, указыва- ющие. в каком направлении (вверх или вниз) идет надпись. При задании графических объектов (структур) si, s2. s3 и т.д. можно использо- вать описанные выше опции и параметры, например, для задания стиля STYLE- лостросния (POINT. LINE, PATCH, PATCHNOGRID), толщины линий THICKNESS (кроме координатных осей), символа SYMBOL, которым строятся точки кривых (BOX. CROSS. CIRCLE, POINT. DIAMOND и DEFAULT), стиля линии LINESTYLE, цвета COLOUR (например. COLOUR!HUE.0) для закраски непрерывной области), типа шрифта FONT, вывода титульной надписи TITLE(string), имени объекта NAME(string), стиля координатных осей AXESSTY- LE (BOX, FRAME, NORMAL. NONE, или DEFAULT) и т.д. Следует отметить, что опции в графических структурах задаются несколько иначе — с помощью круглых скобок Например, для задания фонта TIMES ROMAN с размером символов 16 надо записать FONT(TIMES,ROMAN, 16), а для задания стиля координатных осей в виде ящика (прямоугольника) — AXESSTYLE(BOX) и т.д. На рис 13 23 показан пример графических построений при использовании основных структур двумерной графики. Как видно из этого примера, графическая двумерная структура позволяет задать практически любые двумерные графики и текстовые надписи в пределах одного рисунка. 13.5.3. Графические структуры трехмерной графики Графические структуры трехмерной графики строятся на основе функции plot3d: PL0T3D(sl, s2.s3....о) В качестве элементарных графических структур можно использовать уже описан- ные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с
добавлением в списки координат третьей координаты. Пример такого построения дан на рис. 13.24 > PLOT(POINT 8(10.О 5) , SYMbUL(CIBCLE) ) . TEXT!) 1,0.41,’ Структура 2D ’, ALIGNBE1 ON , ALIGHRIGHT FOHT(HELVETICA, OHLEQUF., 10)), CURVES! I [-2,0.5) (0,1 J , (3,0.25) ) ,THICKNESS(3)) , TEXT! [3.1415,0.6], ’p’ , FUNIC SYMBOL, 12)) ГЕХТ<(-3.2,0.6),’P’.FONT(SYMBOL.12)) POLYGONS!)! 2,0),I 2, .5),(2, .5|.|2,0|I.COLOR(HUE.3)), TEXT! (0,-0.25), ’ Красным COLOUR(RGB, 1,0,0) ) , AXESSTYLE(FRAME),VIEW(-4,.4,-1..1) ); Рис 13.23 Пример использовании структур 2Р-графики ((О,О,0).(0,1,0).(0,1.1),|0,0,11). (| 1,0,О), (1,1,0), 11,1,1), (1,0,111, ((0.0.0), (1.0,0),(1,0,1), (0,0, )]]. (10,1,01,(1,1,0],{1,1,11.(О 1,111. ((О 0.1), (1,0 11,(1.1.11. (О 1,11 П ' LIGHT(0,0,0.0,0.7,0 0), LIGHT (100, 45.0.7 , О. О, О О) , LIGHT ( 100, - 45 , О 0,0 0,0 7), M4BTFHTI.TGHT (О . 4 , О 4,0 4). TTTLF(CHBF).STYLE (PATCH),COLOUR(ХНИЕ)); CUBE ЪЭаЗ Й0»о|»«. |у ]|$и. а .'ч,* Рис 13 24 Пример создания ЗП-структуры
Кроме того, могут использоваться следующие специальные трехмерные структу- ры Одна из них — структура: GRID(a..b,c..d.listlist) — задание поверхности над участком координатной плоско- сти |a.b|([c,d) по данным заданным списочной переменной listlist:= ||z 11 ,...z 1 n],[z21 ,...z2n|,...|zm 1 ...zmn)| с размерностью nxm Заметим, что эта переменная задает координату г для равноотстоящих точек поверхности. На рис. 13.25 показан пример создания трехмерной графической структуры на базе GRID. Изображение представляет собой линии, соединяющие заданные точки. •*» Мир1е V Небеле 4 hr id ван] L* |m* ‘™* JxJ Пример зад л и «я структуры трехмерний графики (1) _±J GO.-((3.1.01,(2.1,31. (2.3 2).(3,0.31,(1.3,11, (1,2,31). • > PLOT 3D ( GniDfl..3.1 3 , GO),AXESLADELS (X , Y.Z). ORTF.MT AT ION < 140,30) . AXES(BOXED) , COLOR (BGFI 0,0.0)) ап1о|]^м^1.уgooDOT| ttyxbW | 3J04 V» Рис 13 25 Пример задания графической структуры типа GRID Еше один тип трехмерной графической структуры это: MESH(listlist) — задание трехмерной поверхности поданным списочной перемен- ной listlist, содержащей полные координаты всех точек поверхности (задание I последней возможно при неравномерной сетке). (Обычная форма задания этой структуры следующая: M£SH([||xi l.yl l.zl 11.. .[xln,yln.zln||. I|x21,y21.z21|,...|x2n,y2n,z2n]]. ... I Uxml.yml,zml|. .|xmn.yinn.zmn|||). I Пример задания такой структуры представлен на рис. 13.26. I Описанные структуры могут использоваться и в программных модулях. Много I примеров их описано в книге |38). К волнительные данные о возможностях графических структур можно найти в )авочной базе данных системы Maple V
Мф1» V Helcaie 4 -1meth ям*»| япп а га ЕЛ у». |м*и ’ч*- 'Эр*". *"*» t*w> -lelxl Примет >.щ«ипя стру»гуры гр гхмерноЯ графики (2j| л! GU;-| I |,1 1.0) I? 1.3) I? 3,21) tl3,0,3).11.3 11.(1.?,3)11 " > ₽LOT3D( MESH(GO) . AXbSLABf l.S < X Y X) ORIENTATION(140,30) AXKS(BUXED) O0LOR(RGD , 0 0.0) ) Рис. 13.26. Пример задания графической структуры типа MESH. 13.6. Графика пакета plots 13.6.1. Общая характеристика пакета plots Пакет plots содержит почти полсотни графических функций, существенно расши- ряющих возможности графики системы Maple V. В реализации R4 этот пакет содержит следующие функции: animate Создает мультипликацию 2D графиков функций animate3d Создает мультипликацию 3D графиков функций changecoords Смена системы координат. complexplot Построение 2О-графика на комплексной плоскости. complexplot 3d Построение ЗИ-графика в комплексном пространстве conformal Конформный график комплексной функции contourplot Строит координатную систему контурного графика. contourplot3d Строит контурный 3D-график. coordplot Строит координатную систему 20-графиков cootdplol3d Строит координатную систему ЗЭ-графикон cylinderplot Строит график 3D поверхности в цилиндрических координатах deneityplot Строит двумерный график плотности display Строит график списка графических объектов. dis play 3d Строит график списка трехмерных графических объектов fieldplot Строит график 2D векторного поля
field plot 3d Строит график 3D векторного поля gradplot Строит график 2D векторного поля градиента. gradplut3d Строит график 3D векторного паля градиента. implicitplot Строит 20-график неявной функции implicit plot3d Строит ЗИ-графнк неявной функции J inequal Строит график решения системы неравенств. listcontplot Строит 2D контурный график для сетки значений Iistcontplot3d Строит ЗИ-контурный график для сетки значений listdensit yplot Строит 2Р-график плотности для сетки значений. I letplot Строит 2D-i рафик мн лис г а значении. Iistplot3d Строит 3D график хая листа значений log.ogplot Слронт логарифмический 2Р-график функции logplot Строит полулогарифмический 2D график функции. matnxplot Строит 3D график со значениями Z. определенными матрицей ndeplot Строит 2D или 3D график решения дифференциальных уравнений. pareto Строит pareto-диаграммы (гистограмма + график линиями). | point plot Строит 2D точечный график | point plot 3d Строит 3D точечный график polarplot Строит график 2D кривой в полярной системе координат. ! polygonplot Строит график одного или большего количества многоугольников. polygonplot3d Строит график одного или большего количества многоугольников. ' polyhedraplot Строит трехмерный график многогранника rep lot rootlocus Перестраивает заново график. . Строит график корней уравнений с комплексными неизвестными semilogplot Строит график функции с логарифмическим масштабом по горнаонтали | setoptions Устанавливает опции по умолчанию для 2D графиков setoptions3d Устанавливает опции по умолчанию для 3D графиков J spacerurve Строит 3D пространственные кривые sparsematrixplot Строит 21) график отличных от нуля значений матрицы. sphercplot График 3D- поверхности в сферических координатах. surfdata Строит 3D график поверхности по численным данным textplot Выводит на ладанное место 21>графнка текст. textplot3d Выводит на заданное место ЗО-графика текст. tulieplot Строит ЗР-графикн типа трубы. 1 Среди этих функций надо отметить прежде всего средства построения графиков ряда новых типов (например, в виде линий равного уровня, векторных полей и тд.), а также средства объединения различных графиков в один. Особый интерес представляют две первые функции, обеспечивающие оживление (анимацию) как двумерных графиков (animate), так и трехмерных (animate3d). Этот пакет вполне
заслуживает описания в отдельной книге. Но. учитывая ограниченный объем данной книги, мы рассмотрим лишь несколько характерных примеров его приме- нения. Заметим, что для использования приведенных функций нужен вызов пакета, например, командой with(plots). 13.6.2. Построение графиков функций в двумерной полярной системе координат В пакете plots есть функция для построения графиков в полярной системе координат. Она имеет вид polarplot(L.o). где L — объекты для задания функции, график которой строится но — необязательные опции. Па рис. 13.27 представлен пример построения графика с ломошью функции polarplot. КГ Г '№.1 ДИ1ИИ!1!.1' HI !'.1П— 3 Г* Е* ¥«- Рфпа< Qploe fefrdw Уте Графпа полярной системе ко орд» к ат (иэ пакетаplott) > with (plots); к t->100/(100-. (| -Р1/2) В); I к t - s(t)*(2«ln(7»t) сое <30*1)/?): I polarplot < Гн, t -t Vl/2 . . 3/2*Pi I nuapolnt »-2000, area-HOHL , thlckness-2.color-black); Zl 15Л/1 Й* I ЗУ Mi | C»wi ||»u " До« | Дос | • toie Рис. 13 27. График, построенный с помощью функции polarplot. В данном случае для большей выразительности опущено построение координат- ных осей, а график выведен линией удвоенной толщины. График очень напоми- нает лист клена, весьма почитаемого в Канаде и ставшего эмблемой системы Maple V. 13.6.3. Построение графиков линиями равного уровня Графики, построенные с помощью линий равного уровня (их также называют контурными графиками) часто используются в картографии. Эти графики получа- ются, если мысленно провести через трехмерную поверхность ряд равноотстоя- щих плоскостей, параллельных плоскости, образованной осями X и Y графика Линии равных высот образуются в результате пересечения этих плоскостей с трехмерной поверхностью. Для построения таких графиков используется функция contourplot, которая может использоваться в нескольких форматах: contourplot(exprl,x=a..b,y=c..d)
contourplot(f,a..b,c..d) contourplotC exprf.exprg.exprh ],s=a. b,t=c..d) contourplotd l.g.h |,a..b,c..d) contourplot3d(exprl,x=a ,b,y=c d) contourplot3d(f.a..b.c. d) contourplot3d(| exprf.exprg.exprh |.s=a. b,t=c..d) contourplot3d(| f.g.h |,a..b.c. d) Здесь — f. g и h — функции, ехргI — выражение, описывающее зависимость высоты поверхности от координат хну, exprf. exprg и exprh — выражения, зависящие от s и t. описывающие поверхность в параметрической форме, а и b — константы вещественного типа, с и d — константы иди выражения вещественного типа, х, у, s и t — имена независимых переменных. На рис. 13.28 показано построение графика линиями равного уровня для одной функции. Опция filled=true обеспечивает автоматическую функциональную окра- ску замкнутых фигур, образованных линиями равного уровня. Порою это придаст графику большую выразительность, чем при построении только линий равного уровня. Построение графика в виде линий равного уровня > with(plots). > contourplot(-5*иin(х)/(х 2 г у 2 ♦ О S) X- 2 2,у- 2. 2grid-(15.15|,fi1led-true) • Рис 13.28 Пример построения графика функции линиями равного уровня Функция contourplot позволяет строить и графики ряда функций. Пример такого построения показан на рис. 13.29. Множество окружностей на этом рисунке создается четырьмя поверхностями, заданными функциями cl, с2, сЗ и с4. Следует отметить, что, хотя графики в виде линий равного уровня выглядят не так эстетично и естественно, как обычные графики трехмерных поверхностей (ибо требуют осмысления результатов), у них есть один существенный плюс — экстремумы функций на таких графиках выявляются порой более четко, чем на обычных графиках. Например, небольшая возвышенность или впадина за большой •горой» на обычном графике может оказаться невидимой, поскольку заслоняется
«горой» — на графике линий равного уровня этого эффекта нет. Однако вырази- тельность таких графиков сильно зависит от числа линий равного уровня ЯП Я f* Ь* У** Ййм* Й«е Jfllxj Графи» в виде линий равного уровня для нескольких фуккдвй л! > With (plot в) Я el - (оои(х) 2*еов(0 4»у),»ln(x)-2»«in(O 4«y).yJ о? - |««(х)« 2«сов<0 4«у) , «1и(| ) • ?«« 4*у) , yj <3 - [cios(x) 3«соя(0 4*у) , ю.'>(х) 3*я 1п<(1 4«у),у| оф:- |со«(ж)*Э*сов(0 4*у),«1и(«)-3*кin(0 4*у) у)- contourplot<Iе1,с? сЗ C4I.X-0 2*Pi у-0 IO.qrtd-125 IS) color-blue) Рис 13 29 Пример построения графиков многих функций линиями равного уровня 00 ♦ эя 13.6.4. График плотности Иногда трехмерные поверхности отображаются на плоскости как графики плотности окраски — чем выше высота поверхности, тем плотнее окраска Такой вид графиков создается функцией densityplot Она может записываться в двух форматах densityplot(exprl ,x=a..b.y=c..d) densityplot(f.a. b.c.d), где назначение параметров соответствует указанному выше для функции contour- plot. На рис. 13.30 дан пример построения графика такого типа Нетрудно заметить, что в плоскости X.Y график разбит на квадраты, плотность окраски которых различна. В нашем случае плотность окраски задается оттенками серого цвета. Обычно графики такого типа не очень выразительны, но имеют свои области применения К примеру, оттенки окраски полупрозрачной жидкости могут указы- вать на рельеф поверхности дна емкости, в которой находится эта жидкость 13.6.5. График векторного поля двумерный Еще один распространенный способ представления трехмерных поверхностей — графики векторного поля Они часто применяются для отображения полей, например, электрических зарядов Особенность таких графиков в том. что для их построения используют стрелки, направление которых соответствует направле- нию изменения градиента поля, а длина — значению градиента
Рис 13.30. График плотности для заданной функции. Для построения таких графиков н двумерной системе координат используется функция fieldplot: lieldplottf, rl, г2) или fieldplot(f, rl. г2. ...), где f — вектор или множество векторов, задающих построение, и г! и г2 — пределы. На рис. 13.31 показан вид одного из таких графиков. Следует отметить, что для получения достаточного числа отчетливо видных стрелок надо поработать с форматированием графиков Иначе графики этого типа могут оказаться не очень представительными. Так. слишком короткие стрелки превращаются в черточки и даже точки, не имеющие острия, что лишает графики наглядности. Чуть позже мы рассмотрим построение на одном рисунке графиков плотности и векторного поля, а также создание более наглядных жирных стрелок. 13.6.6. Графики в разных системах координат В пакете plots имеется множество функций для построения графиков в различных системах координат. Объем книги не позволяет воспроизвести примеры на все виды таких графиков, ибо их многие сотни. Да это и нс надо — во встроенных в справочную систему примерах можно найти нее нужные сведения. Так что ограничимся лишь парой примеров применения функции tubeplot(C, options), позволяющей строить весьма наглядные фигуры в пространстве, напоминающие трубы или иные объекты, образованные фигурами вращения. На рис. 13.32 показана одна из таких фигур. Она поразительно напоминает раковину улитки. Функциональная окраска достигнута доработкой графика с помощью панели форматирования. Смысл параметра С (в документе Conchoid) легко понять из этого примера.
» * Ивйма» 4 |lp виам) ИПП в р. £Л \W (пм* Гог» QptaB цы> jJjU xj График типа ‘«егторкое пояс ] д| > * :- ?.уЬ4) (1/2): Я Ч (а,у)- -у/(а’2еу'2-4) '(1/2); fieldplot( lf,g],-6..6,-6..6.axea-boxed,thlcknosa-Z); Др» 1 дум. I »нс !l<g>M gt>e | Цо. | ’03 Рис 13.31. Двумерный (рафик тина векторного (юля г Построение "улитки'* [> wlth(plots): f> (t S«Pi)*cos(t)Zl, (t-5*Px) *. Э, t—0. .6 [ *P1J: f > Conchoid : «• tubeplot(f. radiue-(t 5*Pi)*.2,orlentation-( 37,61I,tubepol I nt a-PS, at yle-PAICH) :Conchoid | Рис 13.32 Построение графика «улитки». Эта функция может использоваться и для построения ряда трубчатых объектов в пространстве. При этом автоматически задается алгоритм удаления невидимых линий даже для достаточно сложных фигур. Это наглядно иллюстрирует пример
на рис 13 33, показывающим фигуру «цепи» Не правда ли реалистичность этой фигуры поражает воображение? -Ь Марк V R.1MW * ml__________________ ЯП Н 2 ¥•* |пм« FarMf Qs^orn K*o Цострогни» цепи > wtth(plots) H -lb k—3 (1/?) ’> knot — tubmplnl < I 11-k*< <>«(< ) k*nin(t>, 3*sin<3*t) > t-0 2*P1, radlua -. 3 . nuepo Hit ж—trunc <6 4 »M) , t ubepoint » -N j , > | -l/?-k«Goe(t) , k/2 >k*sln(t) , 3*«1л(ЭП). >3-0 2*pi, i ad 1ч»- 3 n>i»i(a-,run; (6 4*HJ , t ntwpoint s-Hl > I l/?*k»cns(t) k/2-k«»Ln(t) 3««ln<3*t), > t-0 ?*PI, radius- 3. nuapo int S—trulli'(b 4»H) . t ubepolnt s -H I I , > seal luq-CWKRl kA INtt) oi unit ul loll-163.37 ], 111 le- JI) фигура - Unni, ) knot 3D фигура - цепь Рис 13 33 Фигура «цепи», построенная с применением функции tubeplot d ЯчН » «и Можно немало размышлять о том, как природа «узнала» о математических закономерностях, положенных в основу тех или иных геометрических объектов, или, возможно, о гениальности людей, сумевших найти такие закономерности для природных объектов. В наше время Maple V открывает огромные возможности для таких людей 13.6.7. Графики типа трехмерного векторного поля Наглядность ряда графиков можно существенно увеличить, строя их в трехмер- ном представлении Например, для такого построения векторных полей можно использовать графическую функцию fieldplot3d. В отличие от функции fieldplot, она строит стрелки как бы в трехмерном пространстве (рис. 13 34) Все сказанное об особенностях таких двумерных графиков остается справедли- вым и для графиков трехмерных. В частности, для получения достаточной их представительности нужно тщательно отлаживать форматы представления таких графиков 13.6.8. Контурные трехмерные графики В отличие от векторных графиков, контурные графики трехмерных поверхностей, наложенные на сами эти поверхности, нередко повышают восприимчивость таких поверхностей — подобно изображению линий каркаса Для одновременного построения трехмерной поверхности и контурных линий на них служит функция contourpk>t3d Пример ее применения показан на рис. 13.35.
Графят тип» "трехмерное •ехторкое в»яе' > wltbfplot ) ficldpLo* <d( ((ж,у,ж) 7*со»(ж).(ж,у,а)- 2*у.(ж.у.г) 1I , -3 . ."I, I 1, -1 1 ,ооlor—Ыаок) ; Рис 13.34 Построение векторного поля в трехмерном пространстве »"** м»* а*=» ««*>" НФ Трехмерная гоафяжа с липняка равного уровня > withCploTs) contourplot3d(-20»х/(х'2«у* 2-1).ж--6.6,у—-3..Э, ft1’ed-truB coloring-(red,blue)); Рис 13.35 График трехмерной поверхности с контурными линиями •** M<>te V Нйс4*« Для повышения наглядности этот график доработан с помощью панели формати- рования графиков. В частности, включена функциональная окраска и подобраны углы обзора фигуры, при которых отчетливо видны впадина и пик фигуры.
13.6.9. Техника визуализации сложных пространственных фигур Приведенные выше достаточно простые примеры дают представление о высокой степени визуализации геометрических фигур с помощью пакета plots. Здесь мы рассмотрим еще несколько примеров визуализации трехмерных фигур. Многие видели катушки индуктивности, у которых провод того или иного диаметра намотан на тороидальный магнитный сердечник. Математическая абстоакция такой катушки показана на рис 13.36. Рис 13 36 Тор с обмоткой — толстой спиралью В документе (рис. 13.36) для функции lubeplot использовано довольно большое число параметров-опций. Не всегда их действие очевидно. Поэтому на рис. 13.37 показано построение трех взаимно пересекающихся торов с разными типами их построения. Этот рисунок дает также наглядное представление о возможности построения нескольких графических объектов (представленных функциями pl, р2 и рЗ) с помощью функции tubeplot. Наконец, на рис 13.38 показано построение тора с тонкой обмоткой. Рекоменду- ется внимательно просмотреть запись функции tubeplot в этом примере и в примере, показанном на рис. 13.36. Можно также поэкспериментировать с опциями графика, от которых сильно зависит его представительность и нагляд- ность. В ряде случаев наглядно представленные фигуры можно строить с применением объединения однотипных фигур. Пример графика подобного рода представлен на рис. 13.39. Здесь готовится список графических объектов s, смещенных по вертикали. С помощью функции display они воспроизводятся на одном графике, что повышает реалистичность изображения. Последний пример имеет еще одну важную особенность — он иллюстрирует задание графической процедуры, в теле которой используются функции пакета
• Maple V Reieeie 4 | JdJifyto ямг*| 1ЧПЕ1 Я [► * > (пме Fop» flpoora На» „|tf| Х| Задание трех трехмерных графиков в трех ратных стилях > with(plots) Л > opts t-0 .. 2*Р 1, nusipo tuts 1Q0 , radius-. £ • '> pl - tubeplot ( |cos(t ) . sin(t) , 0] .opt s style-PATCH) : > p? - t ubeplot ( |0 , ccstt) stnft ) ) .opt я, style-POIMT): > p< t ubaplot ( |slr>(t). 0. cost t ) | .opt s, styln-COttTOUH)! > d I sptay< (pl. p? , p3 |) Рис 13 37 Три пересекающихся тора с разным стилем построения ЫаЫ* V RHesie < (UnMled |'»|) Э » 4» Ь<и у«о ргт*< Н,—a Qphnrr д'гИо-ч Наг Тор с обмоткой ЯПП > pl. -spacecurve < (cos (t ) * (10-3*s lu(t *15)), sin (t) * (10 -3*» Ln (t *15)), 2*cos(t*15).t-0. 2*P1,nuepoints-1000].color-black): > p2:-tubeplot (( 10*c«hs (t ), 10*sin(l), 0] . t-0. 2*P I . nuepol ot s-1 00. radius-?.stу1&-ГАТГНИОСИГП) > display!I pl.p?I.scaling-COMSIKALHBD). Рис 13 38 Top с тонкой обмоткой plots Параметр и этой процедуры задает число элементарных фигур, из которых строится полная фигура. Таким образом, высотой фигуры (или шириной «шины») можно управлять. Возможность задания практически любых графических проце- дур средствами Maple-языка существенно расширяет возможности системы Maple.
[«5 Ыарй V Пей«ае4 [«Mi* яи| ММ О Я f* t* У*» киы Qcutru «rxk~ tM> .lai *1 Пример построения графика с н<т1о.’П>1О№Шмеч процедуры г| > with (plot*) Я '> torii - 1и«.(п| > Local «,к- > '•«ft tubeplot < |со» (t), a in (t) , k| , > I-U ?*v i uuapoints-100 t*Ulux~ X) k-0 n 1) > tliaplay(la)) > end > turli(S) Рис 13 39 Построение фигуры, напоминающей шину автомобиля Наглядность графиков типа графика плотности и векторного поля может быть улучшена их совместным применением Пример его показан на рис. 13 40 «Ь * Най«и < fo.dam МПС Я U» Ь'Я 2d** »•<»«• ’я'лк’ъ Ь«С . е| «1 Рис 13 40 Пример совместного применения графиков плотности и векторного поля Этот пример иллюстрирует использование *жирных» стрелок для обозначения векторного поля Наглядность графика повышается благодаря наложению стрелок на график плотности, который лучше, чем применение стрелок, дает представле- ние о плавности изменения высоты поверхности, заданной функцией Г
13.6.10. Построение анимационных 2О*графиков Визуализация графических построений и результатов моделирования различных объектов и явлений существенно повышается при использовании средств «ожив- ления» (анимации) изображений Пакет p'ots имеет две простые функции для создания анимационных графиков. Первая из этих функций служит для создания анимации графиков, представляю- щих функцию одной переменной х — F: animate(F, х, I) или annnate(F. х, to) При этом параметр х задает пределы изменения по переменной х. а параметр t — пределы изменения дополнительной переменной t. Суть анимации заключается в построении серии картинок (как в мультфильме), причем каждая картинка (фрейм) связана с изменяемой во времени переменной t Если надо явно задать число кадров N анимации, то в качестве опции о надо использовать опцию (rame=N. Рис I3.41 показывает применение функции animate. plots(display)((a b)) 14 w Рис 13 41 Первый стоп-кадр анимации > with(plot э <nImat В документе рис. 13 41 строятся две функции — не создающая анимации функция sin(x) и создающая анимацию функция sin(i*x)/(i*x), причем в качестве перемен- ной t задан? переменная i Именно ее изменение и создает эффект анимации При исполнении функции animate и выделении полученного графика появляется панель проигрывания анимационных клипов Она имеет кнопки управления с обозначениями, принятыми у современных магнитофонов. Пустив кнопку пуска (с треугольником, острием обращенным вправо), можно наблюдать изменение вида кривой для функции sin(i*x)/(i*x) К сожалению, картинки в книгах всегда неподвижны и воспроизвести эффект анимации трудно Ограничимся приведением еще одного стоп-кадра (рис. 13 42)
Нетрудно заметить, что на нем показана функция sin(i*x)/(i*x) в иной фазе, чем на рис. 13.41. > with(plots,animate,display) япн Ь -plot(я1п(ж),ж—Р1 plots(display)((a,b>)• L9KK Wrda. |х|т![>| □аоШпв -1 .3): Рис 13 42 Второй стоп-кадр анимации 9®; Анимация графиков может найти широкое применение при создании учебных материалов. С ее помощью можно акцентировать внимание на отдельных пара- метрах графиков и образующих их функций. 13.6.11. Построение анимационных ЗО-графиков Аналогичным образом может осуществляться и анимация трехмерных фигур. Для этого используется функция animate3d: animate3d(F,x, y,t,o) Здесь F — описание функции (или функций), х. у и t — диапазоны изменений переменных х, у и 1 Для задания числа кадров N надо использовать необязатель- ную опцию о в виде frame=N. На рис. 13.43 показано построение анимационного графика. После задания функции, график которой строится, необходимо выделить график и запустить анимационный проигрыватель — как это описывалось для анимации двумерной графики. На рис. 13.43 показано также контекстно-зависимое меню, которое появляется при нажатии правой клавиши мыши в момент, когда курсор ее находится в поле выделенного графика. Нетрудно заметить, что с помощью этого меню (и откры- ваемых им подменю) можно получить доступ к опциям трехмерной графики и выполнить необходимые операции форматирования, такие, как включение цвето- вой окраски, выбор ориентации фигуры и т.д.
> wlth(plots): atiim ilo3<j(cos(t *х*у/3) ,x- Pl Pl У—-Р1 P 1,t-0..2,color-»ln<x)) Рис 13 43 Подготовка анимационного ЗО-графика 13.6.12. Использование для анимации опции insequence Еще один путь создания анимационных рисунков — создание ряда графических объектов pl, р2, рЗ и т.д. и их последовательный вывод с помощью функций: display(pl,p2,p3,...,insequence=true) displayed < р 1 ,р2.рЗ.. ..insequence=true) Здесь основным моментом является применение опции insequence=true. Именно она обеспечивает вывод одного за другим серин графических объектов pl, р2. рЗ и т.д. 13.7. Графика пакета plottools 13.7.1. Состав пакета plottools Инструментальный пакет графики plottools служит для создания графических примитивов, строящих элементарные геометрические объекты на плоскости и в пространстве отрезки прямых и дуг, окружности, конусы, кубики и т.д Его применение позволяет разнообразить графические построения и строить множе- ство графиков специального назначения В пакет входят следующие графические примитивы: аге arrow circle cone cuboid curve cutfn cutout cylinder disk dodecahedron ellipse ellipticArc hemisphere hexahedron hyperbola icosahedron line octahedron pieslice point polygon rectangle semitorus sphere tetrahedron torus
Вызов примитивов пакета осуществляется после загрузки пакета в память ПК командой with(plottools). Обычно примитивы используются для задания графиче- ских объектов, которые затем выводятся функцией display. Возможно, примене- ние этих примитивов совместно с различными графиками. 13.7.2. Примеры применения примитивов пакета plottools Большинство примитивов пакета plottools имеет довольно очевидный синтаксис. Например, для задания дуги используется примитив агс(с, г. а..Ь. где с —г список с координатами центра окружности, к которой принадлежит дуга, г — радиус этой окружности. а..Ь — диапазон углов. На месте многоточия могут стоять обычные опции, задающие цвет дуги, толщину ее линии и т.д. Все формы записи графических примитивов и их синтаксис можно найти в справочной системе. На рис. 13 44 показано применение нескольких примитивов двумерной графики для построения дуги, окружности, закрашенного красным цветом эллипса и отрезка прямой. Кроме того, на графике показано построение синусоиды. Во избежание искажений пропорций фигур надо согласовывать диапазон изменения переменной х. V 4 (plooii ami| ЯП С Л Гй t* 'Г"*- *огп,< Црьищ 'J»e . 1Д1 »1 Приткете графических примитив пакет* р'юво-Д» > with(plottoole): Ж и агс([О.О|, 1.' VL/9. I): l;-llnO(l 1. 11,(1.11). с: «с 1тс 1о( | О, О) . О 7, color-ЬЬ>о) • :>«! 1 Ipitof (1.1,0.51,0.4.0. ?,color-T4»«l f 11 lnd-t rue) : :-plot(ain(x),x- Pi/2. fi/2): plot s(display!(a.l,c,e.s)• Рис 13.44 Примеры применения примитивов 2D графики пакета plottools Аналогичным образом используются примитивы построения трехмерных фигур. На рис. 13 45 показано совместное построение двух пересекающихся кубов и сферы в пространстве. Нетрудно заметить, что графика пакета приблизительно (с точностью до сегмента фигур) вычисляет области пересечения фигур. С помощью контекстно-зависимого меню правой клавиши мыши (рис. 13.45) можно устанав- ливать условия обзора фигур, учитывать перспективу при построении и т.д. В частности, фигуры на рис. 13.45 показаны в перспективе.
S Марк-4 - »т| НПО Е* £<* Y*» Ш* с*м Ф>т вдкиоп YT’d» в* Построение ЗГ графическах фигур е помощью прижит за пакета plottoob > withtplot tools) 1 hoxabodront(0.0.0) ,0 8,color*tad), hexahedron((1. 1,1) , 0 5, color—tjreetn) ярН<-го< (0,0.0) , 1#color—yel low). plots (display] (f stylo-patch) Рис 13 45 Примеры применения примитивов 30-графики пакета plottools. С другими возможностями этого пакета читатель теперь справится самостоятель- но или с помощью данных справочной системы 13.7.3. Построение графиков из множества фигур В ряде случаев бывает необходимо строить графики, представляющие собой множество однотипных фигур. Для построения таких графиков полезно исполь- зовать функцию повторения seq(i.i=a..b). На рис 13.46 показано построение фигуры, образованной вращением прямоугольника вокруг одной из вершин. Л Ы«йе V heleiur 4 |>nhrr< nan) а» £* VIm k»»t г»4 MfKMn Построение фигуры прмцмосциНея прхмоугахьию > with (plot tools) wlth(plots) > <r-reel anq]o( (0,0 ?(,(0 25,11) > о -snq(rot <tte(q , Pi *1/5) . 1-0 10) > dlsplsy(c) Рис 13 46 Построение фигуры, образованной вращением прямоугольника
В этом примере полезно обратить внимание еле и на функцию поворота фигуры — rotate. Именно сочетание этих двух функций (мультиплицирования и поворота базовой фигуры — прямоугольника) позволяет получить сложную фигуру, показан- ную на рис. 13.46. 13.8. Графическое представление решений дифференциальных уравнений 13.8.1. Применение функции odeplot пакета plots Для обычного графического представления результатов решения дифференциаль- ных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде: odeplot(s.vars.r.o), где s — запись (в выходной форме) дифференциального уравнения или системы дифференциальных уравнений, полученных при их численном решении функцией dsolve, vars — переменные, г — параметр, задающий пределы решения (напри- мер, а. Ь) ио — не обязательные дополнительные опции. На рис. 13 47 представлен пример решения одного дифференциального уравнения с выводом решения у(х) с помощью функции odeplot .!. Мл|4е V НкЬглга « |Ы1 №») япп а -л. у— 1ПИм fa™» rjpun, Рециние одногс дкффгревпижлжяого урзввгная с выв ж м гржфии рпасни^ д! > with(plot«V ® р : — dsolve(( diff(y(x).x) - оов(х' 2*у(ж)),у<0)-2|,у(ж),I ypo-ouaar to) odeplot(р,(ж,у(х)),-5..5,labels-(х,у|) га 10 f, 1 оя “*-4 2 1 4 L j 'ЯПж«| ЙС.нояооежяН» V < И ; # 9* ’» Рис. 13 47 Пример решения одного дифференциального уравнения В этом примере решается дифференциальное уравнение y’(x)=cos(x‘2*y(x)) при у(0)=2 и х, меняющемся от -5 до 5. Левая часть уравнении записана с помощью функции вычисления производной diff. Результатом построения являет- ся график решения у(х).
На другом примере (рис. 13.48) представлено решение системы из двух нелиней- ных дифференциальных уравнений. Здесь с помощью функции odeplol строятся графики двух функций — у(х) и z(x). Я Н» £<* ¥" |п«1 Гом Qptara Ь«с f мнете ос-темы и явух дифференциальных Уравиеииа е выодсы графиков решен; > with(plotи): • у и ai f f (у(ж) ж)-x(x) .<ti f Г(е(ж) . ж) -3*« tn(y(ж) tons ty(x). z(x)): р:« <icolve(| »ys,y(0)-0, l(O)*-l I fena,typ«-nuMrlc>)t odeplot(p,||. 4. , 4,puepolnte-25.color-bla ck)- Рис. 13 48. Пример решения системы из двух дифференциальных уравнении В этом примере решается система: y’(x)=z(x) z’(x)=3*sin(y(x)) при начальных условиях у(0)=0, z(0)=l и х, меняющемся от -4 до 4 при числе точек решения, равном 25. Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазоного портрета — при этом по осям графика откладываются значения у(х) и z(x) при изменении х в определенных пределах. Рис. 13 49 представляет построение фазового портрета для системы, представленной выше. Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок при построениях, поэтому возможность Maple V быстро строить фазовые портреты трудно переоценить. 13.8.2. Функция DEplot из пакета DEtools Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функции для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot.
япп Реимнте системы ич двух жиффп'<-ицииьиых ураеигни* с выводом графика фюового портрета р ешен пя > with(plotи) sye dlfГ(у(х),х)-ж(к).di 11(ж(к),я)-»п(у(х)). toes |у(х), ж(х)|: р: * di>olv«t( |*уи,у(О)-О.к(О)—11, fens, type-nuaaar ic) ; odnplot(р,(у(х),Ж(х)I 4 . 4 , niunpolnts-SO, color-black) Рис 13 49 Представление решения системы дифференциальных уравнений в виде фазового портрета. Функция DEplot может записываться в нескольких формах: DEplotfdeqns. vars, trange, eqns) DEplot(deqns, vars, trange, inits. eqns) DEplot(deqns, vars. trange, yrange, xrange, eqns) DEplotfdeqns, vars. trange, inits. xrange. yrange. eqns) Здесь: deqns — лист (множество) с системой дифференциальных уравнений первого порядка или одиночное уравнение любого порядка, vars — зависимая переменная (лист) либо множество зависимых переменных, trange — область изменения независимой переменной t, inits — начальные условия для решения, yrange — область изменения для первой зависимой переменной, xrange — область изменения для второй зависимой переменной, eqns — опция, записывае- мая в виде keyword=vaiue Замена имен переменных другими в данном случае не допустима. Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти графики строятся в виде векторного поля направлений, а для неавтономных систем только в виде кривых решения. По умолчанию реали- зуется метод Рунге-Кутта 4-го порядка, что соответствует опции me(hod=classi- cal(rk4| Возможна спецификация и других методов (см. главу 10). В каталоге EXAMPLE системы Maple V R4 можно найти файл deplot.mws с многочисленны- ми примерами применения функции DEplot. С функцией DEplot могут использоваться следующие опции о: arrows = type — тип стрелки векторного поля ('SMALL', MEDIUM . 'LARGE', UNE' или NONE'): colour, color = arrowcolour — цвет стрелок (задается 7 способами);
dirgrid = [integer,integer) — число линий сетки (о умолчанию 20(20); iterations = integer — количество итераций, представленное целым числом; linecolour, linecolor = linejnfo— цвет линии (задается 5 способами); method=’rk4' — задает метод решени ’euler', ’backeuler’, ’impeuler’ и ’rk4’; obsrange = TRUE,FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора; scene = [name.namel — задает имена зависимых переменных, для которых строится график; stepsize - h — шаг решения, по умолчанию равный abs((b-a))/20, и представленный вещественным значением На рис. 13.50 показано решение системы дифференциальных уравнений х' (t)=x(l)*(l-y(t)) у‘ (t)=0.3*y(l)*(x(t)-l), описывающих модель Лотка-Вольтерра при заданных в документе изменениях t, x(t) и у(,). Решение представлено в виде векторного поля, стрелки которого становятся касательными к кривым решения. Обратите внимание на функцио- нальную закраску стрелок векторного поля. • М Ifilr- V Ftr4e.*tr 4 |ir«rwil1 H«i| J fb [Ы У*" h* F<VMI Qptam fcWow .101 *1 (Построение решения састемы аз двух дифференциальных уравнений (модель л! Лото-Водьтерра) а виде фюоьего портрета типа нектарного поля ““ > DKploL(ldlft<x(t),t)-x(l)*(l y(t )) ,dil I (у(1 ) , I > .3*y(t)*(a ’ lx(t),y(t)),t—? t,* 2 Jirowi lAKGi. title- Модель Лотма-Нольтеррт , color-J 3*y(t)*(x(t) 1) , x(t)•(1 y(t))..lD- Модель Лотка-Во льгерра Рис 13.50 Решение системы дифференциальных уравнении Лотка-Вольтерра с выводом в виде графика векторного поля Еще интересней вариант графиков, представленный на рис. 13 51 Здесь помимо векторного поля построены фазовые портреты решения с использованием функ- циональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий: х(0)= у(0)=1.2 и х(0)=1 и у(0)=0.7.
Следует отметить, что функция DEplot может обращаться к другим функциям пакета DEtools для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения. Г Решение снс-гемм из дхухдиффер^ицимьимх уриягиий с ыоолоыизмбннировиииноге [ ф*>овог« портрет* решении > DEplot (Idlff(x(t) dtff(y(t),t)-.3*y(t)*(x (•) 1) I, (x(t) ,y(t)| ,« - 1. I l(x(O)-l 2.y(0)-l 2].(x<0)-l,\ y(0)- 1) J , atepsizee- 2, Ville— Мидп»ь Потна Нольгв|>ри , oolor-( 3*у < t ) •(> (I) -1) *<t ) *( 1 y(t)),\ 11, J lnecolor-t/2. allow* -MED HIM aotlKKl-rk 14 5) Рис 13 51 Пример построения двух фазовых портретов на фоне векторного поля 13.8.3. Функция DEplot3d из пакета DEtools В ряде случаев решение систем дифференциальных уравнений удобно представ- лять в виде пространственных кривых — например, линий равного уровня или просто в виде кривых в пространстве. Для этого служит функция DEplot3d. DEplot3d(deqns, vars, trange, initset, о) DEplot3d(deqns, vars, trange, yrange, xrange, initset, o) Назначение параметров и опций этой функции аналогично указанному для функции DEplot Рис 13.52 поясняет применение функции DEplot3d для решения системы из двух дифференциальных уравнений с выводом фазового портрета колебаний в виде параметрически заданной зависимости x(i), y(t). В данном случае фазовый портрет строится на плоскости по типу построения графиков линий равной высоты. Другой пример (рис. 13.53) показывает решение системы из двух дифференциаль- ных уравнений с построением объемного фазового портрета В этом случае используется координатная система 3D графики и графические построения соот- ветствуют параметрическим зависимостям x(t). y(t) и z(t) Вид фазового портрета напоминает разворачивающуюся в пространстве объемную спираль Функцио- нальная окраска ее делает график эффектным, что, увы, теряется при черно-белом воспроизведении графика
•«*М<фй V Ке4в«пв 4 (<Ш<м43 amt) IWOE3 Я F* Е* У*» Ыя* Т«>м< Сэют Нее -Iffl *1 Пое|р-**ие ф»с««го портрет* жяя рмпеяпя системы пт двтх дифференциальны* ±1 Тр-жяеяий с помс-есыо фуикпяи DEploBd > OKplot 3<1( |Н1 tf (x(t ) ,t )-y(t) ,dlf f(y(t) ,t )- sin(i(t>) | (ж<*) у<1 И . t-0. . 10. II ж(0)-0, у(li)-. 2),i*(0)-0,y(O)-l), (X(0)-0,y(0)—l В) fx(O)- 2*Pi,y(0)-l], ,y<0)- M l*.<0)-?*Vi,y(0)-2.1), lx<0]-?*V1.y(0)^ -2 1) ) , «eeipelao- OS ,t it le- P«ndulua Vibration* , orientat Ion-|0,99],1 Lnecolor-black) Pcuduhuu Vibration» *n,**| ^[.югаот—№ HaHwte *»«—»* < - ИЧ^< H07 Рис 13 52 Пример решения системы из двух дифференциальных уравнении с помощью функции DEplotSd НПО Потфсеиие ЗЕ фюлого портререга с помощью функции DEplot 3^ > tltplotidt Idlff (*<t ) ,t)-y(t ) , diff (y(t) t»— * in ( к (t) ) -y (t)/10 I. ( ж C t > ,y(t) ), t- 10. . 20,ctepala«-. 1. I |x<0)-0,y(0)-l] J , 1 inec.olor-t) Рис 13 53 Пример решения системы из двух дифференциальных уравнений с пос троением трехмерного фазоного портрета. Возможности функции DEplot позволяют решать системы дифференциальных уравнений с числом последних и больше двух — рис. 13.54, например. Однако в этом случае число решении, представляемых графически, выходит за пределы, допустимые ЗР-графикой. При этом от пользователя зависит, какие из зависимо-
стей опускаются при построении, а какие строятся. Так. на рис. 13.54 в пространстве построены две кривые решения. Вывод W -графика рим и их системы п 4 двфферсикимьиыхуразкенкй > OtplotJdt I t'(x) ,D(y) (t) D(a)(t (x(t),y(t),x(t).w(t)),l~O 15, Цx(0)-1,y(0)-0 x(0)-2,w(0)-31, (к(О)-Ог(О)- ?S,у<0)-.5.м(0)- 16%J), «сппв-jilt) , y<* ) , 1 . «tepelze— 1, on-lent at ton-1139 106) , linecolor black) | Рис 13 54 Решение системы из четырех дифференциальных уравнений Нередко таким образом можно вывести па построение и иные зависимости. Однако их число обычно приходится ограничивать из-за потери наглядности графика при большом числе линий. 13.8.4. Функция PDEplot пакета DEtools Еще одна функция пакета DEtools — DEtools) PDEplot] служит для построения графиков решения систем с квазилинейными дифференциальными уравнениями первого порядка в частных производных: Pfx.y.u) * D| 1 |(u)(x.y) + Q(x.y,u) * D|2|(u)(x,y) = R(x,y u), так что P их + Q uy = R. где P, Q и R зависят только от x. у и ulx.y), при этом dx/dt = Р, dy/dt = Q, du / dt = R. Эта функция используется в следующем виде: PDEplot(pdiffeq, var, Lcurve, srange, о) PDEplot! pdiffeq, var, Lcurve. srange, xrange, yrange, urange, o) Здесь, помимо отмеченных ранее параметрон, pdiffeq — квазилинейные диффе- ренциальные уравнения первого порядка (PDE), vars — независимая переменная и Lcurve — начальные условия для параметрических кривых ЗО-поверхности. Помимо опций, указанных для функции DEplot. здесь могут использоваться следующие опции: basechar = TRUE.FALSE.ONLY — устанавливает показ базовых характеристик кривых;
basecolour, basecolor = b_colour initcolour, initcolor = Lcolour numchar = integer numsteps = (integer 1 ,integer2| — устанавливает цвет базовых характеристик; — инициализация цветов. — задает число отрезков кривых, которое не должно быть меньше 4 (по умолчанию 20); — задает число шагов интегрирования (по умолчанию (10.10]). Рис. 13.55 показывает применение функции PDEplot Этот пример, взятый из справочной системы Maple V R4. показывает, насколько необычным может быть решение даже простой системы дифференциальных уравнений в частных произ- водных. ВПП Я Е*» Е» У*» Oman tfmaow ffeo -|8! x| Построение 3D графики решении : ежэк функции PL'Epk-t > wit h(DEtools): PDF’;» lot < • I i 11 ( г (u, v) , ii)*u*cn«(v) - di!t(r(uv). v) *v*mrd (11,3) -s in(u-v) ,z(u,v) , (t , siu(t) , t/2) , t — ?*₽!. 3*l> 1, nuachar-40 nuaetops- (20,20), st»psiao . 0*>, basechar-t rue orient at ion-I 103,79],4tyle-PATlHCOWTOUR) ____ __________ ____ 3 В Холст | 'jjj''.A.-J 33*4 w Рис 13 55. Пример применения функции PDEplot В данном случае решение представлено трехмерной фигурой весьма нерегулярно- го вида Другой пример использования функции PDEplot показан на рис 13.56. Он иллюстрирует комбинированное построение графиков решения разного типа t применением функциональной закраски, реализуемой по заданной формуле с помощью опции initcolor. Еше раз отметим, что, к сожалению, рисунки в данной книге не дают представ- ления о цвете Поэтому наглядность решений, видимых на экране дисплея, существенно выше. 13.8.5. Графическая функция dfieldplot Графическая функция dfieldplot служит для построения векторного поля (поля направления) по результатам решения дифференциальных уравнений. Фактиче- ски эта функция как бы входит в функцию DEplot и при необходимости вызыва- ется последней. Но она может использоваться и самостоятельно, что показывает
рис. 13.57. на котором показан пример решения следующей системы дифферен- циальных уравнений: x'(t)=x(t)*(l-y(t)), y’(D=O 3*y(t)*(x(t)-l) Mepie V ПНми 4 мм| [ Пример построения комкав и; оежиог график» с помомк фуакзяя Г DEpkt > twplot((y у) ?.Ж у) ,»> -2*x*y*rilff(Z(X у J ),у)+?*г(х у)*т-0 г(х, у) . tt » «in(Pi*t/O 1-0 О Inuax-h.orient At to»»-( 169. !6) tMB<№har-true niiast upi-[?0 ?C | stepslxto- IS, inltcolotir-co«(t > *t, b*a»colour—t *100) Рис 13 5Ъ Построение комбинированного графика с помощью функции PDEplot MI"IPI"II|H I. I II Р» ы» ►— f«t"M JjR»« Mniu- n-Ь [ Построеме ф»о»сео сортрет» с помощью фхкгции JElepbt пж-т» > wtth<DPtoola) dtleblplot ((d 111 (а {t ). t )—а (t) *( 1 y(l)).dift(y(t).t)-.3*y(t )*(s(t) di, ix(t) y(t)j t- ? .г,х—i a.y-1 г,*nowa-Lim OF title- Hi»да»(IL Лптиа Яoiti.тара color | 3*y(t)*(x(t) l),x(t)*tl y(t)J 1J) Модель Ли1ка-Вот>1сра Рис 13 57 Построение фазового портрета в виде трафика некторного поли Обратите внимание на использование опции в этом примере, в частности на вывод надписи на рисунок на русском языке В целом список параметров функции phaseportrait аналогичен таковому для функции DEplot (отсутствует лишь задание начальных условий)
13.8.6. Графическая функция phaseportrait Графическая функция phaseportrait служит для построения фазовых портретов по результатам решения одного дифференциального уравнения или системы диффе- ренциальных уравнений deqns. Она задается в виде: phaseportraiKdeqns, vars.trange,inits.o) При задании уравнений достаточно указать их правые части На рис 13.58 представлен пример применения функции phaseportrait для решения системы из трех дифференциальных уравнений первого порядка. Ь Mapto V 4 (4а1<ю19 м«м| ДГ1ЕЗ 3 ГЬ Y*“ fotm* Jim H=o «|ф| Ml Построение простого фазового портрет» с оомоцдо фуяхпив phatepertraai пакета DEtools zJ > wsth(Dbtools) Hi-»eportrait(lD(x)<t)-y(t) Ц(),О(у)(1 |x<t).y(t),x(t)|,t —7 7, Цж(0)-1. »(0)-0. В (<!»-?) | , iHrtp.izW". 05, »<:•»<«'- (x(t ) .«(t) ) , Li песо lour-a Ln(t •Vi/?) . Mthod-4 last lea 1 (foteu letI) t Рис I3 58 Построение фазового портрета с помощью функции phaseportreit В этом примере система дифференциальных уравнении задана с применением оператора дифференцирования D. Функциональная окраска линии фазового пор- трета достигается использованием опции linecolor, в правой части которой задана формула для цвета Вше более интересный пример решения дифференциального уравнения представ- лен на рис. 13.59. Здесь построены фазовые портреты для асимптотических решений В целом надо отметить, что возможности визуализации решений дифференциаль- ных уравнений с помощью системы Maple V весьма велики и приведенные выше примеры лишь частично иллюстрируют сказанное. В справочной системе можно найти ряд других весьма эффектных решений систем дифференциальных уравне- ний с визуализацией последних. 13.9. Иллюстративная графика пакета student Пакет student имеет три графические функции для иллюстрации интегрирования методом прямоугольников
leftboxU(x), x=a..b. о) или leftbox(f(x), x=a..b. n, 'shading’=<color>. o) rightbox(f(x), x=a..b. о) или rightbox(f(x), x=a..b. n, o) middlebox(Kx), x=a..b, о) или middlebox(f(x), x=a..b, n, o). Здесь: f(x) — функция переменной x, x — переменная интегрирования, a — левая граница области интегрирования. Ь — правая граница области интегрирования, п — число показанных прямоугольников, color — цвет прямоугольников, о — опции (см. plot,options). Ь» М V Relative 4 |4с4ооП0 яям) В Гй у* |пми гити Qptom й»с Представление асимптотического решении на фоне векторного воля rJ с помощью функции phuepoetraH пакета О&ооЬ “ > ph^noportrnit (1>(у)(и)— у(е) •« 2,у(«),х—1. .2 S,|ly(O)-O),l У<0)-1|. (y(O)- ll 1 .title- Ke yap t otic Solution , coloui-nagenla,lluecolor—(gold,yellow,whuat)); 4 jjOsjoso Цф Maple XfOafrOT- I .j^DoSMFj .«< 2>П Рис 13.59 Построение асимптотического решения на фоне графика векторного поля В этих функциях прямоугольники строятся соответственно слева, справа и посередине относительно узловых точек функции f(x), график которой также строится Кроме того, имеется функция для построения касательной к заданной точке х=а для линии, представляющей f(x): showtangent (f(x). х = а) Рис. 13.60 показывает все эти возможности пакета student. Четыре вида графиков здесь построены в отдельных окнах Возможности графики пакета student ограничены. Но они лают как раз те возможности, которые отсутствуют в основных средствах графики. 13.10. Графика статистического пакета stat Статистический пакет stat имеет свою небольшую библиотечку для построения графиков. Она вызывается в следующем виде: statslstatplots, functionl(args) или statplots|function|(args) Вид графика задается описанием function: boxplot, histogram, notchedbox, quantile, quantile2. scatterld. scatter2d и symmetry. Эти функции обеспечивают построение
типовых графиков, иллюстрирующих статистические расчеты. В качестве приме- ра на рис. 13.61 показано задание множества случайных точек и их построение на плоскости в ограниченном прямоугольником пространстве. Рис. 13 60. Примеры иллюстративной графики пакета student М«рй V Hoteme 4 - lilniahd 11|| ЯПВ Соиамме массивен случайных чисел и их графическое представление ±1 > wlth(»t.its): d:-rand[О..1000|: JB > *d..t a-.-(a«q(nvalf (d()/l00) , |-1 . 400) 1: > ydata:-(soq(etfalt(d()/100),j-1..400)11 > at at plot a locatterZdl (xdata, ydata) . „______... filOwсчета V gt’uOOI | ^ОсЬЧ^ | И9 i «24 Рис 13 61 Создание случайных точек и построение их на плоскости Но равномерности распределения точек можно судить о качестве программного генератора случайных чисел, встроенного в Maple V.
Другой пример применения графических средств пакета stat показан на рис. 13 62. Здесь, помимо изображений, заданных точками в виде маленьких ромбов (тип diamond), представлено изображение специальных объектов, по виду напо- иинаюших радиодетали. ~ В» Ed* jjsw Best Asm flown tfndw -“1® Г> with (stats); Xdata -[3.9, 4, 5 4, 26, 41, 11, 1.0. B.2, 6.2.14). Ydat<:-(?.«, 4.4, 2.8. 5, 9 9,-1.5, 1.0, 1 5,4 8,.45): 1 plots(display)(f statplots(scattered)(Xdata.Ydata), st at plots (boxp Lot [1311 (Ydat a| , st at plot s (xyuxub.«nq*«) (statplot s (notobodbox |ll])(Xdata))),v lew (0. 17,-4 14), axes-t RAMI:, sysbol-diasmiid) ; <4I 1» 1 a > « ' i a1 s 1 1 • '« ti ' м is »| ДПу.. | У MieroWi Want 0113 | )r-NC ИГМД1М| ф W w» Rww < |«caJ • 711 Рис 13 62 Построения с помощью пакета «tats Довольно часто используются графики гистограмм. Для их построения пакет stat имеет функцию histogram: stats|statplots, histogram |(data) statplot4histogram|(data) stats|statplots, histogram|scale|(data) statplots|histogram|scale|(data) Здесь: data — список данных, scale — число или описатель. Детали применения этой простой функции поясняет рис. 13.63, На нем дано два примера — для построения столбцов заданной ширины и высоты и построения распределения 100 случайных чисел с нормальным распределением. Обратите внимание на то, что в деталях гистограммы для второго примера построенные гистограммы будут несколько меняться от пуска к пуску. Это связано со случайностью генерируемых чисел и небольшими расхождениями в нормальном распределении чисел. 13.11. Графическая визуализация решений и анимация Выше уже нс раз графика использовалась для визуализации решений математи- ческих задач Так, многие особенности даже функций одной переменной вида f(x) могут быть выявлены с помощью графика функций. Затем можно точно вычислить корни функции (точки перехода через 0), экстремумы, крутизну наклона (произ-
водную) в заданных точках и т.д. Еще более информативна в этом отношении трехмерная графика — для большинства функций двух переменных вида z(x,y) нужно очень богатое математическое воображение, чтобы представить их вид — особенно в одной из многих десятков координатных систем. • М.цйг V Release 4 (llntitind |4|| Ей 1Л ]0м> I'W fun* а«о »1Д1 *1 Г> witti(st at к) wit li(et at к let at plot«| J «I datal: -(Wolqlit (1. . t. 5 ,3) , Weiqlii (3. 4.S.5) .Weight <5..?,«)): Л histograatdatal colour-cyan)• ДПул I ry > | wHL- NDU.I».| fe> V g(M>t [ bjtMSW Рис 13 63 Построение гистограмм Однако некоторые виды графиков трудно представить себе даже при наличии такого воображения. В этом отношении Maple V предоставляет поистине уникаль- ные возможности в обеспечении простой и быстрой визуализации решений. Ниже мы рассмотрим несколько наиболее характерных примеров такой визуализации. В них нет наиболее показательных примеров визуализации решений дифферен- циальных уравнений, поскольку они уже были рассмотрены 13.11.1. Иллюстрация решения систем линейных уравнений Системы линейных уравнений могут решаться как с помощью функции solve, так и с помощью матричных методов. Замечательной возможностью функции solve является возможность решения относительно ограниченного числа переменных Например, систему линейных уравнений с переменными х, у. z, t и v можно решить относительно только первых трех переменных х, у и z. При этом решения будут функциями относительно переменных 1 и v и можно построить наглядный график решения (рис. 13.64). На рис. 13.64 система задана пятью равенствами: el. е2. еЗ. е4 и е5. Затем функцией solve получено вначале решение для всех переменных (для иллюстра- ции). а затем для трех переменных х. у и г Для получения решения в виде списка, а не множества, как в первом случае для всех переменных, использована функция подстановки subs. После этого функция plot3d строит плоскость решения в пространстве.
НЫеше 4 (.hApkit Я С* £* ¥*• к:«* fotm* LiW" Н*Р -|Д( *1 > el 10»у‘!<>• ь»» i»v .’О . • • «•. -I > ei:-6*»-4*y»»*3*t*5*vl0:e4; Ч»г 2*у- 4’ 3*1 -v -О -J ’> «5 :-3*ж« 2*у 4*г-1 .5*v-30: SI. • solved el .«•£ .*3, t»4 , м5 11 431 266 2051 122 73 Si ~ I1 - x ----. v * ' 1", z » " » = — I ‘ 63 39 195 39 И > КУ.—solve(|el,о?,e3),(ж,у.г|)»иЬв(В7 |ж.V 7)>- 68 520 14 64 ’30 1 37 3W 11 1 69 “гз^’гз** 69 "23‘'29** 69 *Й j > plot3d(",V- 5 5.t—5 5,*xe«-bored color-red) Рис 13 64 График, представляющий решения системы линейных уравнений. 113.11.2. Графическая визуализация решения системы неравенств Пожалуй, еще более полезным и наглядным является визуализация решения системы уравнений в виде неравенств. В пакете расширения plots имеется специальная графическая функция inequal, которая строит все граничные линии неравенств и позволяет раскрасить разделенные ими области различными цветами: InequaKineqs. xspec, yspec. options). Параметры этой функции: ineqs — одно или более неравенство или равенство или список неравенств или равенств, xspec — xvar = min_x..max_x, yspec — yvar = min_y..max_y ио — необязательные опции, например указывающие на цвета линий, представляющих неравенства или равенства, и областей, образованных ними линиями и границами графика. Пример применения этой функции пред- ставлен на рис. 13 65 Обратите внимание на задание опций цветов: optionsfasfeasibly задает цвет внутренней области, для которой удовлетворяются все неравенства (равенства), optionsopen и optionsdose задают цвета открытых и закрытых областей графика, optionsexcluded для цвета внешних областей. График дает весьма наглядную интерпретацию действия ряда неравенств (или равенств). 13.11.3. Конформные отображения на комплексной плоскости Объем данной книги не позволяет объяснить столь тонкое понятие, как конфор- мные отображения на комплексной плоскости. Ограничимся лишь указанием на 'то. что в пакете plots имеется функция для таких отображений: |con(ormal(F.vl ,г‘2,о);
где F — комплексная процедура или выражение, rl, г2 — области, задаваемые а виде а b или пате=а Ь. о — опции Таким образом, для построения нужного графика достаточно задать нужное выражение и области изменения rl и г2. Пример построения конформных изображении для трех выражений дан на рис 13 66. В данном случае все три графика построены в отдельных окнах. •3» Ы«р4е V 4 ___________________________________ЯП и td. lew Горад (ИЛгж ЩпЬи н«Л> Отображение областей, представленных неравенствами > withfplotв): ine«iiial( а у-1,у->-0 1*х| а—» « у—4 4 opt ions feasible- (color- B.i,|ont a). opt lon«op«Hi” (oo lox-blue* thickness-?) . opttonsclosed-CcoIor-b^cB , I hlck.i№*B—3) , optlonsexclud«d-(color-ynllew) ) Рис 13 65 Пример графической интерпретации решения системы неравенств Рис 13 66 Конформное отображение на комплексной плоскости графиков трех зависимостей
13.11.4. Графическое представление содержимого матрицы Многие вычисления имеют результаты, представляемые в форме матриц. Иногда такие результаты можно наглядно представить графически, например, в виде столбиковой диаграммы Она представляет собой множество столбиков квадрат- ного сечения, расположенных на плоскости, образованной осями строк (row) и столбцов (column) матрицы. При этом высота столбцов определяется содержимым пеек матрицы. Такое построение обеспечивает графическая функция matnxplot из пакета расширения plots. На рис. 13 67 показано совместное применение этой функции с двумя функциями пакета linalg, формирующими две довольно экзотические матрицы А и В !* М>«4г V 4 (oMltpkrt ают| ЯПН О* £.♦ УЬч Горч» Орпом УГгЛ- Нар .|g| х| [ Цримевеиве графической функции m«3«plot Д| > restart with(plots) wllh( llnalq) : 3 К - hiUxut(8). В - tueplit2((l,2,3,<,-«, 3,-2,-1)) . f (x,y) > sin(x«y)/x. matrixplot(AB,heightx-hixtoqru,ares-frame.gap-0 25,style -patch,color-F) •aiuing, nev eafinitlcn tnr nerw Vurnina. &•« oat niiioo tot tceca Рис I3. 67 Графическое представление матрицы !На рис 13.67 показана графическая визуализация матрицы, полученной как разность матриц А и В Для усиления эффекта восприятия применяется цветовая функциональная закраска Для задания цвета введена процедура F 13.11.5. Визуализация Ньютоновых итераций Теперь займемся довольно рискованным экспериментом — наблюдением Ньюто- новых итераций с их представлением на комплексной плоскости На рис. 13.68 задана функция f(z) комплексного аргумента Для этого используется итерацион- ное выражение. Проследить за поведением функции на комплексной плоскости позволяет графическая функция complexplot3d из пакета plots Наблюдаемая картина весьма необычна и свидетельствует о далеко не простом ходе итерационного процесса Риск работы с этим примером заключается в том, что иногда он ведет к фатальным ошибкам, ведущим к прекращению работы с системой Обычно при пуске этого примера сразу после загрузки системы Maple V такого не происходит, но когда память загружена другими примерами, сбой
вполне возможен Рекомендуется записывать подобные примеры на диск перед их запуском Представление Нмотоиовсхлк итераций па комплексной плоскости > with(plotn) !-«- )>. <г Ч-7)/(3*г'7) GOBplaxplot 3d( Г$Ц4, -3-3*1. . 3*3*1, view-4 . 4 ,qt id- [*>0,50 J ,» tyle-patch).- Рис. 13 68 Наблюдение за процессом Ньютоновых итераций а ЗО-пространстве. 13.11.6. Визуализация корней случайных полиномов Наряду с традиционной для математических и статистических компьютерных систем возможностью генерации случайных чисел. Maple V предоставляет до- вольно «экзотическую» возможность генерации случайных полиномов с высокой максимальной степенью. Для этого используется функция: ranpoly(var.o) Она возвращает случайный полином переменной var. причем максимальная степень полинома птах может указываться опцией о вида degree=nmax. Приведем пример генерации случайного полинома с максимальной степенью 50: > poly:=randpoly([x),degree=50); 4 20 16 27 34 38 poly:=-53x ♦ 85 х ♦ 49 х + 78х + 17 х +72х Поскольку полученный полином случайный, то вам не удастся повторить его генерацию — каждый запуск randpoly дает новый полином. Так что важно понять в принципе осуществляемые далее действия. Прежде всего найдем список корней полинома S: > S:=sotve(poly.x); 16 12 23 30 34 S:= 0.0.0.0. RootOf(-53 + 85 _Z +49.Z + 78_Z + 17_Z *-72_Z ) В этом примере обратите внимание на число нулей в начале списка — их надо исключать из дальнейших вычислений. Это, и получение корней в виде обычных
комплексных чисел, делается с помошью функции allvalues, в которой в качестве параметра надо использовать S|5|. Ниже показано создание списка SA корней полученного выше полинома: >SA:=(S[1].S[2],S|3].S[4],allvalues(S[5))J; SA = [0. 0. 0. 0, -1 010550161 - 1475724933 I. - 1 010550161 * 1475724933 I.-.9465649833. - 9003773676 - 5534775311I, -9003773676 + 5534775311 I -8562982808 - 3789548397 I, -.8562982808 + 3789548397 I. • 7320300364 - 6478720727 I, - 7320300364 4 6478720727 I, - 5900687567 - 79898609491. -.5900687567 ♦ 7989860949 I. - 3987161272 - 8962702262 I, - 3987161272 + 8962702262 I. - 3642724499 - 9481481280 I. -.3642724499 ♦ .9481481280 I. - 02839255705 - .9363196855 I. - 02839255705 ♦ 9363196855 I. 05710128939 - 1 018443049 I. .05710128939 + 1.018443049 I. 2868399179 - 9808645873 I, .2868399179 ♦ 9808645873 I. 4149289767 - 8396518590 I. 4149289767 + 8396518590 I, .6775641178 - 8099749786 I. .6775641178 + 8099749786 I. 6864940076 - 6957907203 I 6864940076 ♦ 6957907203 I. 8450577013 - 4872509104 I. .8450577013 ♦ 4872509104 1. 9089753119 - 37493741551, 9089753119 «• 3749374155 I. 9157897832. 1 019132014 - 21146778991. 1.019132014 * .2114677899 I] Напоминаем, что эти корни также являются случайными. Теперь можно постро- ить комплексные корни полученного случайного полинома в виде точек на комплексной плоскости: > with(plots) complexplot(SA.x=-1 2 1.2,styie=pCMnt); Этот график показан на рис. 13.69 Рис. 13 69 Расположение корней случайного полинома на комплексной плоскости Можно заметить любопытную закономерность — точки, представляющие корни случайного полинома укладываются вблизи окружности единичного радиуса с центром н начале координат. Является ли это действительно свойством случай ных полиномов или дело в специфике их генерации средствами Maple V — для большинства из нас неясно Однако этот пример, приводимый в большинстве книг по Maple V. показывает, что порою вычисления могут ланать довольно неожидан
ные результаты. Кстати говоря, аналитически можно вычислять корни полинома с максимальной степенью не более четырех. Приведенные примеры дают весьма наглядное представление о больших возмож- ностях визуализации решений самых различных задач в системе Maple V. Можно значительно повысить ее, эффектно используя описанные ранее приемы анимации (оживления) изображений. В целом надо отметить, что графические возможности Maple V дают новый уровень качества графики современных математических систем, о котором с десяток лет тому назад можно было только мечтать. 13.11.7. Анимация разложения импульса в ряд Фурье Анимация (оживление) изображений является одним из самых мощных средств визуализации результатов моделирования тех или иных зависимостей или явле- ний. Порою изменение во времени одного из параметров зависимости дает наглядное представление о его сути. Здесь мы расширим представление об анимации и рассмотрим не вполне обычный пример, описанный в |38|, — наблюдение за синтезом импульсного сигнала, разложенного в ряд Фурье с числом гармоник N. На рис. I3.70 представлен документ, реализующий такое разложение и синтез для числа гармоник 0, 1, 2,.... N. > wlth(plota) Н -30 t -х 1 bf лгг iy (1. . Я) • > af--<t,k) k)‘(tk) He«vixl<|e(t 1 k)*<t 1 k) : > for k to H do bf|k]:-ovalf(2*rnl(sln(k*Pi*s)*f(x),x-0. 1)) rx| t : — (x ,t) '«u«(.11 (t . n) •l>r[n]*s In (n*P 1 *x) . n-1 H) N M* I > an t s(<, t) , x-0 l.t—0 nu«polnt«-b*H) Рис 13 70 Первый стоп-кадр анимации разложения импульса в ряд Фурье. Надо полагать, что читатель уже может разобраться в деталях задания прямо- угольного импульса — меандра с помощью функции Хевисайда (Heaveside) и его синтеза с помощью ряда Фурье Соответствующие и достаточно простые выраже- ния представлены на рис. 13.70. Нетрудно заметить, что при выделении рисунка рамкой появляется анимацион- ный проигрыватель, который позволяет запустить анимацию. Стоп-кадр на приве- денном рисунке соответствует началу анимации.
А вот рис 13.71 показывает завершающий стоп-кадр анимации, когда число гармоник равно N=30. В данном документе выводится только синтезируемая верхняя полуволна меандра, поскольку нижняя полуволна симметрична. a tie У*— SM» ДпОо~ И«Ь laaiaaptaaisa Разложени* в ряд Фурьа с анимацией > with(plots): И:-30:t.-х->1.bf > at: —(t,k)- -Heavlside(t-k)«(t-k)-Heavlslde(t-l-k)*(t-l k). > for k to N do bf[kj:-evalf(2*int<«ln(k*Pi*x)*f(x),a-0. . 1)) od: ts:-(I,t) -sue(at(t,n)*bfIn)»sln(n*Pl*x),n-1. H) AT »! > ani*ate(t s (x, t) , x-0 . 1 , t-O. . N, frai*es-3*H, nuapoints-5»H) • Рис. 13.71. Второй (завершающий) кадр анимации Самым интересным в этом примере оказывается наблюдение за зарождением и эволюцией эффекта Гиббса — так называют волнообразные колебания на верши- не импульса, связанные с ограничением числа гармоник при синтезе сигнала С ростом числа гармоник эффект Гиббса не исчезает, просто обусловленные им выбросы вблизи разрывов импульса становятся более кратковременными. Можно ли наблюдать одновременно все фазы анимации? Можно! Для этого востаточно оформить анимационную картину, созданную функцией animate в отдельный графический объект, например g. после чего можно вывести все его фазы оператором display. Это и иллюстрирует рис. 13.72. Для того чтобы все фазы анимации поместились в один кадр н документе (рис. 13.72). максимальное число гармоник уменьшено до N=12. Любопытно отметить, что при определенных числах гармоник связанная с колебательными процессами неравномерность вершины импульса резко уменьшается. Наблюдение этого явле- ния наиболее интересно при просмотре данного примера. 13.11.8. Наблюдение фаз анимации трехмерной поверхности Наблюдение за развитием трехмерной поверхности производит на многих (осо- бенно на студентов) большое впечатление. Оно позволяет понять детали создания ’ложных 30-поверхностей и наглядно представить их математическую сущность, ’ассмотрим анимацию ЗГ)-поверхности на примере рис. 13.73. (ак и для случая анимации 20-графика, большой интерес представляет построе- <ие всех фаз анимации на одном рисунке. Делается это точно также, как для •D-графика. Это иллюстрирует рис. 13.74. На нем показано 8 фаз трехмерной
поверхности cos(t*x*y/3). представленной функцией трех переменных 1, х и у При этом изменение первой переменной создает фазы поверхности. -4>M«pieVRrkMtr 4 |4lou«iri awtj Я t* X*» Fsr* flaws tHo жЛ «мам» Фазы разложение л ряд Фурье при анимации > wlth(plots) Н -1? I—« 1.Ы -jiraytl И) '> л! ; -< t , k) ->H«>avi« ido(t - к) «(t-k) Нил via ldu(t -l-k)*(t-l-k) ’> for к to И do bf(k) -evalf(2*int(яin(k*Pi*X)*f(x) x*0..1)) od:ts:-(x,t)->MB(af(t n)*bf (n)*•in (n4>i*x) ,n-l N) ’> q -animated s<x t ) ,x-0 l,t-0 H . frame—И numpoints— 5*N) :d isplaytg,color—back) Рис 13 72 Иллюстрация получения всех фаз анимации 2Г)-графика Рис 13.73 Анимация ЗО-поверхности Применение анимации дает повышенную степень визуализации решений ряда задач, связанных с построением двух- и трехмерных графиков. Следует отметить, что анимационные графики для построений требуют дополнительных и достаточ-
но существенных затрат оперативной памяти. Поэтому злоупотреблять числом стоп-кадров таких графиков нельзя. Рис 13 74 Фазы анимации ЗО-поверхности
Глава 14. Математическая система Maple V R5 14.1. Комплект поставки и установка системы К моменту завершения рукописи данной книги новейшая версия Maple V R5 появилась о коммерческом варианте, но на Internet-странице фирмы Waterloo Maple по ней были приведены строго дозированные данные. Очевидно, фирма пока опасалась бурной рекламы нового продукта — пример вполне достойный подражания, поскольку несвоевременное описание программного продукта, про- ходящего стадию, апробации чревато серьезными ошибками. Многие из нас сталкивались с этим — «поспешишь, людей насмешишь». Тем не менее фирма Waterloo Maple по первой же просьбе автора предоставила ему новую реализацию своего программного продукта. Благодаря этому появилась возможность познакомить читателя с основными особенностями новейшей реали- зации Maple V R5 еще до того, как Maple V R4 сошла устарела. Важно отметить, что эта реализация R5 пока не реализована на всех платформах — например, для ПК класса Macintosh пока последней остается реализация R4 В этой главе вы познакомитесь с основными достоинствами новой реализации и ее отличиями от предшествующей. Здесь уместно еще раз обратить внимание читателя, что весь материал глав 2 — 13 н равной мере относится как к реализациям R3 и R4, так и R5. Прежде всего отметим, что новая реализация (Maple V R5) поставляется на двух CD-ROM (но н одной упаковке). В комплект поставки входят две объемные книги — учебник по работе с системой |37| и пособие по програм- мированию |38|. Кроме того, поставляются документы по регистрации системы и брошюра с перечнем книг, изданных по системе Maple V за рубежом. Па первом CD-ROM размещена собственно система, а на другом — библиотека расширения SHARE Они инсталлируются отдельно — вначале система, а затем библиотека Никаких проблем с инсталляцией Maple V R5 в среде Windows 95 OSR 2 у автора не возникло. Надо лишь учесть, что для установки новой версии на жестком диске необходимо свободное пространство около 80 Мбайт По окончании инсталляции в меню программ появляется группа, посвященная уста- новленной системе. Она показана на рис. I4.1. При запуске системы (позиция меню Maple V Release 5) вначале появляется временное титульное окно с краткими данными о системе и сроках ее разработки. Это окно на фоне рабочего стола Windows 95 предст авлено на рис. 14.2. Нетрудно заметить, что выпуск данной версии системы датирован ноябрем 1997 года, таким образом, мы описываем программный продукт, только-только появившийся на рынке (эти слова пишутся н начале апреля 1998 года). Вид экрана при работе с системой Maple V R5 с загруженным демонстрационным документом показан на рис. 14.3. С первого взгляда он почти ничем не отличается от экрана, который виден при работе с реализацией R4. Разве что можно отметить
новую позицию Spreadsheets в главном меню, да и ту пока видную н характер- ном «тумане» (т е. в данный момент недоступную) Рис 14 1 Папка с компонентами Maple V R5 на рабочем столе Windows 95 OSR 2. Рис 14 2 Временное титульное окно системы на рабочем столе Windows 95 OSR 2. В целом надо сказать, что ничего революционного в новом версии нет и ее основные возможности вполне, соответствуют описанным ранее в главах I — 13 Тем не менее ряд новых возможностей, естественно, есть, и мы остановимся на их описании ниже. Следует обратить внимание на то, что некоторые из новых ^возможностей (электронные таблицы, перенос обьектов и трансформация графи-
ков в реальном масштабе времени) доступны не на всех компьютерных платфор- мах. Но на современных ПК с операционной системой Windows 95 эти возмож- ности доступны и выглядят впечатляюще. гКм а» » <•«* дди <«п Рис 14 3 Вид экрана при работе с системой Maple V R5 14.2. Отличия в оперативной работе Некоторые отличия в работе с реализацией R5 сразу бросаются в глаза Напри- мер. ввод выражений нормально выполняется с помощью специальных палитр математических знаков и ввода обычных имен переменных (набранных латински- ми буквами) только в поле ввода. Затем уже эти имена переносятся в строку ввода нажатием клавиши Enter. Если палитр не видно, нужно вывести их с помощью операции Palettes в позиции View главного меню. Таким образом. Maple V R5 в этой части интерфейса пользователя стал на один уровень с математическими системами класса MathCAD (в них палитры математических знаков используются давно) и Mathematica 3. Для исполнения выражения уже не надо вводить знак ; (точка с запятой) — достаточно при маркере мыши в строке ввода нажать клавишу Enter. В ожидании ввода после символа > устанавливается знак ? (вопроса) на темном фоне Ввод в поле ввода переносится в строку ввода при нажатии клавиши Enter и выводится символами нормального начертания. Для ввода можно пользоваться палитрами математических знаков, описанными ниже. Однако все это справедливо только в режиме Standard Math, который установ- лен по умолчанию в позиции Options главного меню и в подменю Input Display Если вы уже привыкли к вводу на Maple-языке, то для этого нужно изменить режим Standard Math на режим Maple Notation При этом ввод отображается прямо в строке ввода полужирными символами и исполняемые выражения надо завершать символом ; (точка с запятой). Знак : (двоеточие) откладывает вывод результатов вычислений выражения.
А вот вместо знака " (кавычка) для задания эволюции предшествующего выраже- ния в Maple V R5 используется знак % (процент). Можно применять до трех таких знаков. Эта тонкость в первый момент сбивает с толку пользователей прежних версий Maple V, но к этому быстро привыкаешь. Существенно повысилась роль управления системой с помощью мыши. Теперь, как во всех приличных Windows-приложениях, ее правая клавиша при нажатии выводит контекстно-зависимое меню, содержащее доступные по контексту опера- ции (они будут рассмотрены более подробно ниже). Это позволяет реализовать метод работы «ввел выражение — нажал кнопку — получил результат*. В частности, можно выполнить сразу доступные для заданного выражения символьные преобразования, быстро построить график функции с титульными надписями и т.д. Реализован в Maple V R5 и принцип «Drag and Drop» (Тащи и Отпускай). Для выделенного объекта, нажав левую клавишу мыши и удерживая ее нажатой, можно перетащить объект на новое место, например на другую строку в данном или в другом документе (при условии, что окна документов развернуты и видны одновременно на экране). Для установки объекта на новое место достаточно отпустить левую клавишу мыши. Таким образом, обеспечивается механизм объектной связи, известный, как OLE 2. В процессе перетаскивания маркер мыши превращается в жирную окружность, перечеркнутую символом \ в исходном блоке, или в обычный курсор мыши с туманным прямоугольником у основания при переходе в иной блок (куда объект переносится). Если вы хотите, перетаскивая объект, оставить его и на прежнем месте, то делайте это при нажатой клавише Ctrl. В этом случае к упомянутому туманному прямоугольнику добавляется отметка в ниде маленького крестика. Заметим, что объектом могут быть не только целые выражения, но и их части или даже группы объектов — словом, все, что может быть выделено. 14.3. Работа с электронными таблицами Одно из важных отличий Maple V R5 от предшествующих версий — это возможность работы с электронными таблицами. Для задания электронных таблиц в главном меню в позиции Insert появилась операция Spreadsheets (вставка шаблона электронной таблицы). При исполнении этой операции появля- ется типичный шаблон электронной таблицы (рис. 14 4). Нетрудно заметить, что вид электронной таблицы вполне соответствует типовому для современных программ класса табличных процессоров, например Exel из пакета Microsoft Office. Таким образом, произошло сближение математической системы Maple V с еще одним важным классом программ. Как обычно, в ячейки таблиц могут вводиться числовые денные (рис. 14.4). Ячейки характеризуются своим адресом — буквой столбца и номером строки. Внутри таблицы курсор мыши превращается в жирный крест и его можно использовать для указания нужной ячейки и фиксации в ней ввода. При этом ввод данных в выделенную ячейку производится их набором в специальной инструмен- тальной строке для работы с таблицами (поле ввода занимает цбольшую часть этой панели). Нажав правую клавишу мыши, можно вывести контекстно-зависи- мое меню с рядом операций, доступных для заданной ячейки.
Рис 14 4 Шаблон электронной таблицы Для работы с таблицами в главном меню Maple V R5 появилась отдельная позиция Spreadsheets (рис. 14.5). Она содержит набор операций, обеспечиваю- щих работу с табличными данными |11М«М|7|| ЯП В » в t -] Д в ЙО I у» |[«йГ 8'^ | Дг | Р» |________I °* •• э Рис. 14.5 Вид экрана Maple V R5 с открытой позицией Spreadsheets главного меню Как видно из рис. 14.5, в состав этой позиции входят следующие операции: Evaluate Selection Эволюция выражения в выделенной ячейке Evaluate Spreadsheet Эволюция выражений по всем ячейкам таблицы. Row Работа со строками (вставка, удаление и т.д ).
Column Работа co столбцами (вставка, удаление и т.д.) Fill Заполнение ячеек (в том числе автоматическое в заданном направлении) Properties Просмотр свойств ячеек Show Border Включение или выключение показа обрамления таблицы. Resize to Grid Выделение таблицы для изменения ее размеров Возможности Maple V R5 в обработке табличных данных намного превосходят общеизвестные из опыта работы с обьнными табличными процессорами Послед- ние мы не будем рассматривать, так как по ним имеется много литературы и заинтересованный пользователь легко разберется с соответствующими возможно- стями Maple V R5 Отметим лишь принципиально новые возможности — работы с символьными данными в ячейках таблицы. Это иллюстрируется рис. 14.6. Рис 14 6 Работа с символьными данными в электронной таблице Таблица на рис 14.6 содержит три столбца: с исходными выражениями, записью инертной формы интеграла, в подынтегральную функцию которого входит исход- ное выражение и экспоненциальный множитель и исполняемая запись интеграла. Обратите внимание на запись интеграла в строке ввода и в самой таблице. Например, для записи инертной формы интеграла в строку ввода надо ввести следующую запись: lnt(exp(x)*'A5,x) Это означает задание вывода интеграла с подынтегральной функцией в виде е*х, умноженной на содержимое ячейки А5, причем А — положение столбца, а 5 — номер строки Таким образом, А5 есть адрес ячейки, из которой (указано символом ’) выбирается заданное выражение. Исполнив команду эволюции для этой ячейки (или для всей таблицы), можно получить выражения в следующих двух позициях справа от выбранной ячейки.
14.4. Использование палитр математических символов Отдельные палитры ввода (или наборные панели), выводимые в любое место экрана по желанию пользователя, были введены в ряд современных математиче- ских систем (например, MathCAD 6.0/7.0 и Mathematica 3) и показали себя весьма удобными средствами пользовательского интерфейса, позволяющими вво- дить специальные знаки и символы (шаблоны операций) простым их указанием курсором мыши и нажатием ее левой кнопки. Теперь такие палитры приобрела и система Maple V R5 (рис. 14 7). I ^лал йд Iу» (1^ГЦо |*° II_____I и» Рис 14 7 Работа с палитрами математических символов и операций К сожалению, заполнение шаблонов в операторах, выбранных с помощью палитр, константами и именами переменных, все же приходится выполнять в поле ввода, подтверждая их ввод нажатием клавиши Enter. Да и набор символов в палитрах ограничен, а сами они выглядят мелковато даже при стандартном разрешении дисплея 640x480 пикселей. На рис 14.8 показана отдельно палитра ввода математических символов и операторов. Рис 14 8 Палитра ввода математических символов и операторов
На рис. 14.9 показана еще одна палитра — на этот раз для ввода больших и малых греческих букв Она заметно облегчает ввод таких букв, широко используемых для обозначений математических констант и переменных. Ранее для ввода греческих букв приходилось применять специальные комбинации клавиш, а в реализации R5 теперь достаточно просто указать нужную букву курсором мыши и щелкнуть ее левой клавишей. Рис 14.9 Палитра греческих букв Имеется также палитра ввода матриц. Она показана на рис. 14.10. С ее помощью можно быстро вводить шаблоны матриц различного размера — от одного до шестнадцати элементов в матрице. Возможно задание также векторов различного типа — в строку и в столбец. Рис. 14.10 Палитра ввода шаблонов матриц. Удобство применения палитр связано с тем, что их можно поместить в любом (обычно наиболее удобном) месте документа и вводить соответствующие матема- тические знаки, символы или шаблоны простыми и удобными средствами (с помощью мыши). В верхнем левом углу каждой палитры имеется единственная небольшая кнопка со знаком «-» в прямоугольнике. Она служит для закрытия палитры после того, как отпала необходимость вводить имеющиеся в ее составе знаки. Закрывать неиспользованные палитры целесообразно, поскольку они зани- мают место в окне документа и могут мешать его обзору. Итак, можно сделать вывод, что альянс разработчиков MathCAD (фирма MathSoft Inc.) с фирмой Waterloo Maple для последней оказался плодотворным — помимо включения ядра Maple V в новые версии систем класса MathCAD, в новую реализацию Maple V R5 были включены палитры для многих математических символов и операций. 14.5. Трансформация графиков в реальном масштабе времени В Maple V R5 введена новая и безусловно важная возможность — трансформация SD-графиков в реальном масштабе времени. В прежних версиях выделенный
график заменялся параллелограммом, который можно было вращать мышью. Однако сам график на время трансформации просто исчезал и для его перестрой- ки надо было запускать пиктограмму с буквой R (Redraw) Процесс перестройки графика даже на достаточно производительных ПК (класса Pentium 200) шел несколько секунд. Похоже, разработчикам новой реализации системы удалось существенно уско- рить алгоритмы перестройки ЗВ-графиков. что позволило реализовать вращение фигур в пространстве в реальном масштабе времени Рис 14.11 показывает, как это происходит. Г Псетроехже графжгд перссстивс-щихся доверхжсстей I plot 3d( | 2М1п(х*у) • 1 х 2 ♦ 2*у’2-5) .ж—14 Pi,y--Pi Pi) Рис 14 11 Трансформация ЗГЗ-графнка в реальном масштабе времени Хотя некоторая инерционность процесса перестройки заметна даже при работе на ПК с процессором Pentium 200 MMX и с ОЗУ 32 Мбайта, ощущение от реального поворота фигуры остается вполне отчетливым. Эта возможность позво- ляет быстро найти оптимальный угол зрения на фигуру, при которой се особен- ности, например пики и впадины, выявляются в наиболее полной мере Заметно существенное улучшение и алгоритма построения линий пересечения сложных фигур в пространстве. Наглядная и эффектная функциональная окраска фигур выполняется теперь по умолчанию. К сожалению, при использовании созданных ранее в реализации R4 сложных графических объектов (в виде нескольких компонентов) этот алгоритм иногда дает сбои. Пример такого случая показан на рис 14.12. В данном случае тор вращается сам по себе, в результате обмотки оказываются не на нем, а где-то в стороне. Возможно, что это вызвано именно тем. что исходный документ готовился в предшествующей реализации системы. Кстати, при попытке загрузки файла от предшествующей реализации системы выводится окно с предупреждающей над- писью и предлагает преобразовать файл в формат, присущий новой реализации Это окно показано на рис. 14.13.
В Е» I* >- 1 и» f bww. awp _[д| Ж| ДГ19Г^ WsiraWJi М№»Г*1 Ln)__________________________________ Задание ipn iprtMtpHbtx графикой и ip«* рашых стилях [> Wltlifplol я) Я [> opt» - t-0 ?»Pl.nunpolnt»-100.iadlus-2- [> pl - tubeplot ( I cow (t ) »ln(t) .0] .opt» . stylo-VATCH) . [> P* - tubeplot(|0.ooa(t) alntt)) opts stylo-POIHT) [> p3 - tubeplot(lalu(t),O.eoa(t)j opts. »tylo-coWTOUR) f> di«|>lay((pl,p? p3|) Рис 14 12 Сбой трансформации сложного ЗВ объекта Ответьте «Да», если вы намерены преобразовать файл, и «Нет» при отказе от этой операции В целом можно считать, что Maple V R5 вполне обеспечивает совме- стимость файлов документов с предшествующей версией системы Рис 14 13 Окно, сообщающее о загрузке файла предшествующей реализации и необходимости его преобразования 14.6. Контекстно-зависимое меню операций Сторонников легкой работы с системой (надеемся, что и вы. читатель, относитесь к таковым) порадует еще одна, хотя и не принципиальная, но очень полезная возможность — контекстно-зависимое меню операций (в том числе математиче- ских) Она реализуется нажатием правой клавиши мыши при указании маркером мыши заданного объекта.
На рис. 14 14 показан экран системы и контекстно-зависимое меню, относящееся к введенному выражению sin(x)/x, находящемуся в строке вывода. При этом меню дает перечень операций, которые можно делать с этим выражением — например, дифференцировать, интегрировать, строить график и т.д. _________________________________________________________g У Jtil Дц. I ум. | | »нс |(<У~ taw! V* ь Л Рис 14 14 Контекстно-зависимое меню для математических выражении Если маркер мыши стоит в строке ввода, то появляется меню, представляющее основные операции по работе с текстами. Окно этого меню показано на рис. 14.15. Вводимые им операции не нуждаются в особых комментариях Styles {take CtrM 9od Ctrl+B Underline Ctrl*U ✓ Lett Justify Center Right Justify Paagraph.. Character... Indent Cltl*. Qutdent Ctrl+, Concert to ► Рис 14 15 Меню для работы с текстами
Применение контекстно-зависимых меню облегчает работу с системой и делает ее похожей на работу н среде современных программных средств под Windows 95. В целом оно реализует принцип «ввел выражение — нажал кнопку — получил результат*. 14.7. Быстрое построение графиков Быстрое построение 2D- и ЗЭ-графиков — еще одна приятная «мелочь» новой реализации Maple V R4. облегчающая визуализацию вычислений. Ее тоже можно реализовать с помощью контекстно-зависимого меню. Достаточно вызвать его для выбранного выражения, как с помощью операции Plot можно построить график. При этом система Maple V R5 сама определяет (по виду выражения), какой же график надо строить. Рис. 14.16 показывает быстрое построение графика функции sin(x) /х указанным способом При этом вам даже не надо помнить, какой функцией обеспечивается построение графика. В дальнейшем оформление графика можно изменить опера- циями форматирования. Рис 14 I6 Быстрое построение 21>графнка функции одной переменной Кстати говоря, в позиции главного меню Options появилась новая операция Print Quality — качество печати (рис. 14.16). Она позволяет выбрать три степени качества печати: High (высшее). Normal (нормальное) и Draft (черновое). Столь же просто обстоит дело с построением иных графиков. Так, на рис. 14.17 представлено построение ЗО-графика функции двух переменных — sin(x*y/5) При этом можно воспользоваться описанным ранее приемом — трансформацией графика в реальном масштабе времени для получения наивысшей выразительно- сти графика. Maple V R5 имеет ряд дополнительных функций для такого рода построений. Две из них видны на рис. 14.16 и 14.17. Это функции smartplot и smartplot3d. С другими можно ознакомиться с помощью справочной системы.
Рис 14.17. Быстрое построение 31>графика функции двух переменных 14.8. Расширяемое меню справочной системы Уже отмечалось, что справочная система реализации R5 вновь приобрела харак- тер расширяемого тематического поиска, реализованного с помощью меню, содержащего до пяти уровней поиска. Это хорошо видно при просмотре рис. 14.18. на котором показан сеанс работы со справочной системой СаШпС Sequent»: геп»иЧ^Ь)«Ч, atey) Parameter»: object - a in. a tabi». ® «иау Descriptinn: -I К xarap les: Т f> tranenrt ( IU,Z>. 13.4) J , array) Д||Ч«| | тун | ДО 11»» |i<M Др I Jh. r>* ’<-» Рис 14 18 Работа co справочной системой Maple V R5 Maple V R5 имеет также обучающую систему и справку по новым возможностям. Они реализованы аналогично основной справочной системе. Описание всех справочных компонентов дано на английском языке, но оно настолько лаконично,
что многие детали описания вполне понятны даже для пользователей, имеющих начальные и средние уровни владения английским языком. 14.9. Подготовка HTML-файлов для передачи по сети Internet Пожалуй, одним из самых важных отличий реализации R5 стала возможность подготовки в ней полноценных HTML-файлов, которые можно передавать по сети Internet. Maple V и ранее позволял использовать в своих документах гиперссылки, которые являются основой формата файлов HTML Однако средства записи (экспорта) файлов в этом формате появились только в реализации Maple V R5. Для подготовки HTML-файлов сначала в среде Maple V R5 готовится обычный документ. Затем для записи его используется операция Export As... (рис. 14. 19). В появившемся подменю надо выбрать позицию HTML. Рис. 14 19 Подготовка к записи документа в формате HTML После выбора указанной позиции появляется окно для выбора места записи файла (диска, папки) и задания имени файла. Выполнив эти операции, надо активизи- ровать кнопку ОК в окне (рис. 14.20). В процессе записи HTML файлов Maple переводит рисунки в формат GIF с 256 цветами. Текст файлов (включая математические выражения) преобразуется в форматы, применяемые в языке HTML описания файлов для сети Internet. Заметим, что этот формат поддерживает некоторые из возможностей Maple-доку- ментов, такие, как гипертекстовые ссылки и указания на взаимное расположение различных объектов документов На рис. 14.20 показан вид созданного таким образом документа н окне одного из самых распространенных Internet-браузеров — Microsoft Internet Explorer. Не- трудно заметить, что все элементы документа воспроизводятся нормально без искажений и нарушений взаимного расположения.
Если документ содержит гиперссылки или имеет так называемую электронную форму (с заголовками в отдельном окне), то эти элементы сохраняются и формируются электронные заголовки документа. При отсутствии заголовков в этом окне отображается имя файла Подготовка документов в формате HTML значительно расширяет возможности обмена документами по сети Internet и организации совместной работы над сложными математическими проектами. > м.-рхос<х) it ilntz)‘О then sln(x) axn(x) tl oud и -рг<ичт)1Г < ei(x then ti.<T: elie Iiu* fi*Bd Г> plot (m, 15 15 .color—back) Рис 14 20 Окно для указания места записи и имени файла Построение график» кусочных фу» с-и* заданных процедурами > ж =ргег(т» 1Г toHrbO rh«* rin(xl emlx) П end w = yr nr (х) if '> < sim ,r i dien ИИ« I else -Unix > E end » t pencil) if x >2 th*» 61 rbn 2 6 end S pron r if . « r then ♦ • rice T П end » plow 2..” et»hn-b*ck). ЮЯ Рис 14.21 Вид Maple-дакумента в окне браузера Microsoft Internet Explorer
14.10. Интеграция с системой MatLAB 5.0 Многим пользователям математических систем хорошо знакома интерактивная система MatLAB фирмы MathWorks. Inc. (США, г Нейтик. штат Массачусетс) (I3.l4.36]. Ее название происходит от слов Matrix Laboratory — матричная лаборатория За многие годы своего развития эта система стала мировым лидером среди систем, ориентированных на численные расчеты, которые она выполняет заметно быстрее многих других систем Новая версия MatLAB 5.0 это шедевр вычислительной математики. Она имеет огромное число поклонников во всем мире, несмотря на то, что ее стоимость (в варианте под Windows) приближается к трем тысячам долларов! Было бы неразумно пытаться обойти эту мощную систему в части эффективности выполнения численных расчетов — особенно матричных. Поэтому разработчики ряда других математических систем избрали более тонкий и умный путь — интеграции с MatLAB Так и система Maple V R5 автоматически интегрируется с MatLAB 5.0 при установке обеих систем на ваш ПК Maple V R5 имеет довольно большое число функций системы MatLAB 50, которые вызываются как библиотечные функции пакета matlab. После этого они становятся доступными для применения в документах Maple V R5 — совместно с имеющимися в последней системе функциями. 14.11. Internet-страница фирмы Waterloo Maple Internet — глобальная сеть мирового значения, своей электронной паутиной WWW (World Wide Web) охватившая весь земной шар. По существу это совокуп- ность огромного числа компьютерных сетей, работа в которых происходит по специальным согласованным протоколам, обеспечивающим высокую вероятность передачи информации конечному абоненту при выходе из строя многих ветвей связи Для подключения к сети Internet владелец современного ПК должен установить на нем модем и через него подключиться к обычной телефонной сети. Это делается с помощью организации — провайдера, предоставляющей за опре- деленную плату услуги Internet. Для обзора сети Internet и организации связи (например, электронной почты E-mail) служат специальные программы — брау- зеры, примеры работы с которыми уже приводились. Получив доступ к Internet пользователь приобщается к огромному океану разно- образной информации Она обычно имеет вил гипертекстовых страниц (сайтов). Каждая страница имеет свой уникальный адрес. Здесь мы кратко рассмотрим лишь страницу фирмы Waterloo Maple — разработчика систем класса Maple V. На рис. 14.22 показана так называемая домашняя страница этой маститой фирмы. Обратите внимание, что в строке адреса браузера Microsoft Internet Explorer 4 0 (кстати именуемого уже обозревателем) указан адрес данной страницы. Эта страница дает доступ к другим подчиненным ей страницам, например бесплатного программного обеспечения (Download), серийных продуктов (Pro- ducts), сообщений прессы (Press), сведения о корпорации Maple Software (Corpo- rate), данных о книгах по системе (Library) и др. Эти страницы несут огромный объем информации — например, в странице Library можно найти данные и аннотации по сотням книг по системе Maple V. изданных за рубежом и разбитым на ряд разделов (математика, физика, электротехника, механика, астрономия и
тд.) На рис 14 23 показан результат поиска информации о системе Maple V R5 на странице Products (продукты) D Wek.». Io W«<xkx> М ’ Adventana Ма >«моГ1 Iprte'iwtf t «ркме' Орлвм Перяр-я Иэврмвое- 'гряагл Q-Ж *. . о □ с ® а з v S Иамв Осг»«ж ОО*лм Леса ЛзОрвг » 1м*. iUmc Пакт* *ЯР» | '-«Ьк* Нм »; Саи» • ГОНГАМ »ИАЯ<» »IIM’ACX • НИХ HIIJVIM W.K.-tlin> Maple ► aaotHxrs j » *vmts a »«« Mmw W M«mv btuoarn MMnve* CMC Slarava Meir ММГ DOcxW) Ефг«маж*1 нажни • LIBR.RV • CAREERS » CUSTORfR CffITER ► products er «СТТМ1 3 « Зои» Иитесмгта ‘J _J A J IffiUbWP | | ЯД ; Tj J№ Рис И 22 Домашняя страница фирмы Maple Software япп В —— — *-1 -J | I PRODUCTS ) 3 чооки« tv «» « • **OUX6 « ЛМА1Г< 'MlltlA nrn <WI» « мдеьсулв дс*ки- < Waterloo Марк* J-------------IX Ou"С» Lin* Jwstenoc Mot'e РтосЬсч В Maple V Release 5 Camalate Nathemailr* and Vteualliailna Чуваш < лмаИмцрчм ftn— Я» I ДГ1И6М» Il »1 toy И Дг^г- | «В ' V Рис. 14 23 Начало раздела с данными о новейшей реализации системы Maple V R5 Многих пользователей (особенно наших) особенно заинтересует раздел с назва- нием Download Он открывает доступ к так называемому файловому серверу FTP, с которого можно вполне легально (а главное бесплатно’) переписать самое разнообразное программное обеспечение: демонстрационные и рабочие версии различных программных продуктов, библиотеки их расширения, инструменталь-
ные средства для отладки и многое другое. На рис. 14 24 представлена одна из страниц FTP сервера фирмы Maple. Рнс 14 24 Одна из страниц FTP-сервера фирмы Maple Software Внизу этой страницы, кстати, хорошо видно предложение о копировании Maple V R4, занимающей в упакованном виде 2348 Кбайт. Мы обращаем внимание на это в связи с тем, что (к сожалению) далеко не всякая электронная почта в Internet способна «перекачать* на жесткий диск ПК файл такого размера. Да и время «перекачки» достигает около часа даже при вполне приличном модеме. Сам процесс перекачки очень нагляден и показан на рис. 14.25. Файл, который перекачивается на диск, ассоциируется с листком бумаги, перелетающим из папки в FTP-сервере в папку на жестком диске ПК Рис. 14 25. Иллюстрация перекачки файла с FTP сервера на жесткий диск ПК
Страницы фирмы Maple содержат адреса электронной почты как самой фирмы, так и сотрудничающих с ней фирм и даже отдельных лиц. Так что вы. имея доступ в Internet, можете наладить полезные связи с зарубежными приверженцами системы Maple V и приступить к совместному выполнению интересных и полез- ных проектов. На страницах фирмы можно найти последние новости о модернизации выпущен- ных программных продуктов и о разработке новых, данные о проводимых семина- рах и иных мероприятиях Можно даже найти предложения о работе на фирме в качестве разработчика программных продуктов или менеджера по их реализации.
Заключение Итак, вы познакомились с новейшей математической системой компьютерной алгебры — Maple V R3/R4 и даже R5. Безусловно, последняя реализация системы Maple V R5 заслуживает подробного отдельного описания в посвященной специально ей книге, но и в этой книге о ней дается довольно полная информация. К тому же материал центральных глав книги (от 9 до 13) подготовлен так, что его восприятие вообще не зависит от компьютерной платформы, на которой установлена система Maple V — даже если это MS-DOS платформа, все еще цепляющаяся за свое существование на белом свете. Система Maple V заслужила всеобщее признание во всем мире Не случайно ее символьное ядро использовано в системе MatCAD начиная с версии 3.0 и кончая последней MathCAD 7.0 PRO. Используется оно и в модуле символьных операций системы MatLAB 5.0. На базе объединения Maple V и текстового редактора MS Word 6.0 появилось автоматизированное рабочее место Math Office for Word 6 0 для подготовки научных книг, статей и докладов А на базе текстового редактора с научной ориентацией Scientific Word фирмы TCI Software Research появился другой подобный продукт — Scientific Work Place. Есть и другие разработки таких систем Можно заметить, что математические системы развиваются в направлении интегрирования друг с другом. Особенно привлекательна такая интеграция с «царем» программ численного моделирования — матричной системой MatLAB 4.0/5 0. В частности, интеграция с MatLAB 5.0 уже достигнута в системе Maple V R5 Интенсивно идет оснащение математических систем средствами для работы в Internet. В этом отношении последняя реализация Maple V R5 находится на должной высоте Связь пользователей этой системы друг с другом через Internet открывает возможности эффективного международного сотрудничества и совме- стной работы над крупными математическими проектами и ничем не ограничен- ного обмена идеями и документами Maple V. Математические системы постепенно превращаются в мощные «живые» справоч- ники по всем вопросам математики с множеством примеров, которые могут немедленно выполняться и модернизироваться. Они вобрали в себя математиче- ские познания, накопленные за многовековую историю развития математики. Об этих системах можно говорить, как о наиболее высокоинтеллектуальных програм- мных системах, способных выдавать результаты в аналитической форме и выпол- нять сложнейшие математические преобразования. Особо надо отметить выдающиеся графические возможности новых математиче- ских компьютерных систем Они обеспечивают наглядную визуализацию решений как простых, так и сложных задач. Чего стоит, к примеру, возможность системы Maple V R5 в реальном масштабе времени «вращать» мышью сложнейшие математические трехмерные поверхности и фигуры, пересекающиеся в простран- стве и играющие всеми цветами радуги, благодаря применению функциональной окраски
Системам класса Maple V принадлежит особая роль в науке и в образовании. Название «математические системы» сильно принижает эту роль. На самом деле эти системы с равным успехом могут использоваться не только в решении чисто математических задач, но и фундаментальных и прикладных задач в области физики, химии, астрономии, биологии — словом, в любых областях науки и техники, где применяются современные математические методы и где важна наглядная графическая интерпретация и визуализация объектов и явлений. Роль математических систем в технике, в науке и в образовании из года в год растет. Поэтому у нас, в России, весьма актуален выпуск самых различных книг по таким системам. Пока он намного отстает от публикаций книг в передовых странах Запада. Автор надеется, что его книга будет способствовать ликвидации такого пробела и привлечет внимание к системе Maple V как профессиональных математиков, так и всех пользователей ПК. Тем более что речь идет о системе, уверенно претендующей на мировое лидерство среди систем компьютерной алгебры. И о системе, к которой невероятно большое число возможностей дает простой и удобный доступ к ним для всех — от школьника до академика.
Приложение 1. Функции ядра и основной библиотеки системы Maple V Ниже приведен полный перечень функций ядра и основной библиотеки системы Maple V R4. Кратко сообщается и назначение функции. Имя функции Описание abs Абсолютная величина выражения add Складывает выражения. addcoords Прикладывает новую координатную систему. addressof Дает адрес функции Aiactor Инертная абсолютная факторизация. Alactors Инертная абсолютная факторизация для полинома нескольких пере- менных. AiryAi Функция Эйри Ai Airy Bi Функция Эйри Bi alias Определяет сокращения или обозначения (альтернативное имя). algebraic Означает алгебраический тип выражения algsubs Заменяет подвыражение в выражении. allvalues Определяет все возможные величины выражения, включающие RootOITs. anames Дает последовательность назначенных имен. AngerJ Функция Ангера antisym Антисимметричная индексная функция. applyop Прикладывает заголовок функции к заданному подвыражению. appendto Записывает выход в файл в режиме дополнения arccos Обратный косинус. arccosh Обратный гиперболический косинус. arccot Обратный котангенс arccoth Обратный гиперболический котангенс arccsc Обратный косеканс. arccsch Обратный гиперболический косеканс. arcsec Обратный секанс arcsech Обратный гиперболический секанс. arcsin Обратный синус. arcsinh Обратный гиперболический синус. arctan Обратный тангенс. arctanh Обратный гиперболический тангенс.
Имя функции Описание array Создает множество. assign Производит назначения для имен. assigned Проверяет назначение для заданного имени , asspar Параметрические свойства для assume assume Задает свойства и области определения переменных. assubs Подставляет подвыражение в сумму asympt Выполняет асимптотическое разложение функции (x->rnlintty). attribute Возвращает атрибут (см. setattnbute) Berlekamp Особая факторизация полиномов Besseil.J Функция Бесселя 1 и J первого рода. BesselK.Y Функция Бесселя Ки Y второго рода Beta Бета-функция bemstein Функция аппроксимации полиномов Бернштейна Bi Волновая функция Эйри. binomial Возвращает биноминальные коэффициенты. branches Графическая функция для ветвей функций многих переменных bspline Вычисляет В-спланн функцию для сегмента полинома. C Генерирует колы языка С. cat Соединяет выражения (строки). ceil Наименьшее целое, большее или равное аргументу chebyshev Разложение в ряд Чебышева Chi Гиперболический интегральный косинус. chrem Реализует алгоритмы Чайнза Ремайндера Ci Интегральный косинус close Закрытие файла. coeif Извлекает коэффициенты полинома coeffs Извлекает все коэффициенты полинома нескольких переменных coeftayl Коэффициенты ряда Тейлора collect Собирает коэффициенты при одинаковых степенях. CompSeq Сравнивает вычисляемые последовательности (ряды) combine Объединяет несколько членов выражения в один commutat Процедура коммутации. comparray Сравнение двух массивов или списков compoly Определяет возможный состав полинома conjugate Ком плексно-сопря жен ное ч исло. Content Инертная форма функции content contend Возвращает содержание полинома нескольких пе,>емениых convergs Задает вывод на печать непрерывных дробен
Имя функции Описание convert Преобразует выражение к различным формам coords Координатная система графиков copy Создает копию множества или таблицы cos Косинус cosh Гиперболический косинус. cot Котангенс. coth Гиперболический котангенс CSC Косеканс cscb Гиперболический косеканс csgn Знак вещественного или комплексного числа D Дифференциальный оператор cl aw son Интеграл Даусона define Определяет характеристики имени оператора degree Определяет степень полинома denom Знаменатель выражения Desol Структура данных, представляющих решение дифференциальных уравнений Det Инертней форма детерминанта матрицы depends Тестирование математической зависимости diagonal Диагональная индексная функция Diff Инертная форма производной diff Производная dilog Функция — дилогарифм dmterp Вероятностная степенная интерполяция Dirac Функция Дирака disassemhe Прерывает объект discri tn Возвращает дискриминант полинома dismantle Вывод Maple-структуры данных в форме DistDeg Степень факторизации Divide Деление полиномов (инертная форма) divide Деление полиномов dsolve Решение обыкновенных дифференциальных уравнений Ei Экспоненциальный интеграл Eigenvals Вычисляет собственные значения и векторы числовых матриц eliminate Исключение переменных из уравнений. ellipsoid Поверхность вллипсоила EllipticCEtn, C.R.Cpi.E.F.K. Modulus, Nome.Pt Эллиптические интегралы
Имя функции Описание entries Элементы таблицы или множества eqn Преобразует выражение для распечатки в файл erf Функция ошибок erfc Дополнительная функция ошибок eulermac Суммирование Эйлера-Маклорена Eval Эволюция выражения (инертная форма) eval Эволюция выражения eval a Вычисление алгебраических полей evalapply Запанный пользователем контроль над применением функций evalb Вычисление Булевых выражений evalc Символическое вычисление комплексных выражений evall Вычисление с использованием арифметики с плавающей запятой evalfint Численное интегрирование. evalhf Вычисление с использованием машинной точности при операциях с плавающей запятой evalm Эволюция матричного выражения evaln Эволюция имени evalr Эволюция выражении с применением интервальной арифметики exp Экспоненциальная функция Expand Инертная форма функции expand expand Разложений выражений expandoff Запрет расширения для выражения expandon Отмена запрета на расширения для выражении extract Извлечение элемента из очереди. Factor Инертная форма функции factor factor Факторизация выражений factors Факторизация для полинома с многими переменными. Factors Инертная форма функции factors FFT Быстрое прямое преобразование Фурье (close Закрывает буферизованный файл leof Определяет текущую позицию файла как конечную (flush Закрывает буферизованный файл (ilepos Устанавливает или возвращает текущую позицию в файле fixdiv Вычисление фиксированного делителя для полинома float Представление числа с плавающей точкой floor Наибольшее целое, меньшее или равное числу (normal Нормализация при плавающей запятой. (open Открытие буферизованного файла для считывания или записи
Имя функции Описание forget Устраняет ввод из таблицы памяти fortran Возвращает выражение в коде Фортрана [print! Выводит данные из файла в строчном формате frac Дробная часть выражения freeze Заменяет выражение именем (remove Уничтожает файл с заданным именем FresnelC,S.i,g Интегралы Френеля Frobenius Инертная форма функции Фронебиуса frontend Переводит выражение в рациональное fscanf Выполняет грамматический разбор выражения из файла и представля- ет его в строковой форме [solve Решает уравнение с использованием арифметики с плавающей запятой galois Вычисляет группы Галуа неприводимых полиномов GAMMA Неполная гамма-функция Gau&AGM Гаусса арифметическое геометрическое среднее Gaussjord Инертная форма для Гаусса-Джордана исключения переменных. Gaussehm Инертная форма для Гауссова исключения переменных gc Собирает ненужные данные. Ged Инертная форма функции ged ged Возвращает наибольший общин делитель полинома Gcdex Инертная форма функции gcdex gcdex Обобщение алгоритм Эвклида для полиномов. genpoly Генерирует полином из целого числа л путем 7.-адиаметрального разложения HankelHl.H2 Функции Ханкеля has Тест на присутствие подвыражений в выражении. hasiun Выполняет тестирование функции со спецификацией hasoption Выделяет опции из списка или множества опции hastype Тест на присутствие подвыражений заданного типа выражений heap Структура данных приоритетной очереди history Сохранение истории идя всех вычисленных значений hypegeom Гипергеометрнческая функция iFFT Быстрое обратное преобразование Фурье Heaviside Hermite Функция Хевисайда Полином Эрмита (content Дает целочисленное содержание полинома identity Тождественность индексной функции iged Наибольший общий делитель целых чисел
Имя функции Описание tgcdex Расширенный алгоритм Эвклида для целых чисел. ikm Наименьший общий делитель целых чисел. Dog Целочисленный логарифм по заданному основанию iloglO Вычисляет целую часть десятичного логарифма Im Дает мнимую часть функции. implkitdifl Дифференцирование функции, определенной в уравнении ini fen Выводит список функций ininame Выводит список имен констант. initialize Инициализации приоритетном очереди. insert Вставка элемента в очередь Indep Инертная форма проверки независимости indets Находит неопределенности в выражении. index Выводит сообщение о разделах индексного поиска indexed Индексированное имя indices Индексы таблицы или множества Int Инертная форма функции int int Интеграл функции interlace Установка или запрос пользователя переменных интерфейса Interp Инертная форма функции interp. mterp Полиномиальная интерполяция Inverse Инвертирование функции invfunc Таблица обратной функции invztrans Обратное z-преобразование «►status Отображение статуса всех файлов. iperipow Целочисленная точная степень. iquo Целая часть частного от деления чисел iratrecon Рациональная реконструкция выражения irem Остаток от деления чисел. iroot Целочисленная n-ая степень. Irreduc Инертная форма функции irreduc irreduc Тест для неприводимых полиномов iscont Тестирует интервал на непрерывность. isdiflerentiable Тестирует функцию из кусков — piecewise isolate Удаляег (изолирует) выражение в левой части равенства. ispoly Тестирует полином на соответствие полиному с заданной степенью isqrlree Освобождение от корней isqrt Целочисленный квадратный корень issqr Тестирует выражение на соответствие квадратному корню
... Имя функции Описание Issimilar Тестирует матрицу на подобие JacobiAM.CD.CN.CS. DC.DN.DS.NC.SN Функции Якоби JacobyTheta 1,2,3 Тзета-функиии Якоби KclvinHei.Her.Kei.Ker Функции Келвина LambertW Функция Ламберта latex Выводит выражение в форме 1дТеХ Lem Инертная форма функции 1cm 1cm Находит наименьший общин множитель полинома Icoeff Находит старший коэффициент полинома нескольких переменных leadterm Старший член разложения в ряд LegendreE.Ec.Ecl.F. Kc.Kcl.Pi.Pfc.Picl Функции Лежандра length Длина объекта (строки) lexorder Тест на лексикографическую упорядоченность имен Ihs Левая сторона выражения Li Логарифмический интеграл Limit Инертная форма функции limit limit Предел функции (выражения) Lin solve Инертная форма функции для решения систем линейных уравнений In Натуральным логарифм InGAMMA Логарифмическая гамма-функция log Логарифм с любым основанием loglO Десятичный логарифм Ipnnt Вывод выражения в одну строку map Применяет процедуру к каждому операнду списка map2 Применяет процедуры к каждому операнду списка Maple_floats Выводит данные о Maple-формате чисел с плавающей точкой match Сравнение выражения с образцом (шаблоном) matrix Используется для указания на работу с матрицами max Максимальное из данных чисел maximize Вычисляет максимум выражения maxnorm Для заданного полинома находит коэффициенты с максимальными абсолютными величинами maxorder Базисный интеграл MeijerG G-функция Мейера | member Тест, устанавливает принадлежность к системе или к списку J min Наименьшее из заданных чисел 1 minimize Выполняет минимизацию выражения
Имя функции Описание minpoly Находит полином заданной степени с заданным минимумом MOLS Взаимным ортогональный Latin-квадрат rnodp Вычисление по целочисленному модулю m modp) Одномерный полином по арифметическому модулю п. modp2 Функция двухвариантной полиномиальной арифметики по модулю р modpol Эволюции я(х> над Zp|x|/(blxl) mods Вычисление по целочисленному модулю т. 1 . msolve Решение уравнений в Z по модулю т Mtaylor Представление многовариантным рядом Тейлора ’ mul Умножение для последовательности значений 1 nextprime Следующее (за указанным) простое число. । nops Число операндов в выражении Norm Инертная форма функции norm norm Дает norm (a,n.v)=sum(abc(c)'n for с in |cocffs(a.v)]'( 1 /n) полинома j Normal Инертная форма функции normal 1 normal Нормализует рациональное выражение Nullspace Вычисляет nullspace (нулевой базис) матрицы по модулю р । numboccur Считает сколько раз х встречается в выражении | numer Возвращает числитель выражения op Извлекает операнды из выражения open Открытие файла optimiie Общая оптимизация выражения order Определяет порядок отбрасываемых членов ряда parse Выполняет синтаксический анализ строки pc lose Закрытие буферизованного файла pdesclve Решение дифференциальных уравнений в частных производных piecewise Функция из кусков plot Строит двумерные графики plot3d Строит трехмерные графики plotsetup Устанавливает параметры для построения графика pochhammer Символ Постмайера. pointto Получает выражение по указанному адресу poisson Разложение в серию Поиссона polar Преобразование в полярную форму polylog Полилогарифмическая функция polynom Указание на работу с полиномами Power Инертная форма функции power. Powmod Инертная форма функции powmod
Имя функции Описание powmod Функции power с остатком Prem Инертная форма функции prem prem Псевдо-остаток полиномов prevprime Находит простое число, предшествующее заданному Prim field Примитивный элемент алгебраического выражения Primitive .. Совместное тестирование полинома и примитива по модулю р Pnmpart Инертная форма функции primpart primpart Тестирование совместно примитивного элемента и полинома со многи- ми переменными print Вывод (печать) объекта printf Печатает выражение, используя специальный формат ProbS plit Вероятное расщепление procbody Создание нейтральной формы «neutralized form» для процедуры procmake Создание процедуры Product Инертная форма функции product product Находит произведение proot п-ый корень из полинома property Вывод листа со свойствами объектов protect Зашита имени от модификации. psqrt Корень квадратный из полинома Psi Дигамма и полигамма функции Quo Инертная форма функции quo. quo Выполняет деление полиномов radnormal Нормализация выражения с использованием радикалов radsimp Упрощает выражения, содержащие радикалы rand Генерирует случайные числа randomize Сбрасывает генератор случайных чисел Randpoly Инертная форма функции randpoly randpoly Генерирует случайные полиномы range Задает область изменения rationalize Рациональный деноминатор ratrecon Рациональная функция реконструкции Ratrecon Инертная форма функции ratrecon Re Находит действительную часть комплексного выражения readbytes Считывание бинарных данных readdate Считывание данных readlib Выполняет чтение имени из библиотечного файла readline Выполняет чтение имени из библиотечного файла
Имя функции Описание " 1 readstat Выполняет чтение строки из файла или терминала realroot Интервалы изоляции корней полинома recipoly Определяет полином как взаимообратнын Rem Инертная форма функции rem rem Возвращает остаток от деления полиномов remove Уничтожение в объекте (множестве, списке, сумме, произведении или функции! residue Вычисление алгебраического остатка RESol Структура данных, представляющих решение рекуррентного уравнения Resultant Инертная форма функции resultant resultant Вычисляет свертку полиномов rhs Правая часть выражения root n-ый корень из алгебраического выражения Root 0Г Представляет корни уравнений Roots Инертная форма функции roots roots Корни одномерного полинома round Округленное до ближайшего целого число, rsolve Решение рекуррентного уравнения savelib Запись подготовленной библиотеки на диск scanf Проверяет синтаксически выражение во входной строке SearchText Позиция шаблона в строке текста (инертная форма) searchtext Позиция шаблона в строке текста. sec Секанс sech Секанс гиперболический select Отбор элементов списка, множества, суммы или произведения. seq Создание последовательности senes Разложение функции в ряд. setattribute Установка атрибутов. shake Интервал для интервального выражения Shi Shiited-синусный интеграл showprofile Включает встроенный отладчик процедур showtime Вывод времени и некоторых характеристик вычисления. sign Функция знака Si Интегральный синус. sign Знак числа или выражения. signum Функция signum(x)=x/abs(x) для действительного или комплексного выражения simplify Упрощение выражения
Имя функции Описание sin Синус singular Нахождение сингулярных (особых) точек в выражении sinh Синус гиперболический sinterp Мулътивариаитная sparse-интерполяция по ладанному модуля Smith Вычисление нормальной формы Шмитта для матрицы с mod р solve Решения уравнений или систем уравнений sort Сортировка списка величин или полиномов sparse sparse-индексная функция spline Вычисление натурального сплайна split Комплексная факторизация полинома splits Комплексная факторизация полинома Sprem Инертная форма функции sprem sprem Находит sparse (некомпактный) псевдо остаток полиномов spnntf Вывод выражения из базовой строки в строковом формате Sqrtree Инертная форма функции sqrtfree sqriree Свободная от корней факторизация S€|rl Корень квадратный аргумента sscanf Производит поиск и анализ числе и строк в строке Ssi Shifted-синусный интеграл stack Структура данных типа стека ssystem Вызывает команду в базовую операционную систему StruveH.L Функции Струве. sturm Число реальных корней полинома в заданном интервале sturmseq Sturm-функцня для полинома subs Выполняет подстановку в выражение subsop Выполняет подстановку в заданную позицию выражения substring Извлекает подстроку из строки Sum Инертная форма функции sum sum Вычисляет определенные и неопределенные суммы surd Не главная корневая функция Svd Вычисляет сингулярные значения\векторы численной матрицы symmdiff Установка симметричной разности symmetric Симметричная индексная функция system Вызывает команду в базовую операционную систему table Создает таблицу tan Тангенс аргумента tanh Тангенс гиперболический аргумента testeq Тестирование случайного временного полинома
Имя функции Описание testfloal Тестирование выражений, включающих числа с плавающей точкой. TEXT Текстовая структура данных thaw Замена выражения на ими. thiele Thiele-Интерполяционная формула time Возвращает суммарное время сессии Maple V. Trace Трассировка числа или функции. translate Линейное преобразование в полином. traperror Прерывание при возникновении ошибки trigsubs Тригонометрическая подстановка trunc Усечение числа до ближайшего к нулю целого числа type Проверяет соответствие функции заданному типу typematch Проверяет выражение на присутствие образцов unames Возвращает последовательность не назначенных имен в сессии Maple V unapply Возвращает оператор из выражения и аргументов. unassign Отменяет действие функции assign unload Отменяет определение в Maple-секции. unprotect Снимает защиту имени. updatesRI Сообщает об изменениях в реализации Maple V R4. usennfo Печатает нужную для пользователя информацию value Исполняет функцию, представленную в инертной форме vector Слово, представляющее вектор в параметрах и опциях verify Тестирует выражения на соответствие принятым в Maple. WeberE Функция Вебера WierstrassP. Ppnme.Sigma.Zeta Функции Вайерштрассе. whattype Возвращает тип данных выражений with Задает загрузку определений из библиотечных пакетов. writebytes Запись бинарных кодон writedata Запись цифровых данных в текстовый файл writeline Запись строковых данных в текстовый файл ' writestat Запись строк или выражений в файл. writeto Запись вывода в файл. Zeta Зета-функции Римана Zip Объединяет (zip) jura списка или вектора ztrans Выполняет г-преобразование функции.
Список литературы 1 Дьяконов ВЛ Справочник по расчетам на микрокалькуляторах. Издание 3-е, доп. и перераб М Наука. Физматлит.- 1989 - 464 с 2 Дьяконов ВЛ. Справочник по алгоритмам и программам на языке Бейсик для персональ- ных ЭВМ М : Наука, Физматлит 1987 - 240 с 3 . Дьяконов В П. Применение персональных ЭВМ и программирование на языке Бейсик М : Радио и связь -1989 - 288 с. 4 Дьяконов В П Язык программирования ЛОГО М : Радио и связь -1991,-144 с 5 Дьяконов В. П. Форт-системы программирования персональных ЭВМ М Наука, Физмат- лит- 1992 - 352 с. 6 Дьяконов В П Компьютер в быту. Смоленск. Русич - 1996 - 640 с 7 . Дьяконов В П. Мой Pentium М АСЕ -1998. 8 Дьяконов В.П Популярная энциклопедия мультимедиа. М ABF -1996 - 416 с. 9 Дьяконов ВЛ Справочник по применению системы Eureka М. Наука, Физматлит. 1993- 96с 10 . Дьяконов ВЛ Mercury — отличная система для всех. // Монитор-Аспект - 1995 - № 5,- с.86. 11 . Дьяконов Как выбрать математическую систему? // Мони тор-Аслекг -1993 - Ne 2 - с 22 12 . Дьяконов. А. Пеньков Современные математические системы И PC WEEK -1996 - Ne 43 (67).- с.42 13 . Дьяконов ВЛ. Расширяемые системы для численных расчетов MatLAB И Монитор-Ас- пект - 1993 - No 2 - с. 26 14 Дьяконов В.П. Справочник по применению системы PC MatLAB МНаука, Физматпит - 1993-112 с. 15 . Дьяконов В П Система MathCAD Справочник. М Радио и связь -1993.- 128 с 16 . Дьяконов В П MathCAD прорывается в Windows И Монитор-Аспект - 1993 - Ns 2 - с 42 17 Дьяконов В П MathCAD — пять с плюсом! И Монитор-Аспект -1995 - No 2 - с.109 18 . Очков В Ф MathCAD 7 Pro для студентов и инженеров М Компьютер Press - 1968.- 384 с. 19 . MathCAD 6 0 PLUS. Финансовые, инженерные и научные расчеты в среде Windows 95 I Пер с англ.- М Филины - 1996 - 712 с 20 . Дьяконов В П Справочник по MathCAD PLUS 6 0 PRO. М СК-ПРЕСС -1997 - 336 с. 21 Дьяконов В П Справочник по MathCAD PLUS 7.0 PRO. М.: СК-ПРЕСС,- 1998 - 352 с. 22 Дьяконое MathCAD PLUS 6 0 — ключ к тайнам математики. II Домашний компьютер 1997,-№4,-с. 3/. 23 Дьяконов. Denve — жемчужина символьной математики. II Монитор-Аспект.- 1993. № 2 - с. 36. 24 . Дьяконое, С Бирюков Derive в России Монитор - № 3 -1995 - с 56 25 Дьяконов В П Справочник по применению системы Derive М Наука Физматлит-1996 - 144 с. 26 Дьяконов В. П. Справочник по системе символьной математики Denve М.: СК-ПРЕСС - 1998 - 256 с. 27 . Дьяконов В П. Mathematica 2.0 под MS-DOS и под Windows И Монитор-Аспект -1993 - № 2-с 52.
28 . Дьяконов В П Mathematica 2 1 для Windows; от слов к делу! // Монитор-Аспект.-1995 - № 4,-с. 125. 29 Дьяконов В П Mathematica 2 2 2 — на пути к совершенству. // Монитор-Аспект.- 1996 - № 6.-с 96 30. Дьяконов В. П Системы символьной математики Mathematica 2 и Mathematica 3. М. СК ПРЕСС -1998,- 320 с. ЗТАладьев В 3.. М.Л Шишаков Введение в среду пакета Mathematica 2.2. М Филинь - 1997 - 368 с. 32 Дьяконов В.П. Maple V — мощь и интеллект компьютерном алгебры! II Монитор-Аспект - 1993 -No 2- с 48 33. Говорухин В Н . Цибулин В.Г Введение в Maple V Математический пакет для всех М.: Мир - 1997 - 208 с. 34 Прохоров Г. В., Леденев М. А, Колбеев В. В Пакет символьных вычислений Maple V М.: Петит -1997 - 200 с. 35. Манэон Б М. Maple V Power Edition. М. Филины.- 1998 - 240 с 36 Потемкин В Г MATLAB Справочное пособие М Диалог-МИФИ - 1997.- 350 с 37. М. Heal L М Hansen, К. М. Rickard. Maple V Realise 5 Learning Guide Springer -1998- 284 s 38 B. Mcnagan, К О Geddes. К M Heal, G Labahn, S. M Vorkoetter Maple V Realise 5. Programming Guide. Springer -1998 - 380 p. 39. Дж. Дэвенпорт, И Сирэ, Э. Турнье Компьютерная алгебра Системы и алгоритмы алгебраических вычислений. М Мир.-1991.- 352 с. 40. Дьяконов В. П. Мой Word 95/97. М ACT -1998 - 336 с. 41. Саймон Барри Символьная математика: новые времена — новые формы II PC Magazi- ne/RE.- 1992 -№5. 42. Гантмахер Ф Теория матриц М Наука Физматлит. -1988,- 552 с. 43 Справочник по специальным функциям с формулами, графиками и математическими таблицами. / Под ред М Абрамоеица и И Стиган М.. Наука Физматлит -1979 - 832 с. 44. Корн, Т Корн. Справочник по математике для научных работников и инженеров. М.: Наука - 1973 - 832 с. 45 Водное В.Т , Наумович АФ. Наумович Н.Ф Основные математические формулы Минск. Вышэйшая школа -1988.- 270 с. 46. Moon Р , Spencer О Е Field Theory Handbook, 2-nd Ed Berlin: Spnnger-Verlag,-1971. 47. Spiegel, Murray R Mathematical Handbook of Formulas and Tables. New York: McGraw Hill Book Company,-1968
Содержание ПРЕДИСЛОВИЕ...................................................................3 Состав книги .......................................................... 6 Предупреждения _____... ....... ...... .......................................................7 О выделениях и формах представления примеров ... ...........................9 Благодарности и адреса ...............................,..9 Об авторе книги .... ............. ..................™...„................ П Глава 1. УСТАНОВКА СИСТЕМЫ И НАЧАЛО РАБОТЫ С НЕЙ.............................12 11 Краткая характеристика системы ................................... 12 1 1 1 Maple V — лидер среди систем символьной математики .... 12 I 1 2 Об ошибках в символьных вычислениях 14 ' 113 Вызов функций пакетов расширения Maple V ........................ 15 1 1 1 Языки системы — входной, реализации и программирования ...........16 1 15 Пользовательский интерфейс ............................ 17 1 1 б Ориентация системы Maple V................................... ... 18 Возможности интерфейса .................................. 18 Символьные и численные вычисления.....................................18 Численное и символьное решение уравнений ..........................«... 18 Вычисление элементарных и специальных математических функций ...... 19 Линейная алгебра .........19 Графическая визуализация вычислений .................. .... 19 Программирование ... .................................... 19 1.2 Загрузка системы Maple V R4 и ее состав .......................20 I 2 I Аппаратные требования и инсталляция ............................ 20 122 Запуск системы. ......... ............................ .«««..— 20 1.3. Работа в диалоговом режиме .................... .... ........ 20 1 3 I Начальные навыки работы .. .......................................20 132 Понятие функции и оператора ........................... . 22 1 3 3 Управление окном документа . ......................... 24 134 Примеры задания функции пользователя и построения ее графика 24 13 5 Пример построения графика трехмерной поверхности___________ ________ 25 136 Управление формой представления документа .. ......... 25 I 3 7 Представление входных выражений в математической форме............26 138 Управление от мыши ......................................27 1 4 Примеры символьных вычислений ...................................... 27 1 5 Работа с кнопками быстрого управления . ...........................31 1 5 1 Работа с панелью инструментов ................................ 31 1 5 2 Работа с панелями форматирования...................................31 1 6 Работа с системой помощи .......................................... 33 17. Главное меню системы и «горячие» клавиши...............................35 I 8 Особенности версии Maple V R3 ....................................... 38 Глава 2. РАБОТА С ФАЙЛАМИ....................................................40 2 1 Позиция главного меню File ......... .................40 2 2 Подготовка к вводу нового документа (New)......................... 42 2 3. Ввод документа с диска (Open)....................................... 43 2 4 Запись документа на диск без переименования (Save) ................. 44
2 5 Запись документа на диск с переименованием (Save As) 44 2 6 Экспорт файлов различного формата (Export As) 45 2 7 Закрытие документа (Close Document) 46 2 8 Запись установок (Save Setting и Auto Save Setting) 47 2 9 Печать документов (Print) 47 2 10 Предварительный просмотр страниц печати (Print Preview) 48 2 11 Установка параметров принтера (Printer Setup) 49 2 12 Выход из системы (Exit) 49 Глава 3. РЕДАКТИРОВАНИЕ ДОКУМЕНТОВ.........................................50 3 1 Общие приемы редактирования документов (Edit) 50 3 2. Отмена последней операции (Undo Delete) 51 3 3 Выделение объектов и перенос их в буфер (Cut) 52 3 4 Копирование объекта в буфер (Сору) 52 3 5 Копирование объекта из буфера в окно (Paste) 53 3 6 Копирование в буфер в формате Maple-текста (Copy As Maple Text) 54 3 7 Вставка из буфера в документ (Paste) 54 3 8 Вставка из буфера в формате Maple текст (Paste As Maple Text) 56 3 9 Уничтожение выделенного объекта (Delete) 56 3 10 Выделение всех объектов (Select ЛИ) 56 3 11 Поиск подстроки (Emd) 57 3 12 Вставка объекта (Insert OLE Object ) 57 3 13 Операции с объектами (Object) .............. .. 60 3 14 Показ объекта (Show Object) ...................................... 60 3 15 Включение и выключение режима ввода текста (Input mode) 61 3 16 Операции разделения или объединения объектов (Split or Join) 61 3 17 Исполнение выделенных ячеек или всего документа (Execute) 61 3 18 Удаление ячеек вывода (Remove Output) .« 61 Глава 4. УПРАВЛЕНИЕ ВИДОМ ИНТЕРФЕЙСА И ДОКУМЕНТА............................63 4 1 Меню изменения вида View 63 4 2. Управление показом панелей инструментов (Tool Ваг) 64 4 3 Управление показом панелей форматирования (Context Ваг) 64 4 4 Управление показом строки статуса (Status Line) ... 65 4 5 Установка масштаба просмотра документа (Zoom Factor) 65 4 6 Установка маркеров — закладок (Bookmarkers) 66 4 7 Управление показом невидимых символов (Show Invisible Characters) 68 4 8 Управление показом областей секций (Show Section Ranges) 68 4 8 1 Понятие о секциях и подсекциях 68 4 8 2 Управление показом областей секций 69 4 9 Управление показом областей ячеек (Show Group Ranges) 71 4 10 Закрытие всех секций (Collapse All Sections) 71 4 11 Раскрытие всех секций (Expand AU Sections) 71 Глава 5. ВСТАВКА ОБЪЕКТОВ В ДОКУМЕНТ.......................................73 5 1 Обзор операций позиции Insert главного меню 73 5 2 Установка режима ввода текста (Text Input) 73 5 3 Установка режима ввода выражений (Maple Input) 73 5 4 Исполнение ячеек до и после маркера (Execution Group) . 74 5 5 Вставка текстовой области (Paragraph) 74 56 Вставка кнопки секции (Section) .................................. 74
5.7. Вставка кнопки подсекции (Subsection) 74 5 8 Вставка входного выражения в математической форме (Math Input) 75 5 9 Вставка гиперссылки (HyperLink ) 75 Глава в. ОПЕРАЦИИ ФОРМАТИРОВАНИЯ............................................77 6.1 Обзор операций подменю Format 77 62 Установка стили (Styles) .77 6 3 Прочие средства форматирования текстовых надписей 80 6 3 I Оперативное изменение стиля символов (Italic, Bold. Underline) 80 632 Форматирование параграфов (Paragraph) ........................... 80 6 3 3 Форматирование символов (Character) 80 6 4 Операция ввода в секцию (Indent) 80 65 Операция вывода из секции (Outdent) 80 Глава 7. РАБОТА С ОПЦИЯМИ И ОКНАМИ..........................................82 7 I Обзор опций позиции главного меню Options 82 7 2 Управление выводом (Replace Output) .82 7 3 Установка режима вставки новой ячейки (Insert Mode).................. 82 7 4 Установка опций вывода (Output Display) 83 7 5 Контроль за предполагаемыми переменными (Assumed Variables) 84 7 6 Управление показом графики (Plot Display) .......................... 85 7 7 Управление построением двумерных графиков 85 7 8 Управление построением трехмерных графиков 86 7 9 Установка расположения окон (Window) 86 7 9 1 Установка расположения окон документов (Cascade. Tile Horizontal. Vertical) 86 7 9 2 Приведение в порядок пиктограмм свернутых окон (Arrange Icons) 90 7 9 3 Закрытие всех окон одновременно (Close Ail). 90 7 9 4 Закрытие всех окон справочной системы (Close All Help) 92 Глава 8. СПРАВОЧНАЯ СИСТЕМА MAPLE V R4......................................93 8 1 Обзор позиции Help главного меню 93 8 2 Справка по контексту (Contexts) ....... .94 8 3 Оперативная справка по контексту (Help on Context) 95 8 4 11редметный поиск (Topic Search) 95 8 5 Предметный поиск с полным обзором текста справки (Full Text Search). 97 8 6 Работа с просмотренными ранее разделами справки (History) 97 8 7 Модернизация справочной базы данных (Save to Database и Remove Topic) ..........-.............................. .......... 98 8 8 Справка о справке (Using Help) 99 8 9 Включение всплывающих «шпаргалок. (Ballon Help) 99 8 10 Вывод окна с информацией о системе (About Help) 99 Глава 9. ОСНОВНЫЕ ПОНЯТИЯ ВХОДНОГО ЯЗЫКА СИСТЕМЫ MAPLE V.........................................................100 9 1 Выражения и основы работы с ними 100 9 1 I Алфавит Maple-языка и его синтаксис ... ....................... 100 Зарезервированные слова языка программирования 101 9 1 2 Выражения и их ввод 102 9 I 3 Оценивание выражений .......... ... ................ 104 9 14 Последовательности выражении 105 9 1 5 Наборы выражений 106 9 1.6. Списки выражений 106
9 I 7 Метки % в выражениях и вывод выражений 107 9 2 Типы данных 107 9 2 1 Числа и числовые константы 107 9 2.2 Контроль за числами 109 9 2 3 Преобразования чисел с разным основанием 109 9 2 4 Строковые данные 110 9 2.5 Списки, массивы, векторы и матрицы НО 9 2 6 Таблицы 111 9 3 Константы 112 93 1 Числовые константы 112 9 3 2 Строковые константы 113 9 3.3. Встроенные в ядро константы ИЗ 934 Идентификации констант 113 9 4 Переменные 114 94 1 Типы переменных 114 94 2 Идентификаторы (имена) переменных 115 94 3 Присваивание переменным значений 115 9 4 4 Отмена операции присваивания и команда restart 116 9 4 5 Придание переменным статуса предполагаемых оператором assume 117 9 5 Операторы и операнды 118 95 1 Виды операторов 118 9 5 2 Бинарные (инфиксные) операторы 119 9 5 3 Операторы объединения, пересечения и исключения для множеств 121 954 Унарные арифметические операторы 121 9 55 Логические операторы 122 9 56 Специальные типы операторов 122 957 Функциональные операторы 123 958 Нейтральные операторы, определяемые пользователем 124 9 5 9 Определение операторов с помощью оператора define 124 9 6 Математические функции 126 9 6 I Некоторые целочисленные функции и факториал 126 962 Тригонометрические функции 127 963 Обратные тригонометрические функции 128 96 4 Гиперболические функции 129 9 65 Обратные гиперболические функции 129 9 6 6 Алгебраические функции 129 9 67 Функции с элементами сравнения 130 9 68 Функции комплексного аргумента 132 9 69 Специальные математические функции ИЗ 9 6 10 Функции для работы с векторами и матрицами 136 9 7 Функции для работы со строковыми данными 139 9 7 I Контроль типа строковых данных 139 972 Интерактивный ввод строк 140 9 7 3 Обработка строк 140 9 7 4 Преобразования строки в математическое выражение 141 9 8 Типовые средства программирования 141 98 1 Функции пользователя 141 982 Условные выражения 143 9 8 3 Циклы типа for. while и do 144 98 4 Операторы пропуска и прерывания 147 985 Простейшие процедуры 147 986 Оператор возврата значения RETURN 148 98 7 Статус переменных в процедурах и циклах 148
9 8 8 Объявления переменных локальными с помощью оператора local 149 9 8 9 Объявления переменных глобальными с помощью оператора global 149 9 8 10 Функция вывода сообщений об ошибках ERROR ....... 150 9 8 11 Опции (ключи) в процедурах ............. .......... ... 151 Ключ remember 151 Ключ builtir) 152 Ключ system 152 Ключ operator, angle 152 Ключ operator, arrow . 152 Ключ trace . ............. 152 Ключ package 153 Ключ copyright. 153 9 8 12 Общая форма задания процедуры ...... 153 9 8 13. Средства контроля и отладки процедур . ......... . 153 9 8 14 Рабата с отладчиком программ (debugging) ................ ... 157 9 9 Операции ввода н вывода 158 9 9 1 Считывание и запись программных модулей...................... 158 9 "9 2 Создание своей библиотеки процедур ... 159 9 93 Запись и считывание данных ......... 161 910 Вывод в специальных форматах ..................................... 162 9 101 Вывод в формате LaTeX ... ... 162 9 10 2. Генерация кодов на языке Фортран .. 163 9 10 3 Генерация кодов на языке С................................... 163 9 11 Дополнительные возможности Maple-языка........................... 164 9 111 Переназначение определений................................. 164 9 112 Макросы 165 9 113 Внешние вызовы ... ... ........... 166 Глава 10. ОПЕРАЦИИ И ФУНКЦИИ МАТЕМАТИЧЕСКОГО АНАЛИЗА....................................................................167 10 1 Вычисление сумм рядов .......................................... 167 10.2 Вычисление произведений ...................................... 169 10 3 Вычисление производных.... .................................... 171 10 3 1 Функции дифференцирования выражений dill и Difl............... 171 103 2 Дифференциальный оператор D .................................. 172 10 4 Вычисление интегралов ........................................ 174 10 4 I Вычисление неопределенных интегралов 174 10 4 2 Вычисление определенных интегралов .................... 175 10 4 3 Вычисление кратных интегралов ............................. 177 10 5 Вычисление пределов функций ...................................... 177 10 6 Разложение функций в ряд 179 10 6 I Разложение в степенной ряд 179 10 6 2 Разложение в ряды Тейлора и Маклорена ........................ 180 10 6 3 Вычисление асимптотических н иных разложений.................. 182 10 7 Интерполяция и аппроксимация функций и данных ....................... 182 10 7 1 Полиномиальная интерполяция данных— 182 10 7 2 Сплайн-интерполяция и аппроксимация........................... 184 10 8 Решение нелинейных уравнений и неравенств ....................... 184 10 8.1 Основная функция solve .................................... 184 10 8 2 Решение одиночных нелинейных уравнений ... . ... 186 10 8 3 Решение тригонометрических уравнений 187 10 8 4 Решение систем нелинейных и трансцендентных уравнений ..... 188 108 5 Функция RootOi ........ 189
10.8.6. Решение неравенств 190 10.8.7 Решение функциональных уравнений.............................190 10 8 8 Решение в численном виде — функция (solve 191 10 8 9 Решение рекуррентных и иных видов уравнений ... . . 191 10 9 Решение дифференциальных уравнений . ... ...... ........ 193 10 9 1 Решение системы простых дифференциальных уравнении 193 1092 Численное решение дифференциальных уравнений ............... 195 10 9 3. Структура неявного представления дифференциальных уравнений DESol ......... ........................ 197 10 10 Исследование аналитических функции ............................ 197 10 10 I Поиск экстремумов функций ................................. 198 10 10 2 Поиск минимумов и максимумов аналитических функций 198 10 10 3 Анализ функций на непрерывность .. .................... 199 10 10 4 Нахождение сингулярных точек .. . ... .... ... ...... 200 10 11 Функции из отдельных кусков — piecewise .... .................... 201 10.12 Прямое и обратное Z-преобразовании ...................... 201 Глава И. ОПЕРАЦИИ СИМВОЛЬНОЙ МАТЕМАТИКИ..................................203 II I Основные операции с выражениями 203 1111 Работа с частями выражений . ................... 203 1112 Преобразование выражений в тождественные формы с помощью функции convert .............................. 204 1113 Преобразования выражений с помошью функции combine . ......... 206 1114 Контроль за типами объектов .................. 207 II 2 Функции приложения и подстановки . ... .......... ..............—. 208 112 1 Функция приложения applyop ............................... 208 112 2 Функции приложения тар и тар2 ... .............. 209 112 3 Приложения с помощью функций add. mul и seq ................ 210 1124 Подстановки с помощью функций subs и subsop ................ 211 11 2 5 Функции сортировки sort и селекции select 213 11 3 Упрощение выражений — функция simplify... ... .............. 215 II 4 Расширение выражений — функция Expand ....................... 218 11,5 Факторизация выражений .. ................................. 219 115 1 Разложение целых и рациональных чисел — функция ilactor .219 1152 Разложение выражений (факторизация) — функция factor ..........220 II 6 Комплектование по степеням — функция collect................... 221 117 Операции с полиномами . .................................... 222 117 1 Выделение коэффициентов полиномов ..................... 222 117 2 Выделение коэффициентов полиномов — функция соеИ .............222 11 7 3 Оценка коэффициентов полинома по степеням.......... .... 223 11 7 4. Оценка степеней полинома ...... .......... . 224 117 5 Разложение полинома на множители............................. 225 117 6 Вычисление корней полинома — функция roots....... ............226 117 7 Основные операции с полиномами ... .. .........227 11 8. Программирование символьных операций ..................... 229 118 1 Реализация в символьном виде итераций Ньютона............... 229 118 2 Вычисление интеграла по известной формуле ................ 231 1183 Вложенные процедуры и интегрирование по частям ... ........... 232 Глава 12. ПАКЕТЫ РАСШИРЕНИЙ MAPLE V И РАБОТА С НИМИ...................................................................234 12 1 Назначение пакетов расширения и обращение к ним ................ 234 12 2 Инструментальный пакет решения дифференциальных уравнений DEtools ............................. — 235
12 3 Пакеты функций комбинаторики 241 1 2.31 Пакет combinat .241 12 3.2. Пакет combstruct 244 12 4 Пакет финансово-экономических функции finance 245 12 5 Пакет геометрических расчетов geometry 246 12 6 Пакет интегральных преобразований inttrans 248 12 6 I Прямое и обратное преобразование Лапласа 249 12 6 2 Прямое и обратное преобразование Фурье ........................ 250 12 6 3 Вычисление косинусного и синусного интегралов Фурье 250 12 6 4 Интегральное преобразование Ханкеля 251 12 6 5 Прямое и обратное преобразования Гильберта 252 12 6 6 Интегральное преобразование Медлина 253 12 6 7 Функция addtable 253 12 7 Пакет решения задач линейной алгебры btialg 254 12 7 1 Состав пакета liпа 1g 254 12 7 2 Интерактивный ввод матриц 257 12 7 3 Основные функции для задания векторов и матриц 257 12 7 4 Функции для работы с векторами и матрицами 258 12 7.5 Решение систем линейных уравнений 260 12 8 Пакет логических операций logic -------------- ------------- 261 12 9 Пакет функций теории графов networks 262 12 10 Пакет числовой аппроксимации питарргох 267 12 10 1 Состав пакета питарргох..................................... 267 12 10 2 Разложение функции в ряд Лорана 267 12 10 3 Паде-аппроксимация аналитических функций 267 12.10 4 Паде-аппроксимация с полиномами Чебышева 268 12 10 5 Нанлучшая минимаксная аппроксимация 269 12 10 6 Наилучшая минимаксная аппроксимация по алгоритму Ремеза 269 12 10 7 Другие функции пакета 270 12 11 Пакет ортогональных полиномов orthopoly 270 12 12 Пакеты функций расширенной графики plots и plottools 271 1213 Пакет реализации степенных разложений powseries 272 12 14 Пакет для решения задач линейной оптимизации simplex 274 12.15 Пакет статистических расчетов stats............................. 275 12 15 1 Характеристика пакета stats —--- —................. ... 275 12 15 2 Генерация случайных чисел с заданным распределением 276 12 15 3 Регрессионный анализ 276 12 16 Пакет полезных студентам функций — student . ... 278 12 17 Пакет работы с тензорами tensor .... 280 12 18 Пакет упорядочения переменных totorder .... — ................ 282 12 19 Пакеты специального назначения ................................... 283 12 19 1. Пакет Domains 283 12 19 2 Пакет функций теории чисел numtheory 284 12 19 3 Пакет padic для работы с р-адическими числами 285 12 19 4 Пакет для определения конечного поля Галуа GF 285 12 19.5 Пакет Gausslnt для работы с Гауссовыми целыми числами 285 12 19 6 Инструментальный пакет для линейных рекуррентных уравнений LREtools 286 12 19 7 Пакет функций дифференциальных форм diilorms 286 12 19 8 Пакет для работы с рациональными производящими функциями genfunc................................................. 286 12 19 9 Пакет вычислений по базису Гребнера 286
12 19 10 Пакет операций для работы с конечными группами groups ....286 12 19.11 Пакет для работы с симметрией Ли liesymm 287 12 19 12 Пакет работы с суммами sumtools . 28" 12 19 13 Пакет организации мультипроиессов process .................. 287 12 20 Библиотека пользователей SHARE ... 287 Глава 13. ГРАФИКА В СИСТЕМЕ MAPLE V........................................289 13 I Двумерная графика .................. ... 289 13 1.1 Основные возможности двумерной графики 289 13 12 Основная функция двумерной графики — plot 290 13 13 Задание координатных систем 20-графиков и их пересчет 291 13.1 4 Управление стилем и цветам линий 20-графиков .... ...... 292 13 2 Примеры построения основных типов 2D графиков ................... 292 13.21 Построение графиков одной функции ............................ 292 13 2 2. Управление масштабом графиков . ............................. 293 13 2 3 Графики функций в неограниченном масштабе. ................... 293 13 2 4 Графики функций с разрывами 294 13 2 5 Построение графиков нескольких функций на одном рисунке ...... 294 13.2.6 Построение графиков функций, заданных отдельными точками ..... 296 13 2 7 Построение графиков функций, заданных их именами 298 13 2 8 Построение графиков функции с ординатами, заданными вектором 299 13 2 9 Построение графиков функций, заданных процедурами 299 13 2 10 Построение графиков функций, заданных функциональными операторами . 30! 132 II Построение графиков функций, заданных параметрически 301 13 2 12 Построение графиков функций в полярной системе координат 302 13.3. Построение Зй-графиков с помощью функции plot3d ....... 302 13 3 1 Особенности применения функции p(ot3d ........................ 302 13 3 2 Параметры функции plot3d .................................. 303 13 3 3. Выбор и пересчет координат ЗВ-графиков .................... 304 13 4 Примеры построения трехмерных поверхностей с помощью функции plot 3d ................................................ .307 13 4 1 Простейшее построение ЗВ-поверхности с разным стилем 307 13 4 2 Построение фигур в различных системах координат ............. 308 13 4 3 Построение графиков параметрически заданных поверхностей.......310 13 4 4 ЗВ-график как графический объект 310 13 4 5. Задание 31>графнки в виде процедуры..... . .......... ... 310 13 4 6 Построение ряда трехмерных фигур .. . ... .......312 13 5 Графические структуры двумерной и трехмерной графики 312 13 5 1. Понятие о графических структурах .... ..................... 312 13 5 2 Графические структуры двумерной графики ....... . ..313 13 5 3 Графические структуры трехмерной графики ... . 313 13 6 Графика пакета plots............................................. 316 13 6 1 Общая характеристика пакета plots . ............ ...........316 13 6 2 Построение графиков функций в двумерной полярной системе координат ................ 318 13 6 3. Построение графиков линиями равного уровня ................ 318 1364 График плотности ... ................... ......320 13 6.5. График векторного поля двумерный ....... . 320 13 6 6 Графики в равных системах координат .... ............... 321 13 6 7. Графики типа трехмерного векторного поля ................. 323 13 6 8 Контурные трехмерные графики ............................... 323 13 6 9. Техника визуализации сложных пространственных фигур...........325 13 6 10. Построение анимационных 2О-графиков .......................... 328
13 6 11 Построение анимационных 30-графиков 329 13 6 12 Использование для анимации опции insequence............... 330 13 7 Графика пакета plottools 330 13 7 I Состав пакета plottools ......... ... ................... 330 13 7 2 Примеры применения примитивов пакета plottools 331 13 7 3 Построение графиков из множества фигур ................. 332 13.8. Графическое представление решений дифференциальных уравнений 333 13 8 1 Применение функции odeplot пакета plots ..... 333 13 8 2 Функция DEplot из пакета DEtools ....... ........ 334 13 8.3 Функция DEplot3d из пакета DEtools......................... 337 13.8 4 Функция PDEplot пакета DEtools. ........................... 339 13 8 5 Графическая функция dfieldplot 340 13 8 6. Графическая функция phaseportrait .................... .342 13 9 Иллюстративная графика пакета student ......................... 342 13.10. Графика статистического пакета stat ......................... 343 13 11 Графическая визуализация решений и анимация ................... 345 13.111 Иллюстрация решения систем линейных уравнений 346 13 11 2 Графическая визуализация решения системы неравенств 347 13.113 Конформные отображения на комплексной плоскости.. 347 13 114 Графическое представление содержимого матрицы ... .... 349 13 115 Визуализация Ньютоновых итераций 349 13 116 Визуализация корней случайных полиномов ................... 350 13 11.7 Анимация разложения импульса в ряд Фурье . 352 13 118 Наблюдение фаз анимации трехмерной поверхности ... 353 Глава 14. МАТЕМАТИЧЕСКАЯ СИСТЕМА MAPLE V R5..............................356 14.1. Комплект поставки и установка системы ........... ... 356 14 2 Отличия в оперативной работе ............. 358 14 3 Работа с электронными таблицами ..................... ..... 359 14 4. Использование палитр математических символов ................. 362 14.5 Трансформация графиков в реальном масштабе времени ............ 363 14.6. Контекстно-зависимое меню операций ............. 365 14 7 Быстрое построение графиков 367 14 8 Расширяемое меню справочной системы ........................ 368 14 9 Подготовка HTML-файлов дтя передачи по сети Internet 369 14 10 Интеграция с системой MatLAB 5 0 371 14 11 Internet-страница фирмы Waterloo Maple 371 ЗАКЛЮЧЕНИЕ...............................................................375 Приложение 1. ФУНКЦИИ ЯДРА И ОСНОВНОЙ БИБЛИОТЕКИ СИСТЕМЫ MAPLE V..........................................................377 СПИСОК ЛИТЕРАТУРЫ........................................................389 ТОО -СОЛОН" ЛР №061886 от 19.12.97 Москва, Трифоновская, 56 Формат 70x100/16. Объем 25 пл. Тираж 5000 АООТ "ПОЛИТЕХ-4" Москва, Б. Переяславская, 46 Заказ № 344