Манзон Б.М. Maple V Power Edition (1185908), страница 15
Текст из файла (страница 15)
48 136 Мер!е Ч Ромгег Ее(Шоп Команда су!(ваегр)о( пакета позволяет строить графики в цилиндрических координатах (рис. 49) > й : (5"соа(у)'2 -1)/Зт р1оса(су11ззс1ехр1о1)(й, х=0..2яРз.,у=-Р1..Ра, есу1е=РАТСН)т 2 1 ,1:= — сов(у) —— 3 3 Рас 49 Команда совзр!ехр)о(36 позволяет строить графики комплексных функций в трехмерном пространстве, причем возможны два варианта записи, в виде > соплр1ехр1осЗЙ( й(а), и = а1..а2 )) где à — функция комплексного аргумента ьч в атом случае координата х поверхности определяется абсолютной всличиной функции, в то время как цвет псцлерхности определяется аргументом.
В записи > соалр1ехр1оеЗг1( (й1(х,у), й2(х,у)), х = х1..х2, у = у1..уг); координата г определяется функцией Г1, а цвет — функцией Г2. 7. Графики и анимация а Мар!е 137 Приведем примеры (рис. 50, рис. 51) > созяр1ехр1о~Зй( аес(а), а = -3 — 3*1 .. 3 + 3*1 ) ) 3 3 Рис. 50 график преобразования из К2 в К2; > таЫЬ(р1оса):соазр1ехр1о~Зй( (х"2 — у"2, 2~х*у), х = -2..2, у = -2..2)у 7. Графики и анимания в Мар)а 1З9 Команда агаИр)о(ЗИ предназначена для построения поля градиентов функции (рис.
53) > ЯхайР1осЗет( (х*2+у" 2+а*2+1) * (1/2),х=-2 .. 2, у=-2 ° ° 2, а=-2..2)! Рис. 53 При помощи команды нпр)(с(гр(о(ЗИ строятся поверхности, заданные неявно (рис. 54) > 1гвР11сЫР1о~Зс1( х"3 + у"3 + а"3 + 1 = (х + у + а + 1)"З,х=-2..2,у=-2..2,а=-2..2, д Ы=(13,13,13)); 140 Мар!е Ч Речет Есйтюп Рис. 54 Команда !!а(р!о(36 предназначена для построения поверхности по точкам, заданным списком списков (матрицей) (рис. 55) > 11вер1ое36((вец([вец(въп((1-15)*(3-10)/Р1/20), л.=1.. 30) ], 3=1..20) ) ) Ю 7.
Графики и анимация в Мар(е 141 Команда пакета татпхр)от строит поверхность, а-координата которой задается матриней (рис. 56) > тя1СЬ(11па1д)з Ав= М1Ьег~(8) в Вз= Соер11Св((1,2,3,4,-4,-3,-2,-1) ) мСкххр1оп (А+В, ЬехдЫв=МвСодгаха, ахев=йхахве, дар=0.25, всу1е=рапсЬ)ю Матп1пу, пеи бей~п1е1оп тот попп Хахп1пд, пеи бе11п1е1оп 1от стеве Рис. 56 Команда одер)от, входяшая в пакет, позволяет строить графики решения дифференциальных уравнений и систем.
Рассмотрим систему. > вув г= Ыкк(у(х),х)=а(х),<ШЕ(в(х),х)=у(х) з Йспв й= (у(х)х е(х))з рю= с1во1ле((вув,у(0)=0,а(0)=1),йспв,суре=пшаег1с) Трехмерная кривая решения (рис. 57) > ойер1оп (р, (х, у (х), а (х) ), -4 .. 4, пшаро1псв 25, со1ог=о~апде)а 142 Мар)е Ч Ромгег ЕдШоп и и Команда ро!уаопр!о(36 используется для создания трехмерного графика из многоугольников. Многоугольник задается списком точек, определяющих вершины многоугольника.
Приведем пример (рис. 58) > 11в~ ро1уи (вел([зец((Т/10,3/20,а1п[Т*З/20)),Т 0..20)), 3=0..10)3з ро1удотзр1о~36(11в~ ро1уи)т 7. Графики и анимация в Марте 143 Команда врасесвпе предназначена для построения параметрически заданных кривых в пространстве (рис. 59) > сикттег= [ -10*сов(с) — 2"сов(5"с) + 15"в1п(2*с), -15"сов(2"с) + 10"вхп(Т) — 2*в1п(5*с), 10*сов(3*с), 0..2"Р1]: врасесикчте(сихче)у го Рис. 59 При помощи команды авгйа1а строится поверхность по заданным точкам (рис. 60) > втЫЬ(р1осв) а сала г= [вец([ веСу([1.2,езта1й(сов((1+2)/5) )], лл-5..5)], Э=-5..5)]з Р у= (х,у) -> х*2 + у"2в вигйба~а( баса, ахев=йхагве, 1аЬе1в=[х,у,ж], со1ох У' )у 144 Мар!е Ч Рочюег Ес)11)оп 0.8 о.в о. о Од 2 т Рис.
бд Команда 1ех1р!о134 позволяет делать надписи на трехмерном графике (рис. б1) > ~ех~р3о~36[ ~ ~1,2,3, 'йте Игвс. роал~'], 12,2,3, 'Бесоттй роз.п~')),со1ок=дкееп)у Рис. б1 7. Графики и анимация в Мар!е 145 И, наконец, командой 1ввер!о1 можно создавать трубчатые графические объекты (рис. б2) > Р е= (х,у) ->вфп(х)е ЬиЬер1ов ( ( Гсов (Ь), вхп(Ь), О), [О, вфп(В) -1, сов (Ь) ) ), Ь=0..2*рф, кас11ив=с*(1/2)/8,всу1е=рассЬ)) Рвс. 62 Грзфикз пзкетз ОООО!5 Для заданной системы дифференциальных уравнений и списка начальных данных команда 0Ер)о136 осуьцествляет трехмерное представление кривых ре~пения системы.
При этом система должна иметь только одну независимую переменную. Поле направлений этой командой (в отличие от команды 0Ер)о1) нс строится. Приведем пример (рис. бЗ) > таЫЬ (ЭЕеоо1в ) > )ЭЕр1оЕЗа((Р(х) (~) =У(Е),В(У) (~) =-х(~) -У(Е) ), [х(~), у(с)),ь=0..10, [[х(0) =О,у(0)=1), [х(0) =О,у(0)=.5)), всепе=[в,х(Ь), У(С) ), вверял.хе=.1, сЫ1е= 'ззазврей овс111асфопв ', 11песо1оп~=~-вс(т~ (~ ) ); 146 Мар)е У Роьвег ЕоШоп Рис. 63 Команда Р[)Ер!о1 пакета позволяет строить графики решений уравнений в частных производных.
Эта функпия строит поверхность решения квазилинейного уравнения первого порядка вида Р(х,у,и) * [)[!Нп)(х,у) + 0(х,у,и) * [)(2)(п)(х,у) = й(х,у и), где Р, () и К зависят только от х, у и п(х,у). Приведем пример (рис. 64). > РВЕр1ос([1,в(х,у),0),ж(х,у)ю[0юв весЬ(в))юв 5* ° 5ю пзпвв~ерв=[10,30),пишсЬаг=ЗО, ЬавесЬах=схчхе,звесЬой=хпсегпа1,всу1е=Н1)зйЕв1, ох1епсасхоп=[5,57])) 7. Графики и анимация в Мвр1е 147 в Рис.
б4 Графика пакета р/оттоо/в Пакет р)оооо)в содержит следующие команды, позволяющие создавать трехмерные графические примитивы. чтобы использовать их в других графиках: сопе, сиЬоЫ, сиоп, су11пйек, йойесаЬейхоп, Ьезв1врЬеге, ЬезеаЬейтоп, 1соваЬейкоп, оссаЬейхоп, вевзхсогив, врЬеге, сесхаЬейтоп, сохив. Приведем примеры (рис. 65) > вгх~Ь(р1о11оо1в): й г= оссаЬейгоп((0,0,0),0.8), оссаЬейгоп ((1,1,1),0.5)з р1осв Ихвр1ау) (й, вСу1е~рассЬ) т 148 Мар!е Ч Рохчег ЕОШол Рис. 65 На следующем примере показано, как можно построить поверхность, состоящую из правильных многогранников, в данном случае — додеказдров (рис.
66) > баса := ее<[(аец(йойесаЬейкоп([Е,З, еча1Е(4*сов((Е+д)/5))],0.5), 1=-5..5), З=-5..5)з > р1о~е [61ер1ау] ( йаса, ахеа=Еказае, 1аЬе1е= [х,у, г) ) г Рис. 66 1. ГРаФики и анимация в Мар)е 140 Трехмерная анимация Трехмерная анимация выполняется командой ап)п)а(е3(( из пакета р)о(в, Для осуществления анимации в аргумент команды апппатеЗ() добавлен параметр— переменная анимации и необязательная опция (гая)егь Диапазон изменения переменной анимации определяет степень деформации графика, а оппия (гав)еа — число кадров анимации (по умолчанию — ()). Далее пример трехмерной анимации (рис. 67) > утЫЬ(р1о~в) е апиааВе36(сов(В"х)~вхп(с*у),х=-Р1..Р1, у=-Р1..Ра, 1в1..2)т е)е вв уеи тарья) ' а))м о)))).
а)Ь) Е."))ья))ь) 'а)ам)(~щ „~ум()ьх ' ии)) * °, ', ' ' х) () Й уг )' (ь® Ф': же Р в я Фз ~'-х'Ж .а', ' ()45 (()и ва' м ( у в)), и(а )()(я) ('): > ~п)та(ез<)(сов () *х) *и)о(1*у), х=-)') ..)1. у= ут..н) . (=.1., а) Рис. 67 На этом рисунке вид интерфейса программы Мал(е, когда анимационная картинка активизирована. При активизации картинки анимации на инструментальной панели появляются кнопки управления, сходные с кнопками управления магнитофоном. 150 Мер!е Ч Роигег Ее!Юоп 8.
Программирование в среде Мар!е Хотя, как уже бьщо показано в предьщущих главах, много полезных и удивительных результатов можно получить, используя интерактивный режим вычислений, по мере освоения программы Мал!е вы все больше будете ощущать необходимость создания программ. Как упоминалось во введении к этому руководству, более чем 90 % встроенных в систему команл запрограммированы на собственном, подобном Фортрану, языке программирования Мал!е !; позволяю!цем создавать программы как символьных, так и численных расчетов.
В некоторых случаях обойтись без программирования трудно или вообще невозможно, например при выполнении громоздких повторных вычислений, а также для создания расширений, пополняюьцих существующую библиотеку. Эта глава построена следующим образом. В разделе 8.!, будет рассмотрено обычное, процедурного программирования, использующее условные переходы и циклы. В разделе 8.2. — методы пополнения базы данных собственными функциями и операторами, задания свойств этих функций и правил их вычисления. В разделе 8.3 — новый пакет Мар!е У !3ота!пз, средства которого предназначены для ускорения разработки сложных алгоритмов 8.$.
Процедурное программирование 8.1.1. Базисные конструкции языка Базисные конструкции языка программирования Мар/е аналогичны соответствующим конструкциям языков высокого уровня. Перечислим наиболее полезные из них. У/габен/е!ее/Ю При помощи этой конструкции обеспечиваются условные переходы. Приведем пример. > х:=11112 х < 10 е!зетх х"2 е1ее х"3 Нт х:= !1 !33! 8. ПрогРаммирование в среде !в)ер!е 484 Обратите внимание на "б" (!(в обратном направлении) в конце выражения— это признак конца конструкции. После каждой из лексем Феп и е1ве не обязательно стоит один оператор, как в приведенном примере, можно вставлять любое количество программных кодов.
Обратите внимание также, что команда условного перехода заканчивается знаком конца команды — точкой с запятой ";". Это не простое совпадение — !(/(йеп/е)ве/Й вЂ” такая же команда Мир!е, как и любая другая команда и должна заканчиваться точкой с запятой. К конструкции условного перехода может также лобавляться элемент е!!(: М/г!гел/еИ/!)зеп/.../е!ве/Я Это команда условного перехода с введением дополнительных условий е1!г/Гпеп.
Причем можно устанавливать любое число таких дополнительных условий > Н 0<х ахпй х<10 сЬеп х'2 е1Н х<0 сЬехз х е1ве х"3 Нт 1331 Мар!е обрабатывает циклы при помощи двух различных конструкций, в одной из которых Рог/Кгот/Ьу/го/бо/ое! для задания цикла используются верхняя и нижняя границы и величина шага для переменной, меняющейся в диапазоне от нижнего к верхнему значению границы.
Цикл выполняет команды между по и оп' соответствующее число раз. Переменная диапазона может быть также включена в вычисления. Причем между лексемами йо и од может быть включено любое число команд Мар!е. В следующем примере переменная диапазона ! меняется от нижней границы 0 до верхней границы 30 с шагом 10 и на каждом шагу выполняется оператор рг(п !(1" 2); > Кот 1 йхотп 0 Ьу 10 со 30 йо ртхпс(1*2) осг; 0 100 400 900 Еще одна конструкция для задания цикла УЧИ!е/г(о/ог) Мал!е будет повторять оператор, заключенный межлу до и оп', пока логическое соотношение, записанное между лексемами хгй!!е и Ио, не станет истиной.
> ххах= 1т и:= 1 152 Мар(е Ч Розггег Ег)Шоп > згЬа1е и < 10 г1о и:= и"2+1г ос1г и:= 2 и:= 5 п:= 26 8.1.2. Процедуры Для того чтобы создать процелуру (подпрограмму), которую вы могли бы использовать неоднократно, в программе Мар/е используется конструкция ргос/евв. Процелура записывается слелуюшим образом > Имя:=рхос(параметр1::суре1,параметр2::суре2, ...) 1оса1 11,12...; д1оЬа1 д1,д2...! орс1опа ор1, ор2, ...; тело процедуры; епс(! Она начинается с имени, которому присваивается ключевое слово ргос (сокрашсннос от ргосег(цге), за которым в скобках перечисляются формальные параметры процедуры с необязательным указанием их типа — через дважды записанное двоеточие.
Далее может идти необязательное перечисление локальных и глобальных переменных, используемых в теле процедуры, заканчиваемое знаком ";". Велел за чтим, если необхолимо. идет перечисление опций процедуры, заканчиваемое знаком ";". Далее идет тело процедуры — алгоритм вьшолнсния процедуры. Процедура обязательно заканчивается словом евг( и следующим за ним знаком конца команды (лвоегочие или точка с запятой). Результатом выполнения процелуры является результат послелней выполненной операции. если не применены одна из команд возврата КВП)КХ или ЕККОК (смотрите ниже).