Использование команд преобразования выражений Maple для математических вычислений
Кафедра: Информационные Технологии Лабораторная работа На тему: "Использование команд преобразования выражений Maple для математических вычислений" Москва, 2008 г Цели работы: знать команды, наиболее часто используемые при выполнении аналитических вычислений; уметь применять указанные команды для решения математических задач. 1. Команды преобразования выражений Процесс работы в Maple состоит в том, что пользователь создает переменные, присваивает им символьные выражения и производит над ними некоторые действия в соответствии с алгоритмом решения поставленной задачи, использую стандартные функции или написанные собственные процедуры. Синтаксис вызова стандартной команды следующий: команда (пар_1, пар_2,…, пар_n); Здесь команда - это имя вызываемой функции, а пар_1, пар_2,… означают необходимые для выполнения команды параметры, которые могут быть переменными или даже выражениями, причем их тип должен соответствовать типу параметров используемой функции. Отметим, если команда завершается точкой с запятой, то результаты ее выполнения отображаются в области вывода, если команда завершается двоеточием, то она выполняется, но никакого вывода результатов не происходит. Система обозначений функций в Maple интуитивно проста. Обычно имя функции соответствует действию, которое она выполняет (следует учесть, что все имена заданы на английском языке). Например, ясно, что функция с именем simplify () осуществляет некоторые упрощения над выражением, заданным в качестве ее параметра. Для некоторых команд существуют активная и пассивная формы. Активная форма команды (в случае ее вызова) немедленно выполняется, а ее имя начинается со строчной буквы. Пассивная форма команды не выполняется немедленно, а просто в области вывода отображается математическая запись того, что она может сделать. Ее имя начинается с прописной буквы. В дальнейшем, если в операторе присваивания для некоторой переменной в правой части задана пассивная форма команды, то командой value () ее можно вычислить. Основное предназначение пассивных форм команд - это использование их как средства документирования производимых действий в обычной математической нотации. Примерами команд с двумя формами являются команда дифференцирования (diff и Diff), интегрирования (int и Int) и др. Пример 1. Пассивная и активная формы команд. > k:=Int (cos(x)^3, x); > k=int (cos(x)^3, x); > value(k); Если команды и функции являются частью ядра системы Maple, то они всегда доступны пользователю. А для вызова других команд и функций необходимо подключить библиотеку или пакет, в которых они расположены. Для этого служат команды readlib () и with (). Первая подключает библиотеку, вторая - пакет. Параметром этих команд является имя библиотеки или пакета, функции которых пользователь желает использовать. Команды и функции Maple, наиболее часто используемые при аналитических преобразованиях, располагаются в его системном ядре - части программного обеспечения системы аналитических вычислений, постоянно находящейся в памяти компьютера. К ним относятся команды, выполняющие разнообразные преобразования выражений, получающие решение уравнений и систем уравнений, дифференцирующие функции и т.д. В данной работе вводятся команды, наиболее часто используемые при выполнении аналитических вычислений. 2. Упрощение выражения: simplify () Команда simplify () предназначена для упрощения разнообразных выражений, составленных из чисел, переменных и элементарных функций. Заметим, что Maple может его упростить, а может и не упростить, так как он использует свои внутренние алгоритмы упрощения, результат выполнения которых может не совсем соответствовать взглядам пользователя на то, как он хотел бы упростить выражение и в каком виде его получить. Эта команда имеет несколько форм вызова. Ее самый простой синтаксис имеет следующий вид: simplify (выражение). В скобках указывается выражение, подлежащее упрощению. Команда simplify () ищет в выражении вызовы функций, квадратные корни, радикалы и степени и инициализирует подходящие процедуры упрощения. Реально команда simplify () реализована в виде набора процедур упрощения, хранящихся в основной библиотеке Maple. Перечислим некоторые из них, остальные можно найти в справке по этой команде (например, установив курсор в рабочем листе на ее имя и нажав клавишу <F1>): `simplify/exp` - для упрощения выражений с экспоненциальными функциями, `simрlifу/ln` - для упрощения выражений с логарифмами, `simplifу/sqrt` - для упрощения выражений, содержащих квадратные корни, `simplifу/trig` - для упрощения выражении с тригонометрическими функциями, `simplifу/radical` - для упрощения выражений с радикалами (дробные степени), `simplifу/power` - для упрощения выражений со степенями, экспонентами и логарифмами и т.д. По умолчанию Maple пытается использовать максимальный набор функций упрощения, подходящий к конкретному выражению. В команде можно задать конкретные процедуры упрощения, и тогда только они будут использоваться для упрощения заданного выражения, а не весь возможный, установленный по умолчанию набор. Это обеспечивается следующим синтаксисом команды: simрlifу (выражение, nl, n2,…); Здесь nl, n2 и т.д. являются именами процедур упрощения: Ei, GAMМА, RootOf, @, hypergeom, ln, polar, power, radical, sqrt, trig. Полную информацию о формулах упрощения при использовании перечисленных значений параметров можно получить с помощью команды? simplify [имя], где [имя] - одно из значений параметров функции упрощения. Упрощения выражений можно проводить с различными видами чисел, например, положительными или принадлежащими некоторому отрезку действительных чисел. Это достигается с помощью параметра assume=свойство. Форма вызова команды при этом имеет вид: simplify (выражение, аssumе=свойство); где параметр свойство может принимать одно из следующих значений: complex - комплексная область, real - действительная область, positive - положительные действительные числа, integer - целые числа, RealRange (a, b) - интервал (а, b) действительных чисел. Примеры использования команды упрощения выражений simplify() представлены ниже: Пример 2. Упрощение выражений. > c:=ln (exp(x))+x*ln (exp(x)); > simplify(c); > simplify (c, assume=real); > d:=1/sqrt(8)*(((1+sqrt(8))/10)^5+((1_sqrt(8))/10)^5); > simplify(d); Как видно из примера 2, использование команды без параметров не упростило выражения ln (exp(x))+x?ln (exp(x)), тогда как второй оператор с предположением о действительной области изменения переменной х упростил заданное выражение. Maple по умолчанию работает с комплексными числами (т.е. при упрощении предполагается, что переменные изменяются в области комплексных чисел). При таком предположении упростить выражение с действительно невозможно. Пример 3. Упрощение с предположением. > f:=(sqrt (x^2)); > simplify(f); > simplify (f, assume=real); > simplify (f, assume=positive); Команда simplify() позволяет задать правила упрощения в виде равенств. Эти правила задаются вторым параметром, который должен иметь следующий вид: {равенствоl, равенство2,…} Если какое-то выражение при упрощении должно равняться нулю, то такое правило можно задать, просто внеся выражение без знака равенства в список правил: > k:=a+b^2+c^3+d+5; > simplify (k, {c^3+d, a+b^2=1}); В этом примере предполагается, что выражение c^3+d равно 0. Использование собственных правил для упрощения тригонометрических выражений позволяет получить именно тот его вид, который необходим для дальнейшей работы, так как третьим параметром можно определить, в какой последовательности должны отображаться неизвестные в упрощенном выражении. Этот параметр задается в двух формах: в виде множества и в виде списка. (Множество - последовательность выражений через запятую, заключенная в фигурные скобки, а список - это тоже объект Maple, который для данного частного случая можно охарактеризовать как последовательность выражений через запятую, заключенную в квадратные скобки.) Так вот, если параметр задан в виде множества, то алгоритм упрощения сортирует в выражении неизвестные по убыванию их степени в слагаемых выражения, учитывая степени всех неизвестных, а потом начинает упрощения в соответствии с заданными правилами. В случае со списком - сначала выражение сортируется по степеням первой неизвестной в списке, затем упрощается в соответствии с заданными правилами, затем полученное выражение сортируется по степеням второй неизвестной списка и упрощается и т.д. Пример 4. Упрощение в соответствии с правилами пользователя. > equ:={sin(x)^2+cos(x)^2=1}; e:=sin(x)^3-11*sin(x)^2*cos(x)+3*cos(x)^3_sin(x)*cos(x)+2; > simplify (e, equ, [sin(x), cos(x)]); > simplify (e, equ, [cos(x), sin(x)]); > simplify (e, equ, {sin(x), cos(x)}); > simplify (e, equ, {cos(x), sin(x)}); 3. Раскрытие скобок в выражении: expand () Команда expand () представляет произведение в виде суммы, т.е. раскрывает скобки в алгебраическом выражении. Она выполняется для любого полинома. Для частного двух полиномов (рациональная алгебраическая дробь) эта команда раскрывает скобки в числителе и делит каждый член полученного выражения на знаменатель, с которым она не производит никаких преобразований. Эта команда имеет следующий синтаксис: ехраnd (выр, вырl, выр2,…, вырn); где выр является выражением, в котором необходимо раскрыть скобки, а необязательные параметры вырl, выр2, вырn указывают системе, что в данных выражениях в заданном преобразуемом выражении выр раскрывать скобки не надо. Пример 5. Представление произведений в виде суммы. > expand((x+3)*(x+4)^2); > expand((x+3)^3/(x+4)^2); > expand (cos(x-y)); > expand((x+3)*(x+4)^2, x+3); > expand (x^((a+b)*(k+f))); 4. Разложение полинома на множители: factor () Команда factor () разлагает на множители полином от нескольких переменных. Под полиномом в Maple понимается выражение, содержащее неизвестные величины. Каждый член в этом выражении представлен в виде произведения целых неотрицательных степеней неизвестных величин с числовым или алгебраическим коэффициентом, т.е. коэффициент может быть целым, дробным, с плавающей точкой, комплексным числом и даже представлять собой алгебраическое выражение с другими переменными: > factor (x^3*y_2*x^2*a*y+x*y*a^2_x^3*b^2+2*x^2*b^2*a-x*b^2*a^2+x^2*y^2-2*x*y^2*a+y^2*a^2_y*b^2*x^2+2*y*b^2*x*a-y*b^2*a^2);
Страницы: 1, 2
|