|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Внутренняя структура объектов Maple. Подстановка и преобразование типовПреобразования чисел с разным основанием В Maple возможна работа с числами, имеющими различное основание (base), в частности, с двоичными числами (основание 2 — binary), восьмеричными (основание 8 — octal) и шестнадцатиричными (основание 16 — hex). Функция convert позволяет легко преобразовывать форматы чисел: > convert(12345,binary); > convert(%,decimal,binary); > convert(12345,octal); > convert(123456,hex); E240 > convert(%,decimal,hex); Помимо приведенных вариантов функция convert имеет еще ряд других форм. С ними можно познакомиться с помощью справки по этой мощной функции. В дальнейшем будет приведен ряд других применений этой функции. Контроль за типами объектов Выражения и их части в Maple рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т.д. Могут также возвращаться данные об операторах. Примеры применения этой функции даны ниже (файл control): > whattype(2+3); Integer > whattype(Pi); Symbol > whattype(123./5); Float > whattype(1/3); Fraction > whattype(sin(x)); Function > whattype([1, 2, 3, a, b, c]); List > whattype(a+b+c); + > whattype(a*b/c); * > whattype(a^b); ^ > whattype(1+2+3=4); = С помощью функции type(object,t) можно выяснить, относится ли указанный объект к соответствующему типу t, например: > type(2+3,integer); True > type(sin(х),function); True > type(hello,string); False > type("hello",string); True > type(1/3,fraction); True При успешном соответствии типа объекта указанному (второй параметр), функция type возвращает логическое значение true, в противном случае — false. Для более детального анализа объектов может использоваться функция hastype(expr, t), где expr — любое выражение и t — наименование типа подобъекта. Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении expr. Примеры применения этой функции даны ниже (файл control): > hastype(2+3,integer); True > hastype(2+3/4,integer); False > hastype(2*sin(x),function); True > hastype(a+b-c/d,`+`); True Еще одна функция — has(f,x) — возвращает логическое значение true, если подобъект х содержится в объекте f, и false в ином случае: > has(2*sin(х),2); True > has(2*sin(x), `/`); False > has(2*sin(x),3-1); True Следует отметить, что соответствие подобъекта выражения указанному подобъекту понимается в математическом смысле. Так, в последнем примере подобъект «3-1», если понимать его буквально, в выражении 2*sin(x) не содержится, но Maple-язык учитывает соответствие 3-1=2, и потому функция has в последнем примере возвращает true. Функция has может использоваться для выявления той или иной математической операции, оператора или функции. Однако надо соблюдать определенные правила, поскольку выражение, анализируемое функцией has оценивается и исполняется. Внимательно проанализируете приведенные ниже примеры: > has(2*sin(2),sin); True > has(2*sin(2),'sin'); True > has(2*sin(2.), 'sin'); False Здесь надо учесть, что выражение 2*sin(2) после оценки и исполнения не меняется, поскольку Maple, при целочисленном аргументе функции синуса, не вычисляет ее и вычисленное выражение совпадает с исходным и содержит функцию синуса. Однако sin(2.) уже вычисляется и становится числом. Именно поэтому в последнем примере функция sin уже не обнаруживается. Подобное имеет место и в ряде других примеров с функцией интегрирования: > has('int(х^2,х)',int); True > has(int(х^2,х),int); False > int(х^2,х); > has(int(х^2,х), х^3/3); rue Столь же поучителен пример с идентификацией функции интегрирования. Так, has(int(х^2, х), int); дает false, поскольку интеграл оценивается и вычисляется, что ведет к подмене выражения на х^3/3 уже не содержащего признаков интегрирования. Это и поясняют два последних примера, в которых вычислено значение интеграла и функция has дает значение true для значения интеграла. В тоже время заключение int(x^2,x) в апострофы позволяет найти имя функции интегрирования int, поскольку исходное выражение в этом случае представлено в неисполняемой форме и содержит обращение к этой функции. Еще одна иногда полезная функция контроля выражений depends(f,x) возвращает true, если х входит в f и false в противном случае. При этом надо также помнить, что функция (выражение) оценивается и исполняется. Следующие примеры хорошо иллюстрируют сказанное: > depends(2+2*sin(x),х); True > depends(int(х^2,х),х); True > depends(int(х^2,х=0..1), х) False В последнем примере вычисленное выражение это уже просто число, в нем х не содержится, а потому и получено значение false. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.) |