В. Матросов Основыработы
Скачать 0.71 Mb.
|
Рис . 12 Целые числа, дроби и радикалы (MF-12.GIF) Числа с плавающей точкой задаются в виде целой и дробной частей, разделенных десятич- ной точкой, и предшествующим знаком числа, например 2.3456, -3.415. Можно задать целый показатель степени после букв e или E, в которую необходимо возвести число 10 и потом умножить его на заданную мантиссу числа. Например, 2.345e4 соответствует числу 23450.0. Таким образом можно представлять очень большие по абсолютному значению числа (пока- затель степени положительное число) или очень маленькие (показатель степени отрицатель- ное число). 24 Из чисел можно составлять математические выражения с помощью арифметических опера- ций. Символами арифметических операций являются: Символ Операция + Сложение - Вычитание * Умножение / Деление ^ или ** Возведение в степень ! Факториал (только целое) Последовательность выполнения арифметических операций соответствует стандартным пра- вилам старшинства операций в математике: сначала производится возведение в степень, за- тем умножение и деление, а в конце - сложение и вычитание. Все действия выполняются слева направо. Операция вычисления факториала имеет наибольший приоритет. Для измене- ния последовательности арифметических операций следует использовать круглые скобки. Если в выражении все числа являются целыми, дробями или радикалами, то результат пред- ставляется также с использованием этих типов данных, но если в выражении присутствует число с плавающей точкой, то там, где это возможно, Maple будет производить вычисления с абсолютной точностью, но некоторые подвыражения будут вычислены с плавающей точкой, как показано на рис.13. Рис . 13 Вычисления с плавающей точкой (MF-13.GIF) Скажем так, Maple всегда пытается произвести вычисления с абсолютной точностью. Если это не получается, тогда он подключает арифметику с вещественными числами. Кроме чисел, задаваемых пользователем, Maple содержит целый ряд предопределенных име- нованных констант – констант, к значению которых можно обращаться с помощью некото- рого имени. Часть этих констант не может быть изменена, а часть можно изменять. К неизменяемым константам относятся следующие: 25 Константа Значение false Значение «ложь» при работе с булевскими переменными true Значение «истина» при работе с булевскими переменными gamma Константа Эйлера ( ) γ = − ≈ →∞ = ∑ lim ln n i n i n 1 1 ≈ 0.5772156649... Pi Число π ≈ 3.14159265... I Мнимая единица − 1 infinity Бесконечность ∞ Константы, значения которых могут быть переопределены, – это константы, задающие необ- ходимые для работы системы значения. К наиболее важным можно отнести две константы, позволяющие влиять на точность вычислений: Digits и Order . Первая константа задает число значащих цифр для операций с числами с плавающей точкой. По умолчанию она име- ет значение 10. Константа Order определяет количество членов в разложении функции в ряд (по умолчанию установлена равной 6). Кроме чисел Maple позволяет работать со строкой - любым набором символов, заключен- ным в обратные кавычки, например, `Это пример строки в Maple`. Для работы со строками и строковыми переменными существует набор функций, с которым можно ознакомиться по справочной системе. Мы изучили, как работать в Maple с числовыми выражениями, но это только позволяет ис- пользовать его как некоторый достаточно «умный» калькулятор, не включая всю мощь ана- литических вычислений. Первым шагом к освоению всех возможностей Maple является зна- комство с переменными, в которых можно хранить вычисленные значения, функции и целые выражения. Каждая переменная Maple имеет имя – последовательность символов, начинающаяся с бук- вы, причем строчные и прописные буквы считаются различными. Про такие системы гово- 26 рят, что они чувствительны к регистру. Кроме букв в именах переменных могут использо- ваться также цифры и знак подчеркивания. Примеры различных имен: MyName, myname, my_name В качестве имен запрещено использовать зарезервированные слова языка Maple: and by do done elif else end fi for from if in intersect local minus mod not od option options or proc quit read save stop then to union while Важной операцией в Maple является операция присваивания (:=). Синтаксис этого оператора следующий: переменная := выражение; Здесь в левой части задается имя переменной, а в правой части любое выражение, которое может быть числовым, символьным или просто другой переменной. Семантика (смысл) это- го оператора в том, что переменной в левой части присваивается значение выражения, стоя- щего в правой части. Рис . 14 Переменная, которой не присвоено никакого значения (MF-14.GIF) Переменные позволяют хранить и обрабатывать разнообразные типы данных, с которыми работает Maple. Мы уже знакомы с такими типами данных, как целый ( integer ), дробь ( fraction ), вещественный ( float ) и строка ( string ). Кроме этих типов данных суще- ствует еще большое множество типов, необходимых для выполнения аналитических преоб- разований: функция ( function ), индексные данные ( indexed ), множество ( set ), список ( list ), разложение ( series ), последовательность выражений ( exprseq ) и некоторые дру- гие. Постепенно по мере продвижения нашего изучения Maple мы познакомимся со всеми этими типами данных. 27 По умолчанию переменная Maple имеет строковый тип, и ее значением является ее соб- ственное имя. Поэтому простое объявление переменной g оператором g; приведет к отоб- ражению в области вывода рабочего листа имени этой переменной, как показано на рис. 14. На этом же рисунке можно увидеть функцию whattype() , которая определяет тип выра- жения или переменной, заданных в качестве ее параметра. Видно, что эта переменная дей- ствительно является строковой ( string ). То, что переменная по умолчанию является строковой, оказывается очень полезным при за- дании функций. Если имя функции Maple задано не совсем правильно, или такой функции не существует, или не подключен пакет, где она расположена, то ответом Maple на попытку вы- числить ее будет отображение в области вывода не результата выполнения функции, а пол- ностью повторенная строка области ввода. При присвоении переменной какого-нибудь значения, ее тип изменяется на тип присвоенно- го ей значения. Переменные можно использовать для составления выражений наряду с числами. Все, ска- занное выше о числовых выражениях и порядке их вычисления, относится и к выражениям, содержащим переменные. Обычно в математических выражениях используются разнообразные математические функ- ции. В Maple изначально определен большой набор стандартных математических функций, начиная от элементарных и заканчивая специальными функциями, используемыми при ре- шении сложных задач математической физики. Справку о всех, имеющихся в Maple функ- ций, можно получить, выполнив команду ?inifunction В следующей таблице представлены основные математические функции и соответствующий им синтаксис Maple: Функция Синтаксис Maple e x exp(x) ln( ) x ln(x) или log(x) log ( ) 10 x log10(x) log ( ) a x log[a](x) x sqrt(x) x abs(x) sgn( ) x signum(x) n! n! Задание тригонометрических и гиперболических функций представлено в следующей табли- це. Обратим внимание на несоответствие записи некоторых функций в русскоязычной мате- 28 матической литературе и в англоязычной, например функция тангенса угла. Значения пара- метров тригонометрических функций задаются в радианах. Функция Синтаксис Maple sin( ) x sin(x) cos( ) x cos(x) tg( ) x tan(x) sec( ) x sec(x) cosec( ) x csc(x) ctg( ) x cot(x) sh( ) x sinh(x) ch( ) x cosh(x) th( ) x tanh(x) sech( ) x sech(x) cosech( ) x csch(x) cth( ) x coth(x) Задание обратных тригонометрических и обратных гиперболических функций представлено следующей таблицей: Функция Синтаксис Maple arcsin( ) x arcsin(x) arccos( ) x arccos(x) arctg( ) x arctan arcsec( ) x arcsec(x) arccosec( ) x arccsc(x) arcctg( ) x arccot(x) arcsh( ) x arcsinh(x) arcch( ) x arccosh(x) arcth( ) x arctanh(x) arcsech( ) x arcsech(x) arccosech( ) x arccsch(x) arccth( ) x arccoth(x) Задание в Maple функций Бесселя, эллиптических интегралов, дельта-функции Дирака, функции Хевисайда и других специальных функций можно найти в Справке. Команды Технология работы в Maple заключается в том, что пользователь создает переменные и вы- ражения и производит над ними некоторые действия в соответствии с алгоритмом решения поставленной задачи, использую стандартные функции или написанные собственные проце- дуры. Синтаксис вызова стандартной команды или функции следующий: 29 команда ( пар _1, пар _2, ... , пар _n); или команда ( пар _1, пар _2, ... , пар _n): Здесь команда - это имя вызываемой функции, а пар _1, пар _2, ... означают необхо- димые для выполнения команды параметры, которые могут быть переменными или даже вы- ражениями, причем их тип должен соответствовать типу параметров соответствующей функции. Отметим, что первая форма задания команды (с завершающей точкой с запятой) осуществляет отображение результатов ее выполнения в области вывода, тогда как при вто- рой форме (с завершающим двоеточием) команда выполняется, но никакого вывода резуль- татов не происходит. Система Maple является достаточно интуитивной системой, поэтому обыкновенно имя функции соответствует действию, которое она выполняет (следует учесть, что все имена за- даны на английском языке). Например, ясно, что функция с именем simplify() осуществ- ляет некоторые упрощения над выражением, заданным в качестве ее параметра. Команды и функции, являющиеся частью ядра системы Maple, всегда доступны пользовате- лю, тогда как для вызова других команд и функций необходимо подключить библиотеку или пакет, в которых они расположены. Для этого используются команды readlib() и with() . Первая подключает библиотеку, вторая - пакет. Параметром этих команд является имя библиотеки или пакета, функции которых пользователь желает использовать. Команды и функции ядра Наиболее часто используемые при аналитических преобразованиях команды и функции Maple располагаются в его системном ядре - части программного обеспечения системы ана- литических вычислений, постоянно находящейся в памяти компьютера. К таким командам относятся команды, выполняющие разнообразные преобразования выражений, получающие решение уравнений и систем уравнений, дифференцирующие функции и т.д. В данном раз- деле вводятся команды, наиболее часто используемые при выполнении аналитических вы- числений. Команда simplify() Начнем с команды упрощения выражений - команды simplify() . Эта команды предназна- чена для упрощения разнообразных выражений, включающих рациональные дроби (алгебра- ические выражения), содержащих тригонометрические, обратные тригонометрические 30 функции, логарифмы и экспоненты, т.е. с ее помощью можно попытаться упростить выраже- ние, составленное из элементарных функций. Почему попытаться? Просто потому, что Maple может его упростить, а может и не упростить, так как он использует свои внутренние алго- ритмы упрощения, которые могут содержать не все возможные формулы, используемые че- ловеком при упрощении выражений, хотя практически он всегда упрощает заданное выра- жение. Синтаксис команды упрощения следующий: simplify( выражение ); В скобках в качестве параметра передается выражение, подлежащее упрощению. Команда simplify() ищет в выражении вызовы функций, квадратные корни, радикалы и степени и инициализирует подходящие процедуры упрощения. Maple содержит большое число подоб- ных процедур, относящихся к упрощению выражений, содержащих определенный набор элементарных и специальных математических функций. Мы перечислим часть из них, остальные можно найти в справке по этой команде (например, установив курсор в рабочем листе на ее имя и нажав ): exp - экспоненты, ln - логарифмы, sqrt - квадратные кор- ни, trig - тригонометрические функции, radical - радикалы (дробные степени), power - степени, экспоненты, логарифмы, BesselI - функции Бесселя и т.д. В вызове команды можно задать конкретные процедуры упрощения, и тогда только они бу- дут использоваться для упрощения заданного выражения, а не весь возможный, установлен- ный по умолчанию набор. Такой вызов обеспечивается следующим синтаксисом команды: simplify( выражение , n1, n2, ...); Здесь n1 , n2 и т.д. являются именами процедур упрощения: Ei , GAMMA , RootOf , atsign , hypergeom , ln , polar , power , radical , siderel , sqrt , trig . Полную информацию о формулах упрощения при использовании перечисленных значений параметров можно полу- чить с помощью команды ?simplify[ имя ] , где имя – одно из значений параметров функ- ции упрощения. При упрощении выражения можно предположить, что все переменные в нем являются , например, положительными, или принадлежат некоторому отрезку действительных чисел. Это осуществляется заданием ключевого параметра assume= свойство . Форма вызова ко- манды в этом случае имеет вид: simplify( выражение , assume= свойство ); 31 где значение ключевого параметра свойство может принимать одно из следующих значе- ний: complex - комплексная область, real - действительная область, positive - положи- тельные действительные числа, integer - целые числа, RealRange(a,b) - интервал (a,b) действительных чисел. Ниже представлены примеры использования команды упрощения выражений simplify() : > f:= ln(exp(x)); f x : ln( ) = e > simplify(f); ln( ) e x > simplify(f, assume=real); x > a:=1/sqrt(5)*(((1+sqrt(5))/2)^3-((1-sqrt(5))/2)^3); a: = + − − 1 5 5 1 5 2 1 5 2 3 3 > simplify(a); 2 Обратим внимание на упрощение выражения f. Использование команды без параметров не упростило выражения ln( ) e x , тогда как второй оператор с предположением о действитель- ной области изменения переменной x упростил заданное выражение. При упрощении Maple предполагает, что там, где это возможно, переменные изменяются в области комплексных чисел, тогда действительно невозможно упростить выражение f. Команда expand() Основное назначение команды expand() – представить произведение в виде суммы, т.е. данная команда раскрывает скобки в алгебраическом выражении. Она выполняется для лю- бого полинома. Для частного двух полиномов (рациональная алгебраическая дробь) она рас- крывает скобки в числителе и делит каждый член полученного выражения на знаменатель, с которым она не производит никаких преобразований. 32 Кроме того, данная команда умеет работать с большинством математических функций и зна- ет, как раскрывать скобки в выражениях, содержащих следующие функции: sin( ) x , cos( ) x , tg( ) x , sh( ) x , ch( ) x , th( ) x , ln( ) x , специальные математические функции и т.д. Синтаксис этой команды следующий: expand( выр , выр 1, выр 2, ... , выр n); где выр является выражением, в котором необходимо раскрыть скобки, необязательные па- раметры выр 1, выр 2, ... , выр n указывают системе, что в данных выражениях в за- данном преобразуемом выражении выр раскрывать скобки не надо. Несколько примеров использования этой команды приведены ниже: > expand((x+1)*(x+2)); x x 2 3 2 + + > expand((x+1)^3/(x+2)^2); x x x x x x x 3 2 2 2 2 2 2 3 2 3 2 1 2 ( ) ( ) ( ) ( ) + + + + + + + > expand(sin(x+y)); sin( ) cos( ) cos( )sin( ) x y x y + > expand(exp(a+ln(b))); e a b > expand((x+1)^2*(y+z), x+1); ( ) ( ) x y x z + + + 1 1 2 2 Как видно из приведенных примеров, данная функция может преобразовывать разнообраз- ные тригонометрические выражения, выражения с экспоненциальными функциями и поли- номы. Команда normal() Назначение команды normal() – упростить алгебраическую дробь, сократив и числитель, и знаменатель на наибольший общий делитель. Она имеет две формы вызова: normal(f); 33 normal(f, expanded); где f – алгебраическая дробь, а параметр expanded служит для указания того, что после сокращения дроби в числителе и знаменателе раскрываются скобки. Если параметр f задан в виде списка, множества, последовательности, ряда, уравнения, от- ношения или функции, то команда normal() последовательно применяется к компонентам f . Например, в случае ряда, это означает, что упрощаются коэффициенты ряда. Приведем несколько примеров использования команды normal() : > f:=(x^2-y^2)/(x-y)^3; f x y x y : ( ) = − − 2 2 3 > normal(f); x y x y + − ( ) 2 > normal( f, expanded ); x y x xy y + − + 2 2 2 > normal( 2/x + y/3 = 0 ); 1 3 6 0 + = xy x > s:=sin(x*(x+1)-x); s x x x : sin( ( ) ) = + − 1 > normal(s); sin( ) x 2 Обратим внимание на то, что третья команда в этих примерах применяется к уравнению (equation) – типу Maple, обсуждение которого отложим до знакомства с командой решения уравнений и неравенств. |