Матросов А.В. Maple 6. Решение задач высшей математики и механики (1185909), страница 24
Текст из файла (страница 24)
В нашем примере 2 соответствует второму операнду пз) исходного выражения (сов(х) ), ! — первому операнду этого второго операнда (соз(х)), а 0 используется для имени функции в первом операнде второго операнда исходного выражения, который имеет тип функция. Таким способом можно в выражении заменять имена функций. (гт Глава г Основныв обьвкты и команды Иногда необходимо выполнить преобразование выражения одного типа в другой тип. Такое преобразование типов может потребоваться для выполнения некоторых действий над выражением с помощью команды, не работающей с исходным типом выражения.
Например, нельзя строить график ряда Тейлора какой-либо функции, но всегда можно построить график полинома. Следовательно, следует выражение, имеющее тип ает ез (ряд), пре- ОбраЗОВатЬ В ВЫражЕНИЕ, ИМЕЮЩЕЕ тИП ро1упош (ПОЛИНОМ), а ПОТОМ ВОСПОЛЬЗОВатЬСя КОМаНдОй ргот () дЛя ПОСтрОЕНИя ГрафИКа. Преобразовать выражение в другой тип можно командой соптетс(), первым параметром которой задается выражение, а вторым — тип, в который зто выражение следует преобразовать. 1'еф~)(фф)ф~"-„'ф)фф((4)й(((й(й(1)уйх!)т()ф(в(й)((((й"3:.„;:.,;:.-" " - "=,:;.,: .-, > С3г Еау1ОХ(Г,к=О)3 1 3 1 3 1 4 1 3;= 1 + х+ — х" + -х'+ — х'+ — х'+ О(х') 2 6 24 120 > р3=-со3г ехе(е,ро1упоп3)3 3 1 3 1 4 1 5 р:=1+х+ — х + — х + — х + — х 2 б 24 120 > Р1ое([Г,Р),х=-2..б,со1от=Ь1асХ,11пезтУ1е=(1,4) ) 3 Преобразование типов в Мар!е имеет некоторые ограничения, т.
е. нельзя преобразовать выражение произвольного типа в выражение другого типа, который поддерживается системой аналитических вычислений. Например, мы видели, что ряд можно преобразовать в полипом, однако, обратное неверно: > соп33ехе(р, аех3еа) 3 еххох, ппаЫе ео соп33ехь Ошибка, невозможно преобразовать ГВсе допустимые преобразования можно посмотреть в справке по команде соп33ехе () . Часть!.
Основы Мар!в ггв 2.3.3. Вычисление выражений В программах символьных вычислений пользователь сталкивается с понятием вычисление символьных имен, которое отсутствует в системах численных расчетов. Действительно, так как можно использовать неопределенные переменные, или неизвестные, то какому значению должна равняться переменная х, если сначала ей присвоили неизвестную величину у, затем неизвестной и присвоили неизвестную величину х, и, наконец, переменной = присвоили число 5. Ответ на этот вопрос дают правила вычислений, включающие в себя понятие уровней вычислений. 2.3.3.1. УРОВни Вымиь>лемий В большинстве случаев Мар1е использует алгоритм полного вычисления имен.
Это означает, что когда необходимо вычислить значение символьной переменной, проверяется, присваивалось ли ей какое-либо значение. Если да, то оно подставляется вместо имени переменной и проверяется, солержит ли подставленное значение неизвестные переменные. Если содержит, то проверяется, было ли присваивание для этих имен и процесс продолжается дальше рекурсивно, пока вместо имен всех переменных не, будут подставлены присвоенные им значения, или если им ничего не присваивалось, то такие имена останутся в окончательном результате вычисления имени переменной как неизвестные величины. Теперь понятно, как Мар1е решит поставленную в начале данного подразде ла задачу — значение переменной х будет равно 5.
> х>=у! у:=т > х:=5; > х; При вычислении значения имени или символа может оказаться, что необходимо осуществить несколько подстановок, как в нашем примере. Каждая подстановка при вычислении имени называется уровнем вычисления имени, и все они последовательно нумеруются, начиная с самого первого присваивания значения имени. Команда ахаты служит для явного полного вычисления имени, заданного в качестве значения ее первого параметра. Вторым параметром, принимающем целые значения, можно задать глубину вычисления имени, определив Глава 2 Основные обьекты и команды уровень, до которого имя следует вычислить. Пример 2.45 иллюстрирует использование этой команды для вычисления имени х, определенного в предыдушем примере 2.44.
с],]~~(,")йфФ,'~фф~(~;.$~ф~$$4~~(]~:.'-";-';,. ':;- > еча1(х); () Полное вычисление 5 > еча1(х,1); 4 Вычисление до первого уровня У > еуа1(х,2); () Вычисление до второго уровня > еча1(х,з); (] Вычисление до третьего уровня 5 Правилу полного вычисления подчиняются переменные всех типов за исключением переменных, содержаших массивы, таблицы, матрицы и процедуры. Для них действует правило, в соответствии с которым они вычисляются до значения последнего присвоенного имени, содержащего указанные выше объекты.
Такое правило для массивов, таблиц, матриц и процедур введено для того, чтобы сохранять компактное представление элементов массивов с не присвоенными значениями и не вычисленными командами, например з]п(х). Для полного вычисления имен, храняших массивы, таблицы и процедуры, следует явно инициировать полное вычисление командой еуа1 (). „,Е]амМагм'Йк.',, ' ' " '"" " "'" ' "'--;":.;.. -,',"-.Г(",, > х:=у; х:=у > у:=аггау(( (1,2], [2,1] ] ); > х; > еча1(х); [г 1] > еча1 (х, 1) ) > еча1(х,2); Часты Основы Ьаар(е 530 По умолчанию Мар!е не отображает код библиотечных процедур при их полном вычислении функцией еча1().
Такой режим отображения можно изменить, установив опцию чегьозергос, равной 2, в коианде псегтасе(Н > еча1(з1п5 ргос(х: а)яеЬга(с) ...епд ргос > 1птеггасе(чегьозергос5 2); > еча1(ехр)г ргос (хга(~еЬгагс ) !оса! ~', т,д, п,5; г; ортюп 'СорупдЬ! (г) 5992 Ьу тЬе 15пгхеггйу о5 Итатег(оо. А5! г(яЬгз геаегчег(. ' !Г пагяз и ! 5)геп еггот "ехресйпа 1 агептпепг, яо1 ОЬ!", патра е!(т" гуре (х, 'соп|р)ех (5)оа! )') 1)геп еча1т( 'ехр'(х ) ) епд 15 е!!т" турешатсЬ (-5хх, 'аг'(г: та!тапа! ',Я агггггя ')) 1)геп ехр(х):= ехр(5> Г)"г е1зе ехр(х):= 'ехр'(х) епд (т" епд ргос В приведенном примере текст процедуры вычисления синуса приведен не полностью в связи с его большими размерами.
Иногда необходимо просто вычислить имя переменной, не инициируя алгоритм полного или частичного вычисления. Для подобных целей в Мар1е ПрИСутСтВуЕт КОМаНда еча1п(), КОтОрая "ВЫЧИСЛяЕт ИМя" СИМВОЛЬНОЙ ПЕРЕ- менной, переданной ей в качестве параметра, даже если атой переменной были присвоены значения: > х;=ш х:= и > хг > еча1п(х! Если заключить имя переменной в одинарные кавычки, то их действие будЕт аиаЛОГИЧНО дЕйСтВИЮ КОМаидЫ е з1г 1). ПОдОбНОЕ ОбСтОятЕЛЬСтВО ЧаСтО используется для передачи в некоторые команды, которые в качестве параметра требуют имя переменной, "закавыченное" имя переменной, дабы избежать появления ошибок: Глава 2 Основные обьеиты и команды > 1:=5! 1':= 5 > еап(1" 2, 1 1..
3) ! еппоп, (ьа аппп) поппппс1оа ппахгаЫе рпептоип1у аеа1чаее, аесоап) апоаееап ееа1оасее йо 5 = 1 .. 3 > аппп('1'"2,'1'=1..3)п (4 Если переменной присвоить ее же имя, заключенное в кавычки, то зта операция приведет к тому, что переменная снова станет "чистой", т. е. будут аннулированы все предыдушие присваивания, и ее снова можно использовать в качестве неизвестной величины: > х:=1," х:= ! > х; > х:='х' х:=х > х; Действие операции заключения в одинарные кавычки распространяется на целые выражения, откладывая их полное вычисление: > у:=1; у:= 1 > х:=уа1; х:=2 > х:='у+1'! х:=у+ ! Команда аее чаес() проверяет, было ли переменной, определенной ее па- раметром, присвоено какое-либо значение: > ааа1даеп(пь) (пие Задача вычисления имен — это специфическая задача систем аналитических вычислений, а в практике математических вычислений часто встречается задача вычисления значения некоторого выражения или функции в определенной точке.
В Мар1е ее можно решить несколькими способами. Например, присвоить неизвестной величине необходимое значение, и при очередном вычислении вместо этой величины будет подставлено ее значение и результатом будет значение выражения в заданной точке: Часть !. Основы )Ыар(е > Ос=-х"2+хс-1т е:=х +х+1 > х:=-1т х:= ! При таком подходе, однако, мы "теряем" выражение как выражение с неиз- вестной переменной. Поэтому в подобных случаях лучше воспользоваться фУНКЦИЕй ета1() „ЗадаВ ЕЕ ВтОрЫМ ПараМЕтрОМ ураВНЕНИЕ, В ЛЕВОЙ ЧаСтИ КО- торого стоит неизвестная величина, а в правой — ее значение: > чс=х"2+х+1; д:=хт ех + ! > ета1 (с), х=1)' х ах+1 > с(ег := сИ ст(Г(х),х) + 1(х) (' д Ыег:= ~ — 1(х)) + Кх) дх > есса1(с(ег,х=с) ( — йх)) е(10) с)!ГГЩО), О) +(тО) > зиьа (х=с,с)ег) Замечание При использовании команды ееа1() для вычисления значения выражения в точке можно через запятую задавать значения для нескольких неизвестных или параметров: > есса1(а*х 2+Ь*х+с,х=1,а=2,Ь=.З,с=О) Мар!е по умолчанию стремится производить все преобразования и вычисления с максимальной точностью, т.
е. там, где это возможно, использовать Переменная, хранящая выражение с неизвестной, продолжает его хранить и ПОСЛЕ ВЫЧИСЛЕНИЯ КОМаНдсй ека1(). ПОдОбНОГО жЕ ЭффЕКта МОЖНО дОСтИЧЬ И С ПОМОЩЬЮ фуНКцИИ апьз (), НО ИСПОЛЬЗОВаНИЕ фуНКцнн ета1() ПрИВОдИт к корректным математическим вычислениям. Эта функция умеет вычислять интегралы и производные, а также работать с кусочно-непрерывными функциями, тогда как использование для целей вычисления выражения в ТОЧКЕ фуНКцИИ асье() МОжЕт ПРИВОдИтЬ К НЕПраВИЛЬНЫМ МатЕМатИЧЕСКИМ результатам: Глава 2.