Математический анализ в Maple

Дифференциальный оператор D

Дифференциальный оператор D

Для создания функций с производными может также использоваться дифференциальный оператор D. Порою он позволяет создавать более компактные выражения, чем функции diff и Diff. Дифференциальный оператор можно записывать в следующих формах: D(f) или D[i](f), где параметр f — выражение или имя функции, i — положительное целое число, выражение или последовательность. Оператор D(f) просто вычисляет имя производной от f, поскольку в этой форме он эквивалентен unnaplyCdiff (f (х) ,х) ,х). В форме D(f) (х) этот оператор подобен diff (f (x) ,x).
Приведем примеры дифференцирования функций, заданных только именами, и функций с одним параметром:

Двойные суммы

Двойные суммы

Могут встречаться множественные суммы по типу "сумма в сумме". Ограничимся приведением примера двойной суммы, имеющей аналитическое значение:

Функция msolve

Функция msolve

Функция msolve(eqns,vars.m) или msolve(eqns,m) обеспечивает решение вида Z mod m (то есть при подстановке решения левая часть4 при делении нат дает остаток, равный правой части уравнения). При отсутствии решения возвращается объект NULL (пустой список).
Ниже даны примеры использования функции msolve:
> mso1ve({3*x-4*y=l,7*x+y=2}.12);
{у = 5,х=3}
> msolve(2^i=3.19);
{(=13 + 18_Z7~}
> mso1ve(8*j-2,x,17);
{/ = 3 + 8*}
На этом мы завершаем рассмотрение функций для решения уравнений, неравенств и систем с ними.

Функция RootOf

Функция RootOf

В решениях уравнений нередко появляется функция RootOf, означающая, что корни нельзя выразить в радикалах. Эта функция применяется и самостоятельно в виде RootOf(ехрr) или RootOf(ехрr, х), где ехрr — алгебраическое выражение или равенство, х — имя переменной, относительно которой ищется решение. Если х не указана, ищется универсальное решение по переменной _Z. Когда ехрr задано не в виде равенства, решается уравнение ехрr=0. Для получения решений вида RootOf в явном виде может использоваться функция all values. Примеры применения функции RootOf:

Интегралы с переменными пределами интегрирования

Интегралы с переменными пределами интегрирования

К интересному классу интегралов относятся определенные интегралы с переменными пределами интегрирования. Если обычный определенный интеграл представлен числом (или площадью в геометрической интерпретации), то интегралы с переменными пределами являются функциями этих пределов.
На Рисунок 8.6 показано два примера задания простых определенных интегралов с переменным верхним пределом (сверху) и обоими пределами интегрирования (снизу).

Каверзные интегралы и визуализация

Каверзные интегралы и визуализация результатов интегрирования

Выше мы уже сталкивались с примерами вычисления "каверзных" интегралов. Немного продолжим эту важную тему и заодно рассмотрим приемы визуализации вычислений, облегчающие понимание их сущности.
В Соросовском образовательном журнале (№ 6, 2000, с. 110) приводятся не совсем удачные примеры вычислений определенного интеграла с применением системы Mathematica, при которых якобы встречаются настолько большие трудности, что они не под силу любому калькулятору или компьютеру. При некоторых попытках вычисления этого интеграла он давал нулевое значение. Но Maple 7 (кстати, как и Mathematica 4) с легкостью берет этот интеграл и позволяет сразу и без какой-либо настройки вычислить для него как точное, так и приближенное значение:

Конвертирование и преобразование интегралов

Конвертирование и преобразование интегралов

В некоторых случаях Maple 7 не может вычислить интеграл. Тогда она просто повторяет его. С помощью функций taylor и convert можно попытаться получить аналитическое решение в виде полинома умеренной степени, что демонстрирует следующий характерный пример:

От перемены места сомножителей произведение меняется!

От перемены места сомножителей произведение меняется!

Хотя произведение не зависит от порядка расположения сомножителей, их перестановка в Maple 7 недопустима. Это иллюстрируют следующие примеры:

Последовательности с заданным числом членов

Последовательности с заданным числом членов

Простейшими являются суммы последовательностей с фиксированным числом членов. Ниже даны примеры применения этих функций:

Пример документа — разложение синуса в ряд

Пример документа — разложение синуса в ряд

Полезно сочетать разложение выражений (функций) в ряд Тейлора с графической визуализацией такого разложения. Рассмотрим документ, в котором наглядно показаны возможности представления функции рядами Тейлора и Маклорена. На Рисунок 8.8 показана первая часть документа. Она дает пример разложения в ряд Тейлора функции sin(x) с построением ее графика и графика по разложению в ряд. Поскольку выбрано разложение относительно точки х = 0, то полученный ряд является рядом Маклорена. Это хороший пример визуализации результатов математических вычислений — здесь наглядно видно, что при малых значениях х график ряда практически повторяет разлагаемую функцию, но затем начинает сильно от нее отходить.
Обратите внимание, несмотря на то что мы задали шестой порядок ряда, последний член имеет только пятый порядок. Это связано со спецификой данного разложения — в нем просто отсутствуют члены четного порядка. Можно буквально в считанные секунды попробовать изменить число членов ряда или диапазон изменения переменной х, что и показано на Рисунок 8.9 (вторая часть документа). При этом легко убедиться в том, что при больших х поведение ряда не имеет ничего общего с поведением разлагаемой в ряд функции, в частности нет и намека на периодичность разложения, которая присуща тригонометрической функции sin(x).
В заключительной (третьей) части этого документа (Рисунок 8.10) представлено уже истинное разложение синуса в ряд Тейлора в окрестности смещенной от нуля точки х = 1. При смещении точки, относительно которой ведется разложение, выражение для ряда Тейлора существенно изменяется. В нем, во-первых, появляются члены четных степеней, а во-вторых, фигурирует аргумент вида (х- 1)n. Нетрудно заметить, что даже при представлении такой "простой" функции, как sin(x), приемлемая погрешность представления одного периода достигается при числе членов ряда Тейлора порядка 10 и более. Однако существенное повышение порядка ряда нецелесообразно из-за резкого возрастания вычислительных погрешностей. Кроме того, серьезным недостатком аппроксимации рядом Тейлора является непредсказуемое поведение полинома вдали от точки, относительно которой задается представление. Это хорошо видно на всех трех приведенных примерах.

Примеры вычисления произведений членов последовательностей

Примеры вычисления произведений членов последовательностей

Примеры применения функций вычисления произведений даны ниже:

Разложение функций в ряды

Разложение функций в ряды

Разложение в степенной ряд
Огромное разнообразие функций давно заставляло математиков задумываться над возможностями их приближенного, но единообразного представления. К таким представлениям относятся различные ряды, сходящиеся к значениям функций в окрестности заданной точки. Для разложения функции или выражения ехрr в обычный степенной ряд служат функции series(ехрr, eqn) и series(expr, eqn, n). Здесь ехрr — разлагаемое выражение, eqn — условие (например, в виде х=а) или имя переменной (например, х) и n — необязательное и неотрицательное целое число, задающее число членов ряда (при его отсутствии оно по умолчанию берется равным 6, но может переустанавливаться системной переменной Order). Если в качестве eqn задано имя переменной, то это соответствует разложению по этой переменной в области точки с ее нулевым значением. Задав eqn в виде х=х0, можно получить разложение по переменной х в окрестности точки х = х0.
Разложение получается в форме степенного многочлена, коэффициенты которого задаются рациональными числами. Остаточная погрешность задается членом вида 0(х)^n. При точном разложении этот член отсутствует. В общем случае для его удаления можно использовать функцию convert. Ниже представлены примеры разложения различных выражений в ряд:

Разложение в ряды Тейлора и Маклорена

Разложение в ряды Тейлора и Маклорена

Для разложения в ряд Тейлора используется функция taylor(expr, eq/nm, n). Здесь ехрr — разлагаемое в ряд выражение, eq/nm — равенство (в виде х=а) или имя переменной (например, х), n — необязательный параметр, указывающий на порядок разложения и представленный целым положительным числом (при отсутствии указания порядка он по умолчанию принимается равным 6). При задании eq/nm в виде х=а разложение производится относительно точки х =а. При указании eq/nm в виде просто имени переменной разложение ищется в окрестности нулевой точки, то есть фактически вычисляется ряд Маклорена.
Ниже представлены примеры применения функции taylor:

Решение функциональных уравнений

Решение функциональных уравнений

Решение функционального уравнения, содержащего в составе равенства некоторую функцию f(x), заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры:

Решение неравенств

Решение неравенств

Неравенства в математике встречаются почти столь же часто, как и равенства. Они вводятся знаками отношений, например: > (больше), < (меньше) и т. д. Решение неравенств существенно расширяет возможности функции solve. При этом неравенства задаются так же, как и равенства. Приведенные на Рисунок 8.15 примеры поясняют технику решения неравенств.
Из приведенных примеров очевидна форма решений — представлены критические значения аргумента, вплоть до не включаемых значений области действия неравенства (они указываются словом Open). Всегда разумным является построение графика выражения, которое задает неравенство, — это позволяет наглядно убедиться в правильности решения. Приведем еще несколько примеров решения неравенств в аналитической форме:

Решение одиночных нелинейных уравнений

Решение одиночных нелинейных уравнений

Решение одиночных нелинейных уравнений вида f(x) = 0 легко обеспечивается функций solve(f,(x),x). Это демонстрируют следующие примеры:

Решение рекуррентных уравнений — rsolve

Решение рекуррентных уравнений — rsolve

Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple 7 можно найти ряд и других функций, например rsolve для решения рекуррентных уравнений, isolve для решения целочисленных уравнений, msolve для решения по модулю m и т. д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.
Для решения рекуррентных уравнений используется функция rsolve:
rsolve(eqns, fens) ,
rsolve(eqris. fens, 'genfunc'(z))
rsolve(eqns, fens, 'makeproc')
Здесь eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя, генерирующее функциональную переменную.
Ниже представлены примеры применения функции rsolve:

Решение систем линейных уравнений

Решение систем линейных уравнений

Для решения систем линейных уравнений созданы мощные матричные методы, которые будут описаны отдельно. Однако функция solve также может с успехом решать системы линейных уравнений. Такое решение в силу простоты записи функции может быть предпочтительным. Для решения система уравнений и перечень неизвестных задаются в виде множеств (см. приведенные ниже примеры).
Рисунок 8.12 дает два примера решения систем из двух линейных уравнений. В первом примере функция solve возвращает решение в виде значений неизвестных х и у, а во втором отказывается это делать.
В чем дело? Оказывается, в том, что во втором случае система просто не имеет решения. Импликативная графика пакета расширения plots дает прекрасную возможность проиллюстрировать решение. Так, нетрудно заметить, что в первом случае геометрическая трактовка решения сводится к нахождению точки пересечения двух прямых, отображающих два уравнения. При этом имеется единственное решение, дающее значения х и у.

Решение систем нелинейных и трансцендентных уравнений

Решение систем нелинейных и трансцендентных уравнений

Функция solve может использоваться для решения систем нелинейных и трансцендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Ниже приведены примеры решения уравнений:

Решение тригонометрических уравнений

Решение тригонометрических уравнений

Функция solve может использоваться для решения тригонометрических уравнений:

Решение уравнений и неравенств

Решение уравнений и неравенств

Основная функция solve
Решение линейных и нелинейных уравнений и неравенств — еще одна важная область математического анализа. Maple 7 имеет мощные средства для такого решения. Так, для решения линейных и нелинейных уравнений в аналитическом виде используется достаточно универсальная и гибкая функция solve(eqn, var) или so1ve({eqnl,eqn2,.. .}.{varl,var2,...}), где eqn — уравнение, содержащее функцию ряда переменных, var — переменная, по которой ищется решение, Если при записи eqn не используются знак равенства или знаки отношения, считается, что solve ищет корни уравнения eqn=0.
Характер решений можно изменить с помощью глобальных переменных:

  • _SolutionsMayBeLost — при значении true дает решение, которое при обычном применении функции solve возвращает значения NULL;
  • _MaxSols — задает максимальное число решений;
  • _EnvAll Solutions — при значении true задает выдачу всех решений.
  • В решениях могут встречаться следующие обозначения:
  • _NN — указывает на неотрицательные решения;
  • _В — указывает на решения в бинарной форме;
  • _Z — указывает на то, что решение содержит целые числа;
  • %N — при текстовом формате вывода задает общие члены решения и обеспечивает более компактную форму его представления.
  • В форме solve[subtopic] возможны параметры subtopic функции solve следующих типов:
    floats functions identity ineq linear
    radical scalar series system
    При решении систем уравнений они и список переменных задаются как множества, то есть в фигурных скобках. При этом и результат решения получается в виде множества. Чтобы преобразовать его к обычному решению, нужно использовать функцию assign, которая обеспечивает присваивание переменным значений, взятых из множества.
    Функция solve старается дать решение в аналитическом виде. Это не означает, что ее нельзя использовать для получения корней уравнений в численном виде. Просто для этого придется использовать функции evalf или convert. Если результат решения представлен через функцию RootOf, то зачастую можно получить все корни с помощью функции all values.

    Решение уравнений с линейными операторами

    Решение уравнений с линейными операторами

    Maple 7 позволяет решать уравнения с линейными операторами, например с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода:



    Решение уравнений со специальными функциями

    Решение уравнений со специальными функциями

    К важным достоинствам Maple 7 относится возможность решения уравнений, содержащих специальные функции как в записи исходных выражений, так и в результатах решения. Приведем несколько примеров такого рода:

    Решение уравнений в целочисленном виде — isolve

    Решение уравнений в целочисленном виде — isolve

    Иногда бывает нужен результат в форме только целых чисел. Для этого используется функция isolve(eqns, vans), дающая решение в виде целых чисел. Приведем примеры ее применения:
    > iso1ve({2*x-5=3*y}):
    {x = 4 + 3_Zl,y=\ + 2_Z1]
    > iso1ve(y^4-z^2*y^2-3*x*z*y*2-x^3*z);
    Во втором из приведенных примеров в выводе появилась вспомогательная переменная %1, которая упрощает запись результата при текстовом формате его вывода (Character Notation). Напоминаем, что в стандартной математической нотации вспомогательная переменная вида %N не формируется. В этом случае упомянутый пример будет выглядеть следующим образом:

    Решение в численном виде — функция fsolve

    Решение в численном виде — функция fsolve

    Для получения численного решения нелинейного уравнения или системы нелинейных уравнений в форме вещественных чисел удобно использовать функцию:
    fsolve( eqns. vars. options )
    Эта функция может быть использована со следующими параметрами:
  • complex — находит один или все корни полинома в комплексной форме;
  • full digits — задает вычисления для полного числа цифр, заданного функцией Digits;
  • maxsols=n — задает нахождение только n корней;
  • interval — задается в виде а. .b или х=а. .b, или (х=а. .b, y=c. .d, ...} и обеспечивает поиск корней в указанном интервале.
  • Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры:

    является достаточно распространенной операцией математического

    Шаг 1

    является достаточно распространенной операцией математического является достаточно распространенной операцией математического анализа. Для вычисляемой и инертной форм сумм последовательностей служат следующие функции:
    sum(f.k): sum(f,k=m..n); sum(f,k=alpha):
    Sum(f.k); Sum(f,k=m..n); Sum(f,k=a1pha);
    Здесь f — функция, задающая члены суммируемого ряда, k — индекс суммирования, тип — целочисленные пределы изменения k, alpha — RootOf-выражение. Значение n может быть равно бесконечности. В этом случае для n используется обозначение ? или infinity.
    Допустимо (а зачастую рекомендуется с целью исключения преждевременной оценки суммы) заключение f и k в прямые кавычки, например sum('f', 'k'=m. .n). Это сделано во всех примерах справочной системы Maple 7, относящихся к функции sum. Мы, однако, отказываемся от этого в тех случаях, когда результат идентичен при заключении f и k в кавычки и без такового. Во избежание путаницы, связанной с этой тонкостью синтаксиса функции sum, рекомендуется все примеры проверять после команды restart, убирающей предыдущие определения f и k.

    Построение графика зависимости значений интеграла

    Шаг 10

    Построение графика зависимости значений интеграла

    б

    Рисунок 8.2. Построение графика зависимости значений интеграла с подынтегральной функцией 1/(х+а)^2 от параметра а
    Рисунок 8.3 показывает это решение с двумя важными дополнениями — оно представляется функцией пользователя, а ее график строится при изменении а от -10 до 10.
    Приведем еще один пример "каверзного" интеграла довольно простого вида:
    > int(l/x^3,x=-1..2);
    undefined
    Этот интеграл вообще не берется функцией int без указания параметров (в строке вывода сообщается об этом). Но введение параметра CauchyPrinci pal Value позволяет получить значение интеграла:

    Возьмем еще один наглядный пример

    Шаг 11

    Возьмем еще один наглядный пример Возьмем еще один наглядный пример — вычисление интеграла от синусоидальной функции при произвольно больших пределах, но кратных 2я! Очевидно, что при этом (учитывая равность площадей положительной и отрицательной полуволн синусоиды) значение интеграла будет равно 0. Например:
    > int(sin(x),x-1000*pi..l000*pi);
    0

    Однако распространение этого правила на

    Шаг 12

    Однако распространение этого правила на

    Рисунок 8.3. Зависимость значения интеграла с подынтегральной функцией 1/(х+а)^2 и пределами от 0 до 2 от параметра а
    Однако распространение этого правила на бесконечные пределы интегрирования является грубейшей ошибкой. Интеграл такого рода уже не берется (или говорят, что он не сходится), и Maple 7 дает соответствующий результат:
    > int(sin(x),x=-infinity..infinity);
    undefined
    Во многих областях техники часто употребляются выражения "затухающая синусоида" или "нарастающая синусоида". Иногда говорят и о "синусоиде с уменьшающейся или возрастающей амплитудой". Бесполезно утверждать, что эти названия принципиально ошибочны — в рамках допущений, принятых в технических расчетах, такие утверждения весьма наглядны и эта, в частных случаях вполне оправданная, наглядность с позиций математики идет в ущерб точности фундаментальных определений.
    Возьмем, к примеру, широко распространенную функцию: y(t) = exp(-t)sin(2*Pi*t). Построим ее график и вычислим определенный интеграл от этой функции с пределами от 0 до oo (Рисунок 8.4).
    С первого взгляда на график видно, что Каждая положительная полуволна функции (затухающей "синусоиды") явно больше последующей отрицательной полуволны. К тому же осцилляции функции быстро затухают и через десяток-другой периодов значение функции становится исчезающе малым. Вот почему Maple 7 уверенно вычисляет интеграл с такой подынтегральной функцией. Ее свойство — неопределенность при t->oo исчезает.

    на множитель, зависящий от времени

    Шаг 13

    на множитель, зависящий от времени

    Рисунок 8.4. График "затухающей синусоиды" и интеграл от нее с пределами от 0 до бесконечности
    Однако называть такую функцию "затухающей синусоидой", безусловно, неточно. Умножение sin(2pt) на множитель, зависящий от времени t, лишает функцию главного свойства синусоиды — ее строгой симметрии. Так что exp(-t)sin(2pt) — это совсем новая функция со своими отличительными свойствами. Главные из них — несимметрия при малых t и исчезающе малые значения при больших t. Ни тем, ни другим свойством обычная синусоида не обладает. А теперь возьмем антипод этой функции — "синусоиду с экспоненциально нарастающей до стационарного значения 1 амплитудой". Такая функция записывается следующим образом:
    Y(t) = (1 - exp(-t)) sin(2*Pi*t).
    Ее график и попытки вычисления интеграла с такой подынтегральной функцией приведены на Рисунок 8.5.
    Обратите внимание на то, что здесь прямое вычисление интеграла к успеху не привело, хотя из графика функции видно, что каждая положительная полуволна в близкой к t = 0 области явно больше по амплитуде, чем последующая отрицательная полуволна. Однако в отличие от предыдущей функции при больших значениях аргумента данная функция вырождается в обычную синусоиду с неизменной (и равной 1) амплитудой. Вот почему трудяга Maple 7 честно отказывается вычислять интеграл от такой коварной функции.

    На этом примере очень четко

    Шаг 14

    На этом примере очень четко

    Рисунок 8.5. График "экспоненциально нарастающей синусоиды" и интеграл от нее с пределами от 0 до бесконечности
    На этом примере очень четко отслеживается разница в мышлении инженера и математика. Инженер скажет, что интеграл с такой функций должен быть, поскольку вначале положительные площади явно меньше отрицательных, а в дальней области они выравниваются, и потому площадь каждого "периода" функции становится примерно нулевой. По-своему инженер прав — если его не интересует точное определение подынтегральной области в заоблачных высотах бесконечности, то мы должны получить то же значение интеграла, что в предшествующем примере, но со знаком "минус". И в самом деле (см. Рисунок 8.5), интегрируя в пределах от 0 до100п, мы получаем именно это значение (опять-таки в пределах погрешности по умолчанию).
    И все же прав здесь математик — переход от интегрирования с конечным (да еще и кратным 2тс) пределом к интегрированию с бесконечным пределом — далеко не простая операция. Она требует учета поведения функции при значении аргумента, стремящегося к бесконечности, а тут говорить о нулевой алгебраической площади синусоиды некорректно, ибо никакой кратности величине 2л у бесконечности нет! Остается лишь радоваться тому, что система Maple 7 может примирить математиков и инженеров, дав им в руки средства, позволяющие решать подобные задачи с приближениями, приемлемыми для тех или иных категорий пользователей.
    Мы подробно рассмотрели этот класс задач потому, что многие важные интегральные преобразования (например, преобразование Фурье) оперируют с подобными подынтегральными функциями и надо тщательно разбираться в областях их применения.
    Примечание 1
    Примечание 1


    Приведенные выше примеры показывают, что интегрирование является гораздо более тонким делом, чем это кажется на первый взгляд. Тут уместно напомнить, что и студент вуза, и профессор математики университета должны очень внимательно исследовать возможности вычисления интегралов того или иного типа разными математическими системами. Иными словами, применять системы компьютерной математики должны только пользователи, обладающие не столько учеными званиями и степенями, сколько культурой выполнения математических вычислений.

    Обратите внимание на то, что

    Шаг 1

    Обратите внимание на то, что Обратите внимание на то, что в первом примере фактически дано обозначение предела в самом общем виде. Рисунок 8.7 показывает вычисление пределов функции tan(x) в точке х=n/2, а также слева и справа от нее. Для указания направления используются опции right (справа) и left (слева). Видно, что в самой точке предел не определен (значение undefined), а пределы справа и слева уходят в бесконечность.

    Здесь видно, что член, обозначающий

    Шаг 1

    Здесь видно, что член, обозначающий Здесь видно, что член, обозначающий погрешность, отсутствует в тех разложениях, которые точны, например, в разложениях степенных многочленов. Для визуализации приближения рядами заданных аналитических зависимостей очень полезно построить на одном графике кривые аналитической зависимости и разложения в ряд. Мы это покажем чуть позже на примере ряда Тейлора.

    Обратите внимание, что во втором

    Шаг 1

    Обратите внимание, что во втором Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанной с тем, что переменной k перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса k в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.

    в ряд Тейлора. Ниже дан

    Шаг 1

    в ряд Тейлора. Ниже дан Не все выражения (функции) имеют разложение в ряд Тейлора. Ниже дан пример такого рода:
    > taylor(l/x+x^2,x,5):
    Error, does not have a taylor expansion, try seriesQ
    > series(l/x+x^2,x,10);
    je-4*2
    > taylor(l/x+x*2,x=l,5);
    2 +x - 1 + 2(x - 1f - (x - 1 )3 +(x - 1 )4 +O((x- 1 )5)
    Здесь Maple 7 отказалась от вычисления ряда Тейлора в окрестности точки х = 0 (по умолчанию) и предложил воспользоваться функцией series. Однако эта функция просто повторяет исходное разложение. В то же время в окрестности точки х = 1 ряд Тейлора вычисляется.
    Для разложения в ряд Тейлора функций нескольких переменных используется библиотечная функция mtaylor:
    mtaylor(f. v)
    mtaylorCf. v. n)
    mtaylor(f. v, n, w)
    Здесь f — алгебраическое выражение, v — список имен или равенств, n — необязательное число, задающее порядок разложения, w — необязательный список целых чисел, задающих "вес" каждой из переменных списка v. Эта функция должна вызываться из библиотеки Maple 7 с помощью команды readlib:

    и построение ее графика

    Шаг 1

    и построение ее графика Рисунок 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графика

    Часто бывает удобно представлять уравнение

    Шаг 1

    Часто бывает удобно представлять уравнение Часто бывает удобно представлять уравнение и его решение в виде отдельных объектов, отождествленных с определенной переменной:

    Однако из приведенных примеров видно,

    Шаг 1

    Однако из приведенных примеров видно, Однако из приведенных примеров видно, что при этом найдено только одно (главное) решение. Периодичность тригонометрических функций и связанная с этим множественность решений оказались проигнорированы. Однако можно попытаться найти все периодические решения, выполнив следующую команду:
    > _EnvAllSolutions:=true;
    EnvAllSolutions := true
    Указанная в ней системная переменная отвечает за поиск всех периодических решений, когда ее значение равно true, и дает поиск только главных решений при значении false, принятом по умолчанию. Так что теперь можно получить следующее:

    Примеры решения системы из двух

    Шаг 1

    Примеры решения системы из двух

    Рисунок 8.12. Примеры решения системы из двух линейных уравнений с графической иллюстрацией
    Во втором случае решения и впрямь нет, ибо уравнения задают параллельно расположенные прямые, которые никогда не пересекаются. Рекомендуем читателю самостоятельно проверить и третий случай — бесконечного множества решений. Он имеет место, если оба уравнения описывают одну и ту же зависимость и их графики сливаются в одну прямую.
    Решение систем из трех линейных уравнений также имеет наглядную геометрическую интерпретацию — в виде точки, в которой пересекаются три плоскости, каждая из которых описывается функцией двух переменных. Для наглядности желательно представить и линии пересечения плоскостей. Это позволяет сделать функция импликативной трехмерной графики tmplicitplotSd, что и показано на Рисунок 8.13. Для объединения графиков площадей использована функция display.
    Некоторые проблемы с решением систем из трех линейных уравнений иллюстрируют примеры, приведенные на Рисунок 8.14, В первом примере решения вообще нет. График показывает, в чем дело, — линии пересечения плоскостей идут параллельно и нигде не пересекаются. Во втором примере все три плоскости пересекаются по одной линии.

    В этих примерах хорошо видна

    Шаг 1

    В этих примерах хорошо видна В этих примерах хорошо видна техника работы с функциями solve и assign. В конце примеров показано восстановление неопределенного статуса переменных х и у с помощью функции unassign и снятие определения переменных с помощью заключения их в прямые апострофы.

    функция RootOf является эффективным способом

    Шаг 1

    функция RootOf является эффективным способом Итак, функция RootOf является эффективным способом представления решения в компактном виде. Как уже отмечалось, наряду с самостоятельным применением она часто встречается в составе результатов решения нелинейных уравнений.

    Как видно из приведенных примеров,

    Шаг 1

    Как видно из приведенных примеров, Как видно из приведенных примеров, функции вычисления производных могут использоваться с параметрами, заданными списками. Приведенные ниже примеры показывают эти возможности и иллюстрируют дифференцирование функции пользователя для двух переменных:

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Такого рода последовательности, как видно

    Шаг 1

    Такого рода последовательности, как видно Такого рода последовательности, как видно из приведенных примеров, нередко имеют аналитические выражения для своего значения. Его вычисление намного проще, чем формирование заданной последовательности с прямым суммированием ее членов. Некоторые из таких сумм выражаются через специальные математические функции.

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    в заданном интервале позволяет отыскивать

    Шаг 1

    в заданном интервале позволяет отыскивать Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsolve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и д.
    Чтобы еще раз показать различие между функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf(x) = 1/2:
    > so1ve(erf(x)=l/2,x);
    RootOf(2erf(_Z)-l)
    > fsolve(erf(x)=l/2);
    .4769362762
    Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsolve находит обычное приближенное решение.

    А теперь приведем результат вычисления

    Шаг 1

    А теперь приведем результат вычисления А теперь приведем результат вычисления функцией rsolve n-го числа Фибоначчи. Оно задается следующим выражением:
    > eql :- (f(n+2) = f(rn-l) + f(n) . f(0) - 1 . f(l) - 1}:
    eql~{f(n+2) = f(n + \) + f(n),f(0)=\,f(l)=l}
    В нем задана рекуррентная формула для числа Фибоначчи — каждое новое число равно сумме двух предыдущих чисел, причем нулевое и первое числа равны 1. С помощью функции rsolve можно получить поистине ошеломляющий результат:

    Результат вычислений одинаков при любом

    Шаг 1

    Результат вычислений одинаков при любом Результат вычислений одинаков при любом формате вывода, но иногда вывод в текстовом формате с выделением вспомогательных переменных имеет преимущество, поскольку выглядит более компактным.

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1



    Следующий пример показывает дифференцирование функции

    Шаг 1

    Следующий пример показывает дифференцирование функции Следующий пример показывает дифференцирование функции пользователя fun с применением дифференциального оператора D и функции diff:

    N такую сумму нетрудно вычислить

    Шаг 1

    N такую сумму нетрудно вычислить При конкретном значении N такую сумму нетрудно вычислить подстановкой:
    > subs( N = 100, %);
    8670850
    Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 7 позволяют получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.

    и их назначение соответствуют приведенным

    Шаг 1

    и их назначение соответствуют приведенным используются следующие функции:
    product(f,k); product(f,k=m..n): product (f,k=alpha):
    Product(f,k); Product(f,k=m..n): Product(f,k=alpha).
    Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и k.

    в случае вычисления сумм, вычисление

    Шаг 1

    в случае вычисления сумм, вычисление Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывает следующий пример:

    При вычислении произведений надо строго

    Шаг 1

    При вычислении произведений надо строго ВНИМАНИЕ
    При вычислении произведений надо строго соблюдать прямой (нарастающий) поря-— док задания значений индексной переменной произведения. Нарушение этого порядка чревато грубыми ошибками.

    в аналитическом представлении неопределенных интегралов

    Шаг 1

    в аналитическом представлении неопределенных интегралов Обратите внимание, что в аналитическом представлении неопределенных интегралов отсутствует произвольная постоянная С. Не следует забывать о ее существовании. Для вычисления кратных интегралов (двойных, тройных и т. д.) следует применять функцию int (или Int) внутри такой же функции, делая это столько раз, сколько нужно. В отличие от функции дифференцирования для функции интегрирования нельзя задавать подынтегральные функции в виде списка или множества. Возможно вычисление сумм интегралов и интегралов сумм, а также интегралов от полиномов:

    в этом случае решение является

    Шаг 1

    в этом случае решение является Естественно, что в этом случае решение является приближенным, но оно все же есть и с ним можно работать, например построить график функции, представляющей данный интеграл.
    Система Maple непрерывно совершенствуется. Например, в Maple V R4 интеграл с подынтегральной функцией ехр(x^4) не брался, а система Maple 7 с легкостью берет его:

    Определенный интеграл удобно трактовать как

    Шаг 1

    Определенный интеграл удобно трактовать как Определенный интеграл удобно трактовать как площадь, ограниченную кривой f(x), осью абсцисс и вертикалями с координатами, равными а и b. При этом площадь ниже оси абсцисс считается отрицательной. Таким образом, значение определенного интеграла — это число или вычисляемое выражение.
    Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например х=а.. b, если интегрируется функция переменной х. Это поясняется приведенными ниже примерами:

    Хотя первое из решений является

    Шаг 1

    Хотя первое из решений является Хотя первое из решений является самым кратким и, скорее всего, единственным точным решением, оно может и должно насторожить опытного пользователя. Дело в том, что в полученном выражении фигурируют большие числа, и потому для правильного приближенного решения (в виде вещественного числа в научной нотации) нужно заведомо использовать аппарат точной арифметики и ни в коем случае не полагаться на погрешность, заданную по умолчанию, — вот в чем основная ошибка в упомянутой статье.
    Именно поэтому левая и правая части приближенного решения (выполненного с точностью до 30 цифр) заметно различаются. Знак равенства между ними вызывает чувство протеста у истинных математиков. На самом деле, не надо забывать, что знак равенства здесь был введен просто как текстовый комментарий, — вы можете попробовать сами заменить его на более приемлемый здесь знак приближенного равенства. Любопытно, что предшествующая версия Maple 6 при задании погрешности по умолчанию вычисляла значение этого интеграла также как 0, тогда как Maple 7 "поумнела" уже настолько, что дает значение 0.01835046770 даже в этом случае.
    При таких условиях многие читатели могут сомневаться в корректности конечного результата. Между тем Maple 7 позволяет наглядно проиллюстрировать характер промежуточных вычислений подобных интегралов. Например, для этого можно вычислить неопределенный интеграл подобного вида:

    На этом рисунке построены также

    Шаг 1

    На этом рисунке построены также

    Рисунок 8.6. Примеры интегралов с переменными пределами интегрирования
    На этом рисунке построены также графики подынтегральной функции (это наклонная прямая) и функции, которую задает интеграл.

    Обратите внимание на нечеткую работу

    Шаг 1

    Обратите внимание на нечеткую работу Обратите внимание на нечеткую работу функции evalf в последнем примере. Эта функция уверенно выдает значение evalf (Pi) в форме вещественного числа с плавающей точкой, но отказывается вычислить значение интеграла, в которое входит число Pi. Этот пример говорит о том, что отдельные недостатки у Maple 7 все же есть, как и поводы для ее дальнейшего совершенствования.
    Описанная возможность вычисления кратных интегралов функциями Int и int не является вполне законной. В пакете расширения student имеются дополнительные функции интегрирования, которые дополняют уже описанные возможности. В частности, в этом пакете есть функции для вычисления двойных и тройных интегралов.

    Шаг 2

    Шаг 2

    Шаг 2



    В частности, это позволяет легко

    Шаг 2

    В частности, это позволяет легко В частности, это позволяет легко проверить решение (даже если оно не одно, как в приведенном примере) подстановкой (subs):

    показан более сложный случай

    Шаг 2

    показан более сложный случай На Рисунок 8. 11 показан более сложный случай решения нелинейного уравнения вида f1(x)=f2(x). где f1(х) = sin(x) и f2(x) = cos(x) - 1. Решение дано в графическом виде и в аналитическом для двух случаев — нахождения главных значений корней и нахождения всех корней.
    В решениях встречаются переменные _В1- и _Z1~, означающие ряд натуральных чисел. Благодаря этому через них можно представить периодически повторяющиеся решения.
    Примеры решения уравнений с обратными тригонометрическими функциями показаны ниже:

    Пример решения системы из трех

    Шаг 2

    Пример решения системы из трех

    Рисунок 8.13. Пример решения системы из трех линейных уравнений с графической иллюстрацией решения

    Шаг 2

    Шаг 2

    Шаг 2 а



    целые числа. Поэтому представленный результат

    Шаг 2

    целые числа. Поэтому представленный результат Числа Фибоначчи — целые числа. Поэтому представленный результат выглядит как весьма сомнительный. Но на самом деле он точный и с его помощью можно получить числа Фибоначчи. Ниже показан процесс получения чисел Фибоначчи для n = 5, 7, 10 и 20:
    > [normal(subs(n=5,al).expanded).normal(subs(n-7.al).expanded).
    normal(subs(n=10,al),expanded),normal(subs(n=20.al),expanded)];
    [8,21,89,10946]

    Шаг 2

    Шаг 2

    Шаг 2

    При вычислении сумм последовательностей надо

    Шаг 2

    При вычислении сумм последовательностей надо ВНИМАНИЕ
    При вычислении сумм последовательностей надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной суммы. Нарушение этого порядка чревато грубыми ошибками.

    Нетрудно понять, что при i,

    Шаг 2

    Нетрудно понять, что при i, Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены последовательности стремятся к нулю, а потому к нулю стремится и их произведение. Вопросы доказательства подобных утверждений находятся за рамками данного учебного курса, ибо он посвящен не математике как таковой, а конкретной программе для математики — Maple 7.

    и для дифференцирования функций нескольких

    Шаг 2

    и для дифференцирования функций нескольких Дифференциальный оператор можно применять и для дифференцирования функций нескольких переменных по заданной переменной:

    Шаг 2

    Шаг 2

    Шаг 2



    Хотя полученный результат, выраженный через

    Шаг 2

    Хотя полученный результат, выраженный через Хотя полученный результат, выраженный через гамма- функцию, нельзя назвать очень простым, но он существует и с ним также можно работать. Например, можно попытаться несколько упростить его, используя функцию simplify:

    Шаг 2

    Шаг 2

    Шаг 2



    Нетрудно заметить, что решение распадается

    Шаг 2

    Нетрудно заметить, что решение распадается Нетрудно заметить, что решение распадается на множество слагаемых, соответствующих общеизвестному интегрированию по частям. В каждом слагаемом имеются большие числа, и потому принципиально необходимо применение арифметики высокой точности (или разрядности). Maple 7 такими средствами, причем превосходными, обладает.
    Продолжим изучение данного "каверзного" интеграла. Опробуем силы Maple 7 на интеграле более общего вида, где конкретный показатель степени заменен на обобщенный —п. Здесь нас ожидает приятный сюрприз — Maple 7 с легкостью выдает аналитическое решение для данного определенного интеграла:

    наглядно подтверждает существование пределов справа

    Шаг 2

    наглядно подтверждает существование пределов справа

    Рисунок 8.7. Пример вычисления пределов функции tan(x) и построение ее графика
    Показанный на Рисунок 8.7 график функции tan(x) наглядно подтверждает существование пределов справа и слева от точки х = П/2 и отсутствие их в самой этой точке, где функция испытывает разрыв от значения +oo до -oo.

    Для получения только коэффициента при

    Шаг 2

    Для получения только коэффициента при Для получения только коэффициента при k=м члене ряда Тейлора можно использовать функцию coeftayl (expr,var,k). Если ехрr — функция нескольких переменных, то k должен задаваться списком порядков коэффициентов.

    и построение ее графика

    Шаг 2

    и построение ее графика

    Рисунок 8.9. Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графика



    в результате дифференцирования выражения могут

    Шаг 3

    в результате дифференцирования выражения могут Получаемые в результате дифференцирования выражения могут входить в другие выражения. Можно задавать их как функции пользователя и строить графики производных.

    Графическая иллюстрация особых случаев решения

    Шаг 3

    Графическая иллюстрация особых случаев решения

    Рисунок 8.14. Графическая иллюстрация особых случаев решения системы из трех линейных уравнений
    Следующий пример показывает решение системы из четырех линейных уравнений:

    иллюстрирующие решение неравенств

    Шаг 3

    иллюстрирующие решение неравенств

    б

    Рисунок 8.15. Примеры, иллюстрирующие решение неравенств

    Пример применения дифференциального оператора для

    Шаг 3

    Пример применения дифференциального оператора для Пример применения дифференциального оператора для функции f, заданной программным объектом-процедурой, представлен ниже:

    успешно берет большинство справочных

    Шаг 3

    успешно берет большинство справочных ПРИМЕЧАНИЕ
    Maple 7 успешно берет большинство справочных интегралов. Но не всегда форма представления интеграла совпадает с приведенной в справочнике. Иногда требуется доводка ее до нужной формы, а иногда Maple 7 упорно дает иное выражение (в большинстве случаев правильное). Тем не менее следует помнить, что всегда может найтись интеграл, который окажется "не по зубам" и Maple 7.

    существует также множество иных возможностей

    Шаг 3

    существует также множество иных возможностей Разумеется, существует также множество иных возможностей и приемов для выполнения операции интегрирования. В дальнейшем мы неоднократно будем рассматривать и другие, более специфические функции для осуществления интегрирования и вычисления интегральных преобразований. В частности, ряд средств вычисления интегралов реализован в пакете student.

    Как видно из этих примеров,

    Шаг 3

    Как видно из этих примеров, Как видно из этих примеров, среди значений пределов может быть бесконечность, обозначаемая как infinity.

    Шаг 3

    Шаг 3

    Шаг 3



    Шаг 3

    Шаг 3

    Шаг 3

    a

    к одному уравнению равенства вида

    Шаг 3

    к одному уравнению равенства вида Сводящиеся к одному уравнению равенства вида f1(x)=fl(x) также решаются функцией solve(fl(x)=f2(x),x):

    Шаг 3

    Шаг 3

    Шаг 3



    Этот пример показывает реализацию схемы

    Шаг 4

    Этот пример показывает реализацию схемы Этот пример показывает реализацию схемы Горнера для полинома b степени n от переменной х. При этом применение оператора дифференцирования возвращает процедуру. Ряд интересных возможностей по вычислению производных предоставляет пакет расширения student.

    Однако радоваться несколько преждевременно. Многие

    Шаг 4

    Однако радоваться несколько преждевременно. Многие Однако радоваться несколько преждевременно. Многие ли математики знают, что это за специальная функция — WhittakerM? Студенты, любящие подшучивать над своим профессором, могут попробовать спросить у него об этом. Скорее всего, профессор стушуется, а потом будет долго копаться в литературе, прежде чем найдет ее определение и сможет разъяснить, что это такое. Но хуже другое — Maple 7 при конкретном n = 20 дает грубо неверное решение — 0 (почему — уже объяснялось). Забавно, что при этом сама по себе функция WhittakerM вычисляется для n = 20 без проблем:
    > WhittakerM(10,10.5.1);
    6353509348
    А теперь присмотритесь к новому результату вычисления злополучного интеграла. Оказывается, он уже не содержит больших чисел, свойственных прямому решению! Зная значение WhittakerM с погрешностью по умолчанию, можно уверенно вычислить приближенное численное значение интеграла с тойже погрешностью, уже не прибегая к арифметике высокой точности:
    > (exp(-.5)*WihittakerM(10,10.5.1))/21;
    01835046770
    Итак, мы вычислили нужный интеграл несколькими разными способами. В этом и проявляется могущество современной математики, достойно представленной такими системами, как Maple 7. Заинтересованный читатель может попытаться найти еще ряд методов решения данного интеграла и преуспеть в этом! Мы же как торжество Maple 7 приведем график зависимости значений данного интеграла от показателя степени n при его изменении от 0 до 50 (Рисунок 8.1). Надо ли говорить о том, что полученный результат имеет куда более важное значение, чем вычисление нашего злополучного интеграла при конкретном n = 20? А плавный ход графика показывает, что в вычислении данного интеграла нет никаких признаков неустойчивости решения при изменении n, если соблюдать правило выбора погрешности вычислений.
    Наличие у функции особых (сингулярных) точек нередко затрудняет выполнение с ней ряда операций, таких как численное интегрирование. В этом случае могут помочь соответствующие параметры. Например, вычисление следующего интеграла дает явно неудобное выражение в виде набора значений, разных для разных интервалов измененияа:

    имеет множество функций для

    Шаг 4

    имеет множество функций для б

    Рисунок 8.10. Разложение функции sin(x) в ряд Тейлора 12-го порядка относительно точки х = 1 и построение ее графика
    Помимо указанных выше разложений в ряд Maple 7 имеет множество функций для иных разложений. Например, в пакете numapprox имеется функция laurent(expr,var,n), позволяющая получить разложение в ряд Лорана, функция chebyshev(expr, eq/nm, eps) дает разложение в форме полиномов Чебышева и т. д.

    в этих примерах на эффективность

    Шаг 4

    в этих примерах на эффективность Обратите внимание в этих примерах на эффективность применения функции evalf, позволяющей получить решения, выраженные через функцию RootOf, в явном виде.

    Пример решения уравнения, имеющего периодические

    Шаг 4

    Пример решения уравнения, имеющего периодические

    Рисунок 8.11. Пример решения уравнения, имеющего периодические решения

    Эта система имеет решение, но

    Шаг 4

    Эта система имеет решение, но Эта система имеет решение, но его простая графическая иллюстрация уже невозможна.
    Случай решения неполной системы уравнений (уравнений — 3, а неизвестных — 4) иллюстрирует следующий пример:

    Шаг 4

    Шаг 4

    Шаг 4



    Шаг 5

    Шаг 5

    Шаг 5

    Шаг 5

    Шаг 5

    Шаг 5

    Как видно из приведенных примеров,

    Шаг 5

    Как видно из приведенных примеров, Как видно из приведенных примеров, функция solve неплохо справляется с решением систем линейных уравнений.

    В последних примерах показано решение

    Шаг 5

    В последних примерах показано решение В последних примерах показано решение систем неравенств." При этом выдаются области определения нескольких переменных.

    Шаг 6

    Шаг 6

    Шаг 6 а



    попытка вычислить по этому выражению

    Шаг 7

    попытка вычислить по этому выражению

    б

    Рисунок 8.1. Значение интеграла от х^n*ехр(-х) как функция n
    Увы, попытка вычислить по этому выражению значение интеграла не всегда дает корректный результат. Например, при х от -2 до 0 получаются бесконечные значения. Да и график зависимости значения интеграла от параметра a имеет подозрительный вид (Рисунок 8.2). Это как раз тот случай, когда с ходу доверяться результатам Maple 7 рискованно.
    В данном случае приходится констатировать давно известный факт — системы компьютерной математики (и Maple 7 в их числе) не всесильны и всегда можно найти интегралы даже с обманчиво простым внешним видом, которые поставят систему в тупик или дадут неверные результаты в той или иной области изменения аргументов. Особенно, опасны интегралы от кусочных функций с разрывами и интегралы, представляемые такими функциями. Именно к ним и относится обсуждаемый сейчас интеграл. Не меньше проблем вызывают интегралы от функций, области определения которых заданы некорректно или просто не изучены.
    Между тем ситуация вовсе не является безнадежной. Надо просто знать, что предпринять, чтобы подсказать системе правильный путь решения. Например, в нашем случае, применив параметр continuous (в апострофах), можно получить куда более простое выражение:

    Шаг 8

    Шаг 8

    Шаг 8

    Шаг 9

    Шаг 9

    Шаг 9 а



    Сумма от перемены мест слагаемых меняется!

    Сумма от перемены мест слагаемых меняется!

    Даже школьники хорошо знают, что от перестановки слагаемых сумма не изменяется. Однако Maple 7 (кстати, как и большинство других систем компьютерной математики) при вычислении сумм, увы, этому правилу не следует. Приведенные ниже примеры наглядно показывают этот просчет системы:

    Суммы бесконечных последовательностей

    Суммы бесконечных последовательностей

    Многие суммы бесконечных последовательностей сходятся к определенным численным или символьным значениям, и система Maple 7 способна их вычислять. Это поясняют следующие примеры:

    Суммы с заданным пределом

    Суммы с заданным пределом

    Особый класс образуют последовательности, у которых предел задается в общем виде значением переменной. Ниже представлен ряд последовательностей, у которых предел задается как 0.. n или 1.. n:

    Вычисление интегралов

    Вычисление интегралов

    Вычисление неопределенных интегралов
    Вычисление неопределенного интеграла обычно заключается в нахождении первообразной функции. Это одна из широко распространенных операций математического анализа.
    Для вычисления неопределенных и определенных интегралов Maple V предоставляет следующие функции:
    int(f.x); int(f.x=a..b); int(f.x=a..b,continuous):
    Int(f.x); Int(f,x=a..b): Int(f,x=a..b,continuous):
    Здесь f — подынтегральная функция, х — переменная, по которой выполняются вычисления, а и b — нижний и верхний пределы интегрирования, continuous — необязательное дополнительное условие.
    Maple 7 старается найти аналитическое значение интеграла с заданной подынтегральной функцией, Если это не удается (например, для "не берущихся" интегралов), то возвращается исходная запись интеграла. Для вычисления определенного интеграла надо использовать функцию evalf(int(f ,х=а. .b)). Ниже приведены примеры вычисления интегралов:

    Вычисление кратных интегралов

    Вычисление кратных интегралов

    Функции int и Int могут использоваться для вычисления кратных интегралов, например двойных и тройных. Для этого функции записываются многократно:

    Вычисление определенных интегралов

    Вычисление определенных интегралов

    Другой важной операцией является нахождение в аналитической или численной форме определенного интеграла:

    Вычисление пределов функций

    Вычисление пределов функций

    Для вычисления пределов функции f в точке х =а используются следующие функции:
    limit(f,x=a); limit(f,x=a.dir);
    Limit(f.x=a); Limit(f.x-a.dir);
    Здесь f - алгебраическое выражение, х - имя переменной, dir - параметр, указывающий на направление поиска предела (left — слева, right — справа, real — в области вещественных значений, complex — в области комплексных значений). Значением а может быть бесконечность (как положительная, так и отрицательная). Примеры применения этих функций для вычисления пределов в точке приведены ниже:

    Вычисление произведений членов последовательностей

    Вычисление произведений членов последовательностей

    Основные формулы для произведения членов последовательностей
    Аналогичным образом для произведений членов f(i) некоторой последовательности, например вида:

    Вычисление производных

    Вычисление производных

    Функции дифференцирования выражений diff и Diff
    Вычисление производных функций fn(x) = dfn(x)/dxn n-го порядка — одна из самых распространенных задач математического анализа. Для ее реализации Maple 7 имеет следующие основные функции:
    diff(a., xl, х2, .... xn) diff(a, [xl, х2, .... хn])
    Diff(a, xl, x2, .... xn) Diff(a, [xl, x2, .... хn])
    Здесь а — дифференцируемое алгебраическое выражение, властности функция f(xl. x2, .... хn) ряда переменных, по которым производится дифференцирование. Функция Diff является инертной формой вычисляемой функции diff и может использоваться для естественного воспроизведения производных в документах. Первая из этих функций (в вычисляемой и в инертной форме) вычисляет частные производные для выражения а по переменным xl, х2, ..., .хn. В простейшем случае diff(f(x),x) вычисляет первую производную функции f(x) по переменной х. При n, большем 1, вычисления производных выполняются рекурсивно, например diff (f (х), х, у) эквивалентно diff(diff (f(x), х), у). Оператор $ можно использовать для вычисления производных высокого порядка. Для этого после имени соответствующей переменной ставится этот оператор и указывается порядок производной. Например, выражение diff (f(x) ,x$4) вычисляет производную 4-го порядка и эквивалентно записи diff (f (х) ,х,х,х.х). A diff (g(x,y) ,x$2,y$3) эквивалентно diff(g(x,y),x,x.y,y,y) ;
    Примеры вычисления производных:

    Вычисление сумм последовательностей

    Вычисление сумм последовательностей

    Основные формулы для вычисления сумм последовательностей
    Применение систем символьной математики особенно эффективно при решении задач математического анализа. Maple 7 обладает богатейшей базой данных по формулам математического анализа и может полноценно заменять тома книг со справочными данными. При этом важно, что Maple не только "знает" многие формулы, но и может успешно использовать их при решении достаточно сложных задач в аналитическом (символьном) виде.
    Начнем рассмотрение таких операций с вычисления сумм последовательностей. Вычисление суммы членов некоторой последовательности f(k) при изменении целочисленного индекса k от значения m до значения n с шагом +1, то есть выражения:

    Анализ функций

    Анализ функций на непрерывность

    Анализ функций на непрерывность

    Для исследования функций на непрерывность Maple 7 имеет функцию iscont, записываемую в ряде форм:
    iscont(expr. х - а .. Ь)
    iscont(expr. х = а .. b, 'closed')
    iscont(expr. х - а .. b, 'open')
    Она позволяет исследовать выражение ехрr, заданное в виде зависимости от переменной х, на непрерывность. Если выражение непрерывно, возвращается логическое значение true, иначе — false. Возможен также результат типа FAIL. Параметр 'closed1 показывает, что конечные точки должны также проверяться, а указанный по умолчанию параметр 'open' — что они не должны проверяться.
    Работу функции iscont иллюстрируют следующие примеры:
    > iscont(l/x^2,x=-l..l);
    false
    > iscont(l/x^2.x=-l..l,'closed');
    false
    > iscont(l/x,x-0..1);
    true > iscont(l/x,x=0..1.'closed'); ,
    false ,--v > iscont(l/(x+a).x=-l..l);
    FAIL
    Рекомендуется внимательно присмотреться к результатам этих примеров и опробовать свои собственные примеры.

    Анализ функций

    Анализ функций

    Поиск экстремумов функций
    Важным разделом математики является исследование аналитических функций. Оно обычно заключается в определении координат особых точек функции и ее значений в этих точках, а также в выяснении особенностей функции, таких как наличие точек разрыва, асимптот, точек перегибов, разрывов и т. д. К сожалению, пока нет средств, сразу выявляющих все особенности функций, поскольку даже средства, решающие частные задачи анализа функций, довольно сложны и специфичны. Достаточно отметить проблему поиска экстремумов функций (особенно функций нескольких переменных). Поэтому функции приходится анализировать индивидуально.
    С помощью функции fsolve легко находятся значения независимой переменной х функций вида f(x), при которых f(x)=0 (корни этого уравнения). При этом данная функция позволяет (в отличие от функции solve) изолировать корни функции f(x) указанием примерного интервала их существования. Ряд функций служит для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций, extrema, позволяет найти экстремумы выражения ехрr (как максимумы, так и минимумы) при ограничениях constcs и переменных vans, по которым ищется экстремум: extrema(expr. constrs) extrema(expr, constrs, vars) extrematexpr, constrs, vans, V)
    Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}. Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась командой readlib(extrema). Но в Maple 7 ее можно использовать без предварительного объявления. В этом убеждают приведенные ниже примеры:

    Аппроксимация аналитически заданных функций

    Аппроксимация аналитически заданных функций

    Если функция задана аналитически, то наиболее простым способом нахождения ее аппроксимирующей зависимости является применение функции convert. Это поясняют следующие примеры:

    Функции из отдельных кусков

    Функции из отдельных кусков

    Создание функций из отдельных кусков
    Для создания функций, составленных из отдельных кусков, Maple 7 располагает интересной функцией:
    piecewise(cond_l,f_l. cond_2,f_2. .... cond_n,f_n. f_otherwise)
    где f_i — выражение, cond_i — логическое выражение, f_otherwise — необязательное дополнительное выражение. В зависимости от того или иного условия эта функция позволяет формировать соответствующую аналитическую зависимость. К кусочным функциям (подчас в скрытой форме) приводят функции с элементами сравнения аргумента, например abs, signum, max и др. Поэтому в Maple 7 введен достаточно мощный аппарат обработки и преобразований таких функций по частям.

    Интерполяция и аппроксимация функциональных зависимостей

    Интерполяция и аппроксимация функциональных зависимостей

    Интерполяция, экстраполяция и аппроксимация
    Вычисление многих функций, особенно специальных, требует больших затрат времени. Поэтому до сих пор широко применяются таблицы таких функций. Достаточно отметить знаменитые на весь мир таблицы в книге "Справочник по специальным функциям с формулами, графиками и таблицами" под редакцией М. Абрамовица и И. Стиган [59].
    Если некоторая зависимость у(х) представлена рядом табличных отсчетов y(x), то интерполяцией принято называть вычисление значений у(х) при заданном х, расположенном в интервале между отсчетами. За пределами общего интервала определения функции [а,b], то есть при х < а и х > b, вычисление у(х) называют экстраполяцией (или иногда предсказанием значений функции). В данном случае речь идет об одномерной интерполяции, но возможны двумерная интерполяция функций двух переменных z(x, у) и даже многомерная интерполяция для функций многих переменных.
    Интерполяция и экстраполяция часто выполняются по некоторой скрытой, но подразумеваемой зависимости. Например, если узловые точки функции соединить отрезками прямых, то будем иметь многоинтервальную линейную интерполяцию данных. Если использовать отрезки параболы, то интерполяция будет параболической. Особое значение имеет многоинтервальная сплайн-интерполяция, области применения которой уже сейчас весьма обширны и непрерывно расширяются. Интерполяция рядом Фурье (набором синусоидальных функций) также достаточно хорошо известна; она эффективна при интерполяции периодических функций.
    Аппроксимацией в системах компьютерной математики обычно называют получение приближенных значений какого-либо выражения. Однако под аппроксимацией функций подразумевается получение некоторой конкретной функции, вычисленные значения которой с некоторой точностью аналогичны аппроксимируемой зависимости. Обычно предпочитают найти одну зависимость, приближающую заданный ряд узловых точек. Часто для этого используют степенные многочлены — полиномы.
    Здесь мы будем рассматривать такие виды аппроксимации, которые дают точные значения функции у(х) в узловых точках в пределах погрешности вычислений по умолчанию. Если аппроксимирующая зависимость выбирается из условия наименьшей среднеквадратической погрешности в узловых точках (метод наименьших квадратов), то мы имеем регрессию или приближение функций по методу наименьших квадратов.

    Нахождение сингулярных точек функции

    Нахождение сингулярных точек функции

    Многие операции, такие как интегрирование и дифференцирование, чувствительны к особенностям функций, в частности к их разрывам и особым точкам. Функция singular (ехрr, vars) позволяет найти особые (сингулярные) точки выражения ехрг, в которых она испытывает разрывы. Дополнительно в числе параметров может указываться необязательный список переменных.
    Примеры применения этой функции приведены ниже:

    Оценка коэффициентов полинома по степеням

    Оценка коэффициентов полинома по степеням

    Полином может быть неполным, то есть не содержать членов со степенями ниже некоторой. Функция lcoeff возвращает старший, а функция tcoeff — младший коэффициент полинома нескольких переменных. Эти функции задаются в виде:
    lcoeff(p) tcoeff(p)
    Icoeff(p. x) tcoeff(p, x)
    Icoeff(p. x. 't') tcoeff(p, x. 't')
    Функции Icoeff и tcoef f возвращают старший (младший) коэффициент полинома р относительно переменной х или ряда переменных при многомерном полиноме. Если х не определено, Icoeff (tcoeff) вычисляет старший (младший) коэффициент относительно всех переменных полинома р. Если третий аргумент t определен, то это имя назначено старшему (младшему) члену р. Если х — единственное неизвестное и d — степень р по х, то lcoeff(p, x) эквивалентно coef f (p. x, d). Если х — список или множество неизвестных, lcoeff (tcoef f) вычисляет старший (младший) коэффициент р, причем р рассматривается как полином многих переменных. Имейте в виду, что р должен быть разложен по степеням неизвестного х до вызова функций lcoeff или tcoef f.
    Приведем примеры применения функций lcoeff, tcoef f и coeffs:

    Оценка степеней полинома

    Оценка степеней полинома

    Функция degree возвращает высшую степень полинома, а ldegree — низшую степень. Эти функции задаются следующим образом:
    degree(a.x) ldegree(a.x)
    Функции degree и ldegree используются, чтобы определить высшую и низшую степени полинома от неизвестного (неизвестных) х, которое чаще всего является единственным, но может быть списком или множеством неизвестных. Полином может иметь отрицательные целые показатели степеней при х. Таким образом, degree и ldegree могут возвратить отрицательное или положительное целое число. Если выражение не является полиномом от х данным параметром, то возвращается FAIL.
    Чтобы degree и ldegree возвратили точный результат, полином обязательно должен быть сгруппирован по степеням х. Например, для выражения (х + 1) (х+ 2) - х2 функция degree не обнаружит аннулирование старшего члена и неправильно возвратит результат 2. Во избежание этой проблемы перед вызовом degree следует применять к полиному функции collect или expand. Если х — множество неизвестных, degree/ ldegree вычисляет полную степень. Если х — список неизвестных, degree/ldegree вычисляет векторную степень. Векторная степень определяется следующим образом:
    degree(p.[]) =0
    degree(p.[xl.x2,...]) =degree(p.xl) degree(lcoeff(p.xl),[x2....])
    Полная степень тогда определяется следующим образом:
    degree(p.{xl....,xn}) - maximum degree(p.{xl....xn})
    или
    degree(p,{xl....,xn}) = degree(p.[xl,....xn])
    Обращаем внимание на то, что векторная степень зависит от порядка перечисления неизвестных, а полная степень не зависит.
    Примеры применения функций degree и ldegree:

    Операции над степенными многочленами

    Операции над степенными многочленами с отрицательными степенями

    Хотя в подавляющем большинстве случаев используются степенные многочлены (полиномы) с положительными степенями, Maple 7 не накладывает особых ограничений и на многочлены с отрицательными степенями. Например, можно задать такой степенной многочлен:

    Операции с полиномами

    Операции с полиномами

    Определение полиномов
    К числу наиболее известных и изученных аналитических функций относятся степенные многочлены — полиномы. Графики полиномов описывают огромное разнообразие кривых на плоскости. Кроме того, возможны рациональные полиномиальные выражения в виде отношения полиномов. Таким образом, круг объектов, которые могут быть представлены полиномами, достаточно обширен, и полиномиальные преобразования широко используются на практике, в частности, для приближенного представления других функций.
    Под полиномом в системе Maple 7 понимается сумма выражений с целыми степенями. Многочлен для ряда переменных —многомерный полином. К одномерным полиномам относятся степенной многочлен:

    Определение точек нарушения непрерывности

    Определение точек нарушения непрерывности

    Функции, не имеющие непрерывности, доставляют много хлопот. Поэтому важным представляется анализ функций на непрерывность. В Maple 7 функция discont(f,х) позволяет определить точки, в которых нарушается непрерывность функции f(x). Она вычисляет все точки в пределах изменениях от -? до +?. Результаты вычислений могут содержать особые экстра переменные с именами вида _Zn- и _NNn-. В частности, они позволяют оценить периодические нарушения непрерывности функций.
    Примеры применения функции discont приведены ниже:
    > discont(l/(x-2).x);
    {2}
    > discont(l/((x-l)*(x-2)*(x-3)).x):
    {1,2,3}
    > discont(GAMMA(x/2),x):
    {-2_NN1~}
    Весьма рекомендуется наряду с применением данной функции просмотреть график анализируемой функции.
    Примечание 1
    Примечание 1


    В ряде примеров в выводе используются специальные переменные вида _NameN~, где Name — имя переменной иN— ее текущий номер. После выполнения команды restart отсчет N начинается с 1. Если вывод с такими переменными уже применялся, то их текущие номера могут казаться произвольными. Специальные переменные часто используются для упрощения выводимых выражений.

    Основные операции с полиномами

    Основные операции с полиномами

    С полиномами могут выполняться различные операции. Прежде всего отметим некоторые функции, которые относятся к одному полиному:
  • psqrt(p) — возвращает квадрат полинома;
  • proot(p.n) — возвращает n -ю степень полинома;
  • realroot(p) — возвращает интервал, в котором находятся действительные корни полинома;
  • randpolyCvars, eqns) — возвращает случайный полином по переменным vans (список) с максимальной степенью eqns;
  • discrim(p,var) — вычисление дискриминанта полинома по переменной var;
  • Primitive(a) mod p — проверка полинома на примитивность (возвращает true, если полином примитивен).
  • Действие этих функций достаточно очевидно, поэтому ограничимся приведением примеров их использования:

    Поиск минимумов и максимумов аналитических функций

    Поиск минимумов и максимумов аналитических функций

    Часто нужно найти минимум или максимум заданной функции. Для поиска минимумов и максимумов выражений (функций) ехрr служат функции стандартной библиотеки:
    minimize(expr, optl, opt2, .... optn)
    maximize(expr, optl. opt2. .... optn)
    Эти функции могут разыскивать максимумы и минимумы для функций как одной, так и нескольких переменных. С помощью опций optl, opt2,..., optn можно указывать дополнительные данные для поиска. Например, параметр `infinity` означает, что поиск минимума или максимума выполняется по всей числовой оси, а параметр location (или locatiorrtrue) дает расширенный вывод результатов поиска — выдается не только значение минимума (или максимума), но и значения переменных в этой точке.
    Примеры применения функции minimize приведены ниже:

    Полиномиальная интерполяция табличных данных

    Полиномиальная интерполяция табличных данных

    Если данные некоторой зависимости у(х) заданы векторами X и Y ее дискретных значений, то для получения интерполяционного степенного многочлена достаточно записать многочлен для всех N пар значений yi(xi) при i=1...N (или i =0...N- 1, если индексы отсчетов начинаются с нуля). Полученная при этом система линейных (относительно коэффициентов полинома) уравнений после решения дает коэффициенты аппроксимирующего полинома. Степень полинома на 1 меньше N, а вычисляемые при х значения у(х) совпадают с табличными (узловыми) в пределах вычислительной погрешности.
    На самом деле все это делать не нужно, поскольку Maple 7 имеет реализующую данный алгоритм встроенную функцию interp(X,Y,v) или в инертной форме Interp(X,Y,v).
    Переменная v указывает имя переменной интерполяционного полинома. Векторы X и Y должны содержать n + 1 =N координат точек исходной зависимости, где и — степень интерполирующего полинома.
    Рисунок 9.5 показывает технику применения полиномиальной аппроксимации на основе функции interp с построением графика исходных точек и аппроксимирующего полинома. Нетрудно заметить, что график полинома проходит точно через исходные точки — они показаны квадратиками.
    В этом примере полезно присмотреться к визуализации результатов вычислений и совместному построению графика интерполирующего полинома и исходных точек. В частности, для построения последних использована обычная функция plot, позволяющая выводить на график точки с заданными координатами, причем не только в виде окружностей, но и в виде точек, маленьких крестиков, кружков, квадратов и других фигур. Для выбора типа точек и других параметров графика его надо выделить (установив указатель мыши в поле графика и щелкнув левой кнопкой) и нажать правую кнопку мыши — появится контекстно-зависимое меню с операциями форматирования графика. Это меню показано на Рисунок 9.5.
    Приведем еще несколько примеров использования функции Interp:

    Пример анализа сложной функции

    Пример анализа сложной функции

    Ниже мы рассмотрим типичный анализ достаточно "сложной" функции, имеющей в интересующем нас интервале изменения аргумента х от -4 до 4, нули, максимумы и минимумы. Определение функции f(x), ее графики и график производной dF(x)/dx даны на Рисунок 9.2. Этот рисунок является началом полного документа, описываемого далее, i
    Функция F(x) на первый взгляд имеет не совсем обычное поведение вблизи начала координат (точки с х =у = 0). Для выяснения такого поведения разумно построить график функции при малых х и у. Он также представлен на Рисунок 9.2 (нижний график) и наглядно показывает, что экстремум вблизи точки (0, 0) является обычным минимумом, немного смещенным вниз и влево от начала координат. Теперь перейдем к анализу функции F(x). Для поиска нулей функции (точек пересечения оси х) удобно использовать функцию f sol ve, поскольку она позволяет задавать область изменениях, внутри которой находится корень. Как видно из приведенных ниже примеров, анализ корней F(x) не вызвал никаких трудностей, и все корни были уточнены сразу: Поиск нулей функции
    > fsolve(F(x),x,-2...-l):
    -1.462069476 > fso1ve(F(x),x,-.01..0.01);
    0.
    > fsolve(F(x).x.-.05..0);
    -.02566109292
    > fsolve(F(x),x,1..2);
    1.710986355
    > fsolve(F(x),x,2.5..3):
    2.714104921
    Нетрудно заметить, что функция имеет два очень близких (но различных) корня прих, близких к нулю.
    Анализ функции на непрерывность, наличие ее нарушений и сингулярных точек реализуется следующим образом:
    Анализ функции на непрерывность, наличие ее нарушений и наличие сингулярных точек

    Прямое и обратное Zпреобразования

    Прямое и обратное Z-преобразования

    Прямое и обратное Z-преобразования функций широко используются при решении задач автоматического управления. Эти преобразования задаются следующими функциями:
  • ztrans(f, n, z) — прямое преобразование функции f(n) в f(z);
  • invztransCf, z, n) — обратное преобразование f(z) в f(n).
  • Заметим, что прямое Z-преобразование базируется на соотношении ztrans(f (n) ,n,z)= = sum(f(n)/z~n,n=0. .infinity), записанном на Maple-языке. В первых версиях системы Maple Z-преобразования выполнялись средствами библиотеки и требовали вызова командой readlib(ztrans). Но в Maple 7 они включены в ядро системы и предварительного вызова уже не требуют. В этом убеждают следующие примеры:

    Простые примеры применения функции piecewise

    Простые примеры применения функции piecewise

    Рисунок 9.3 показывает задание функции f(x), содержащей три характерных участка. По определенной через функцию пользователя зависимости f(x) можно, как обычно, построить ее график.

    Работа с функциями piecewise

    Работа с функциями piecewise

    С функциями типа piecewise можно работать, как с обычными функциями. При этом необходимые операции и преобразования осуществляются для каждой из частей функции и возвращаются в наглядной форме.
    Ниже приведен пример задания функции f в аналитической форме:

    Разложение полинома на множители

    Разложение полинома на множители

    Для контроля того, имеет ли полином несокращаемые множители, может использоваться функция irredik(p) и ее вариант в инертной форме Ireduc(p.K), где К — RootOf-выражение. Ниже приведены примеры применения этих тестовых функций:

    Разложение полинома по степеням

    Разложение полинома по степеням

    Для разложения полинома р по степеням служат инертные функции AFactor(р) и AFactors(p). Полином может быть представлен в виде зависимости от одной или нескольких переменных.
    Функция Afactor(p) выполняет полную факторизацию (разложение) полинома р от нескольких переменных с коэффициентами в виде алгебраических чисел над полем комплексных чисел. При этом справедливо отношение evala(AFactor(p) )=factor(p,complex). Таким образом, эта функция является, по существу, избыточной.
    В случае одномерного полинома полное разложение на множители является разложением на линейные множители. Функция AFactors аналогична функции Afactor, но создает структуру данных формы [u,[[f[l],e[l]],....[f[n],e[n]]]] так, что p=u*f[l]xe[l]*...*f[n]^e[n], где каждый f[i] — неприводимый полином.
    Ниже даны примеры применения функции Afactor:

    Шаг 1

    Шаг 1

    Шаг 1



    Для выявления характера функции воспользуемся

    Шаг 1

    Для выявления характера функции воспользуемся Для выявления характера функции воспользуемся функцией convert и создадим объект g в виде кусочной функции:

    и константа. Большое достоинство полиномов

    Шаг 1

    и константа. Большое достоинство полиномов а также отдельная переменная х и константа. Большое достоинство полиномов состоит в том, что они дают единообразное представление многих зависимостей и для своего вычисления требуют только арифметических операций (их число значительно сокращается при использовании хорошо известной схемы Горнера). Производные от полиномов и интегралы с подынтегральными функциями-полиномами легко вычисляются и имеют простой вид. Есть и достаточно простые алгоритмы для вычисления всех (в том числе комплексных) корней полиномов на заданном промежутке.

    Следует обратить внимание на то,

    Шаг 1

    Следует обратить внимание на то, ПРИМЕЧАНИЕ
    Следует обратить внимание на то, что при выполнении операции collect в прежних версиях Maple довольно часто возникала фатальная ошибка. Как видно из приведенных примеров, в Maple 7 такой ошибки уже не возникает.

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Нетрудно заметить, что разложение полинома

    Шаг 1

    Нетрудно заметить, что разложение полинома Нетрудно заметить, что разложение полинома на множители позволяет оценить наличие у него корней. Однако для этого удобнее воспользоваться специальными функциями, рассмотренными ниже.

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1



    с ним можно выполнять различные

    Шаг 1

    с ним можно выполнять различные Нетрудно показать, что с ним можно выполнять различные операции:

    и для функции поиска максимума

    Шаг 1

    и для функции поиска максимума Приведем подобные примеры и для функции поиска максимума — maximize:

    представлен пример полиномиальной аппроксимации

    Шаг 1

    представлен пример полиномиальной аппроксимации На Рисунок 9. 4 представлен пример полиномиальной аппроксимации хорошо известной статистической функции erfc(x). Для полинома задана максимальная степень 12, но ввиду отсутствия в разложении четных степеней максимальная степень результата оказывается равна 11.

    Шаг 1

    Шаг 1

    Шаг 1



    и построение графиков полученных функций

    Шаг 1

    и построение графиков полученных функций

    Рисунок 9.6. Задание сплайновой аппроксимации и построение графиков полученных функций
    Как видно из Рисунок 9.6, сплайновая функция представляет собой кусочную функцию, определяемую на каждом отдельном интервале. При этом на каждом участке такая функция описывается отдельным полиномом соответствующей степени. Функция plot "понимает" такие функции и позволяет без преобразования типов данных строить их графики. Для работы с кусочными функциями можно использовать функции convert и piecewise.

    преобразованиям интегральные преобразования Лапласа

    Шаг 1

    преобразованиям интегральные преобразования Лапласа Родственные Z- преобразованиям интегральные преобразования Лапласа и Фурье реализуются с помощью пакета inttrans (интегральные преобразования).

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1



    Шаг 1

    Шаг 1

    Шаг 1

    и применения функции, составленной из

    Шаг 1

    и применения функции, составленной из Рисунок 9.3. Пример задания и применения функции, составленной из отдельных кусков
    Важно отметить, что созданная с помощью функции piecewise зависимость может участвовать в различных преобразованиях. Например, на Рисунок 9.3 показано, что она легко дифференцируется и можно построить график производной этой функции. При этом каждая часть функции обрабатывается отдельно.

    Как видно из приведенных примеров,

    Шаг 2

    Как видно из приведенных примеров, Как видно из приведенных примеров, функция extrema возвращает как значения экстремумов, так и значения аргументов, при которых экстремумы наблюдаются.
    Для проверки оптимизационных алгоритмов существует ряд тестовых функций. Одна из таких функций — функция двух переменных Розенброка. В представленном ниже примере она задана как rf(x.y):

    и интегрирование функции:

    Шаг 2

    и интегрирование функции: Выполним дифференцирование и интегрирование функции:

    Обратите внимание на то, что

    Шаг 2

    Обратите внимание на то, что Обратите внимание на то, что для использования некоторых из приведенных функций необходим вызов их из стандартной библиотеки. Для функции randpoly приведенные результаты случайны, так что, скорее всего, их повторение невозможно.
    С полиномами можно выполнять обычные операции, используя для этого соответствующие операторы:

    не накладывает ограничений на

    Шаг 2

    не накладывает ограничений на Примечание 1
    Примечание 1


    Maple 7 не накладывает ограничений на применение степенных многочленов (полиномов) с отрицательными степенями. Однако свойства таких полиномов заметно отличаются от свойств полиномов с положительными степенями, поэтому при применении первых надо проявлять известную осторожность.

    Обратите внимание на то, что

    Шаг 2

    Обратите внимание на то, что Обратите внимание на то, что в предпоследнем примере Maple 7 явно "оскандалилась" и вместо максимума функции sin(x)/x, равного 1 при х=0, выдал результат в виде бесконечности. Другими словами, система обнаружила, что в данном случае ей незнакомо понятие предела sin(x)/x при х—>0. Эта ситуация кажется более чем странной, если учесть, что в этом примере Maple 6 давал правильный результат.
    Применим функцию minimize для поиска минимума функции Розенброка. Рисунок 9.1 показывает, что minimize прекрасно справляется с данной задачей. На Рисунок 9.1 представлено также построение функции Розенброка, хорошо иллюстрирующее ее особенности.

    Как видно из приведенного рисунка,

    Шаг 2

    Как видно из приведенного рисунка,

    Рисунок 9.4. Пример полиномиальной аппроксимации функции erfc(x)
    Как видно из приведенного рисунка, в интервале изменениях от -1,5 до 1,5 аппроксимирующее выражение почти повторяет исходную зависимость. Однако затем график аппроксимирующей функции быстро отходит от графика исходной зависимости. При этом он ведет себя иначе даже качественно, никоим образом не показывая асимптотическое поведение, характерное для исходной зависимости.

    Пример осуществления полиномиальной аппроксимации

    Шаг 2

    Пример осуществления полиномиальной аппроксимации

    Рисунок 9.5. Пример осуществления полиномиальной аппроксимации

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2 a

    Как нетрудно заметить, минимум этой

    Шаг 3

    Как нетрудно заметить, минимум этой Как нетрудно заметить, минимум этой функции при значениях х =у = 1, равный О, функцией extrema не обнаружен. Однако это не недостаток данной функции, а просто неудачное ее применение. Функция Розенброка имеет минимум значения, и для его обнаружения надо использовать функцию minimize, описанную ниже.
    Примечание 1
    Примечание 1


    Функция extrema дает неплохие результаты при поиске экстремумов простых аналитических функций, не имеющих особенностей. Однако при анализе сложных функций, содержащих функции со сравнением аргумента (например, abs(x), signum(x) и др.), функция extrema часто отказывается работать и просто повторяет запись обращения к ней.

    Как нетрудно заметить, результаты получены

    Шаг 3

    Как нетрудно заметить, результаты получены Как нетрудно заметить, результаты получены также в виде кусочных функций. Можно продолжить работу с функцией f и выполнить ее разложение в степенной ряд:
    > series(f, х);
    -1+.Х + О(x6)
    Чтобы убрать член с остаточной погрешностью, можно выполнить эту операцию следующим образом:
    > series(g, x);
    -1 + х
    Обратите внимание на то, что поскольку разложение в ряд ищется (по умолчанию) в окрестности точки х=0, то при этом используется тот кусок функции, в котором расположена эта точка. Читатель может продолжить работу с кусочными функциями и далее.

    В целом надо отметить, что

    Шаг 3

    В целом надо отметить, что В целом надо отметить, что аппарат действий с полиномами в Maple 7 хорошо развит и позволяет выполнять с ними практически любые математические операции. В частности, можно вычислять производные от полиномов и интегралы, у которых полиномы являются подынтегральными функциями:

    Трудность поиска минимума функции Розенброка

    Шаг 3

    Трудность поиска минимума функции Розенброка

    Рисунок 9.1. Поиск минимума функции Розенброка и построение ее графика
    Трудность поиска минимума функции Розенброка связана с ее характерными особенностями. Из Рисунок 9.1 видно, что эта функция представляет собой поверхность типа "глубокого оврага с почти плоским дном", в котором и расположена точка минимума. Такая особенность этой функции существенно затрудняет поиск минимума. То, что система Maple 7 справляется с данной тестовой функцией, вовсе не означает, что трудности в поиске минимума или максимума других функций остаются позади.

    Шаг 3

    Шаг 3

    Шаг 3 б

    Шаг 4

    Шаг 4

    Шаг 4

    либо особенностей. Однако это не

    Шаг 4

    либо особенностей. Однако это не в
    Рисунок 9.2. Задание функции F(x) и построение графиков функции и ее производной
    Этот анализ не выявляет у заданной функции каких- либо особенностей. Однако это не является поводом для благодушия — попытка найти экстремумы F(x) с помощью функции extrema и минимумы с помощью функции minimize завершаются полным крахом:
    Неудачный поиск экстремумов и минимумов функции
    >extrema(F(x).{},x, 's');s;
    >minimize(F(x),x=-.l...l);
    minimize (.05x + xe (-|x|) * sm(2x),x = -.1 .. 1)
    >minimize(F(x),x=-2.5..:2);S
    minimize (.05x + xe(-|x|) sin(2*),*'=-2.5 ..-2)
    Приходится признать, что в данном случае система Maple 7 ведет себя далеко не самым лучшим образом. Чтобы довести анализ F(x) до конца, придется вспомнить, что у функции без особенностей максимумы и минимумы наблюдаются в точках, где производная меняет знак и проходит Через нулевое значение. Таким образом, мы можем найти минимумы и максимумы по критерию равенства производной нулю. В данном случае это приводит к успеху:
    Поиск минимумов по критерию равенства нулю производной
    > fso1ve(d1ff(F(x),x)=0,x,-.5...5);
    -.01274428224
    >xm:=%;
    хт:= -.0003165288799
    >[F(xm),F(xnn-.001),F(xm-.001)]:
    [-.00001562612637, .00003510718293, -.00006236451216]
    >fsolve(diff(F(x),x)-0.x,-2.5..-2);
    -2.271212360 '
    >fso1ve(diff(F(x),x)=0,x.2..2.5):
    2.175344371
    Неудачный поиск максимума
    >maximize(F(x) ,x--l.. - .5);
    maximize(.05х + хе (-|x|) * sin(2x),x = -l .. -.5)
    Поиск максимумов по критерию равенства нулю производной
    >fso1ve(diff(F(x).x),x,-l..-.5);
    -.8094838517
    >fso1ve(diff(F(x),x),x..5..2):
    .8602002115
    >fsolve(diff(F(x),x),x.-4..-3);
    -3.629879137
    >fsolve(diff(F(x),x).x,3..4);
    3.899664536
    Итак, все основные особые точки данной функции (нули, минимумы и максимумы) найдены, хотя и не без трудностей и не всегда с применением специально предназначенных для такого поиска функций. В уроке 12 будет описана процедура, которая автоматизирует процесс анализа не очень сложных функций и обеспечивает его наглядную визуализацию.

    Сплайнинтерполяция и аппроксимация

    Сплайн-интерполяция и аппроксимация

    Точность полиномиальной аппроксимации катастрофически падает при увеличении степени аппроксимирующих полиномов. От этого недостатка можно избавиться, используя для аппроксимации отрезки полиномов невысокой степени, применяемые для представления части узловых точек. Самым известным методом такой аппроксимации является сплайн-аппроксимация на основе применения отрезков кубических полиномов. При этом аппарат сплайн- аппроксимации позволяет получить полиномы, которые дают в узловых точках непрерывность не только представляемой ими функции, но и ее первых и даже вторых производных.
    Наглядно сплайн-функцию можно представить в виде гибкой стальной линейки, закрепленной в узловых точках и плавно изгибающейся. Благодаря указанным свойствам сплайнов они неплохо описывают функции, представленные как небольшим числом узловых точек (благодаря плавности сплайн- кривых), так и функции, представляемые очень большим числом узловых точек (поскольку порядок полиномов от этого числа уже не зависит). Недостатком сплайн- аппроксимации является отсутствие общего выражения для всей кривой. Фактически приходится использовать набор сплайн- функций для различных интервалов между узловыми точками.
    Для получения сплайн- интерполяций используется Maple-функция spline (X, Y, var, d).
    Здесь X и Y — одномерные векторы одинакового размера, несущие значения координат узловых точек исходной функции (причем в произвольном порядке), var — имя переменной, относительно которой вычисляется сплайн-функция, наконец, необязательный параметр d задает вид сплайна. Он может иметь следующие значения: 1inear — линейная функция, или полином первого порядка, quadratic — квадратичная функция, или полином второго порядка, cubic — полином третьего порядка, quartiс — полином четвертого порядка. Если параметр d опущен, то сплайн-функция будет строиться на основе полиномов третьего порядка (кубические сплайны).
    Технику сплайновой аппроксимации наглядно поясняет Рисунок 9.6. На нем представлено задание векторов узловых точек X и Y и четырех сплайновых функций, по которым построены их графики. Для одной из функций (с линейной интерполяцией между узлами) показан вид сплайновой функции.

    Анализ функций и полиномов

    Урок 9.

    Анализ функций и полиномов.

    Вычисление асимптотических и иных разложений

    Вычисление асимптотических и иных разложений

    Важным достоинством системы Maple является наличие в ней ряда функций, позволяющих выполнять детальный анализ функций. К такому анализу относится вычисление асимптотических разложений функций, которые представляются в виде рядов (не обязательно с целыми показателями степени). Для этого используется следующая функция:
    asympt(f.x) asympt(f,x,n).
    Здесь f — функция переменной х или алгебраическое выражение; х — имя переменной, по которой производится разложение; n — положительное целое число (порядок разложения, по умолчанию равный 6). Ниже представлены примеры применения этой функции:

    Вычисление корней полинома

    Вычисление корней полинома

    Для вычисления действительных и комплексных корней полиномов служит уже известная нам функция solve(p.x), возвращающая список корней полинома р одной переменной. Кроме того, имеются следующие функции для вычисления корней полиномов:
    roots(p) , roots(p. К) ,
    roots(p. x), roots(p. x. К)
    Эти функции вычисляют точные корни в рациональной или алгебраической области чисел. Корни возвращаются в виде [ [rl.ml], .... [rn.mn] ], где ri — это
    корень полинома, a mi — порядковый номер полинома. С действиями этих функций можно разобраться с помощью приведенных ниже примеров:

    Выделение коэффициентов полиномов

    Выделение коэффициентов полиномов

    Для выделения коэффициентов полиномов в Maple 7 служат следующие функции:
  • coeff(p, х) — возвращает коэффициент при х полинома р;
  • coeff(p.x.n) — возвращает коэффициент для члена со степенью n полинома р;
  • coeff(p.x^n) — возвращает коэффициенты при х^n полинома р;
  • coeffs(p, х, 't') — возвращает коэффициенты полинома нескольких переменных, относящиеся к переменной х (или списку переменных) с опцией ' t', задающей имя переменной;
  • collect(p,x) — возвращает полином, объединяя коэффициенты при степенях переменной х.
  • Ниже даны примеры применения этих функций:

    Основные операции с выражениями

    Факторизация выражений

    Факторизация выражений

    Разложение целых и рациональных чисел
    Для разложения целых или рациональных чисел на множители в виде простых чисел служит функция:
    ifactor(n)
    или
    ifactor(n,method)
    где n — число, method — параметр, задающий метод разложения. Другая библиотечная функция, if actors(n), возвращает результат разложения в форме вложенных списков:

    Функции сортировки и селекции

    Функции сортировки и селекции

    Сортировка и селекция выражений широко используются в практике символьных преобразований. Для выполнения сортировки служит функция sort, применяемая в одной из следующих форм:
    sort(L) sort(L. F) sort(A) sort(A. V)
    Здесь L — список сортируемых значений, F — необязательная булева процедура с двумя аргументами, А — алгебраическое выражение, V — необязательные дополнительные переменные.

    Функциональные преобразования элементов списков

    Функциональные преобразования элементов списков

    Еще две функции, реализующие операции подстановки, указаны ниже:
    map(fcn, expr. arg2. .... argn)
    map2(fcn, argl, expr. arg3, .... argn)
    Здесь fen — процедура или имя, expr — любое выражение, argi — необязательные дополнительные аргументы для fen.
    Первая из этих функций позволяет приложить fen к операндам выражения ехрr. Приведенные далее примеры иллюстрируют использование функции mар.

    Комплектование по степеням

    Комплектование по степеням

    Еще одна функция общего назначения — collect — служит для комплектования выражения ехрr по степеням указанного фрагмента х (в том числе множества либо списка). Она задается в одной из следующих форм:
    collect(a. x)
    collect(a. x. form, func)
    Во второй форме этой функции дополнительно задаются параметры form (форма) и func (функция или процедура). Параметр form может иметь два значения- recursive (рекурсивная форма) и distributed (дистрибутивная форма). Параметр func позволяет задать имя функции, по которой будет идти комплектование ехрr. Примеры применения функции collect представлены ниже:

    Контроль за типами объектов

    Контроль за типами объектов

    Выражения и их части в Maple 7 рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т. д. Могут также возвращаться данные об операторах. Примеры применения этой функции даны ниже:
    > whattype(2+3);
    integer
    > whattype(Pi):
    symbol
    > whattype(123./5)
    float
    > whattype(l/3i:
    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(H-2+3=4);
    =
    С помощью функции type(object.t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:
    > type(2+3,integer):
    true
    > type(s1n(x).function);
    true
    > typeChello,string);
    false
    > type("hello",string);
    true
    > typed/3.fraction):
    true
    При успешном соответствии типа объекта указанному (второй параметр) функция type возвращает логическое значение true, в противном случае — false.
    Для более детального анализа объектов может использоваться функция hastype(expr. t), где ехрr — любое выражение и t — наименование типа подобъекта.
    Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении ехрr. Примеры применения этой функции даны ниже:
    > 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(x),2);
    true
    > has(2*sin(x).V);
    false
    > has(2*sin(x),3-l);
    true
    Следует отметить, что соответствие подобъекта выражения указанному подобъекту понимается в математическом смысле. Так, в последнем примере подобъект "3 - 1", если понимать его буквально, в выражении 2*sin(r) не содержится, но Maple-язык учитывает соответствие 3 - 1 = 2, и потому функция has в последнем примере возвращает true.

    Основные операции с выражениями

    Основные операции с выражениями

    Работа с частями выражений
    Выражения (ехрr) или уравнения (eqn) обычно используются как сами по себе, так и в виде равенств или неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:

  • cost (а) — возвращает число сложений и умножений в выражении а (функция пакета codegen);
  • Ihs(eqn) — выделяет левую часть eqn;
  • rhs(eqn) — выделяет правую часть eqn;
  • normal (ехрr) — дает нормализацию (сокращение) ехрr в виде дроби;
  • numer(expr) — выделяет числитель ехрr;
  • Оdenom(expr) — выделяет знаменатель ехрr.
  • Ввиду очевидности действия этих функций ограничимся наглядными примерами их применения:

    @@...

    @@

    abs
    arctan
    conjugate
    exp
    In
    piecewise
    polylog
    power
    product
    Ps
    radical
    range
    signum
    trig
    Примеры применения функции combine представлены ниже:

    Подстановки с помощью функций add mul и seq

    Подстановки с помощью функций add, mul и seq

    Заметим, что операции, подобные описанным выше, Maple 7 реализует и с рядом других функций. Ограничимся примерами на подстановки с помощью функций сложения add, умножения mul и создания последовательностей seq:

    Подстановки с помощью функций subs и subsop

    Подстановки с помощью функций subs и subsop

    Подстановки в общем случае служат для замены одной части выражения на другую. Частными видами подстановок являются такие виды операций, как замена одной переменной на другую или замена символьного значения переменной ее численным значением. Основные операции подстановки выполняют следующие функции: .,
  • subs(x=a.e) — в выражении е заменяет подвыражение х на подвыражение а;
  • subs(sl,...,sn,e) — в выражении е заменяет одни подвыражения на другие, выбирая их из списков si, ..., sn вида х=а;
  • subsop(eql, eq2, .... eqi, ...eqn, e) — в выражении е заменяет указанные в eqi операнды другими, указанными в правой части равенств eqi вида ni=ei, где ni — номер операнда, ei — выражение для замены.
  • Все эти функции возвращают измененное после подстановки выражение. Ниже показаны примеры применения функций подстановок:

    Подстановки

    Подстановки

    Функциональные преобразования подвыражений
    Нередко бывает необходимо заменить некоторое подвыражение в заданном выражении на функцию от этого подвыражения. Для этого можно воснользоваться функцией applyop:

  • applyop(f, i, е) — применяет функцию f к i-му подвыражению выражения е
  • applyop(f, i, е. ..., xk, ...) — применяет функцию f к i'-му подвыражении выражения е с передачей необязательных дополнительных аргументов xk.
  • Ниже даны примеры применения этой функции:

    Преобразование выражений в тождественные формы

    Преобразование выражений в тождественные формы

    Многие математические выражения имеют различные тождественные формы. Порою преобразование выражения из одной формы в другую позволяет получить результат, более удобный для последующих вычислений. Кроме того, различные функции Maple 7 работают с разными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных.
    Основной функцией для такого преобразования является функция convert:
    convert(expr. form, аrgЗ. ...)
    Здесь ехрr — любое выражение, form — наименование формы, аrg3, ... — необязательные дополнительные аргументы.
    convert — простая и вместе с тем очень мощная функция. Ее мощь заключается в возможности задания множества параметров. Их полный перечень (76 штук!) можно найти в справке по функции convert. Многие из этих параметров очевидны с первого взгляда, поскольку повторяют наименования типов чисел, данных или функций. Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, десятичное, шестнадцатеричное и восьмеричное представление. Параметр vector задает преобразование списка в вектор (напоминаем, что список и вектор — разные типы данных), а параметр matrix — в матрицу. Приведем примеры применения функции convert:

    Преобразование выражений

    Преобразование выражений

    Еще одним мощным средством преобразования выражений является функция combine. Она обеспечивает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция -может записываться в трех формах:
    combine(f)
    combinef(, n)
    combine(f. n. optl. opt2. ...)
    Здесь f — любое выражение, множество или список выражений; n — имя, список или множество имен; optl, opt2, ... — имена параметров. Во втором аргументе можно использовать следующие функции:


    Программирование символьных операций

    Программирование символьных операций

    Реализация итераций Ньютона в символьном виде
    Найти достаточно простую и наглядную задачу, решение которой отсутствует в системе Maple 7, не очень просто. Поэтому для демонстрации решения задачи с применением аналитических методов воспользуемся примером, ставшим классическим, — реализуем итерационный метод Ньютона при решении нелинейного уравнения вида f(x) - 0.
    Как известно, метод Ньютона сводится к итерационным вычислениям по следующей формуле:
    xi+1=x1+f(x1)/f'(x1);
    Реализующая его процедура выглядит довольно просто:

    Работа с уровнями вложенности выражений

    Работа с уровнями вложенности выражений

    В общем случае выражения могут быть многоуровневыми и содержать объекты, расположенные на разных уровнях вложенности. Приведем две функции для оценки уровней выражений и списков:
  • nops(expr) — возвращает число объектов первого уровня (операндов) в выражении ехрr;
  • ор(ехрr) — возвращает список объектов первого уровня в выражении ехрr;
  • ор(n.ехрr) — возвращает n-й объект первого уровня в выражении ехрr.
  • Ниже представлены примеры применения этих функций:

    Расширение выражений

    Расширение выражений

    Даже в жизни мы говорим: "не все так просто". Порою упрощенное выражение скрывает его особенности, знание которых является желательным. Функция expand "расширяет" выражение ехрr и записывается в виде:
    expanc(expr, expr1, ехрг2, .... ехрrn)
    где ехрr — расширяемое выражение, exprl, ехрг2, ..., ехрrn — необязательные подвыражения — опции. Имеется также инертная форма данной функции — Expand (ехрr). Кроме того, возможно применение операторной конструкции frontend(expans,[expr]).
    Функция expand раскладывает рациональные выражения на простые дроби, полиномы на полиномиальные разложения, она способна раскрыть многие математические функции, такие как sin, cos, tan, sinh, cosh, tanh, det, erf, exp, factorial, GAMMA, In, max, min, Psi, binomial, sum, product, int, limit, bernoulli, euler, abs, signum, pochhammer, polylog, BesselJ, BesselY, Bessell, BesselK, AngerJ, Beta, Hankel, Kelvin, Struve, WeberE и функция piecewise. С помощью дополнительных аргументов expr1, ехрr2, ..., exprh можно задать расширение отдельных фрагментов в ехрr.
    Примеры применения функции expand приведены ниже:

    Разложение выражений (факторизация)

    Разложение выражений (факторизация)

    Для алгебраических выражений функция факторизации записывается в вычисляемой и не вычисляемой (инертной) формах:
    factor(a) Factor(a)
    factpr(a.K) Factor(а.К)
    Здесь а — полином с несколькими переменными, К — необязательное алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции вычисления evala или evalgf.
    Главная цель факторизации это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ниже представлены примеры применения функции factor:

    Обратите внимание на то, что

    Шаг 1

    Обратите внимание на то, что Примечание 1
    Примечание 1


    Обратите внимание на то, что в предшествующих версиях Maple загрузка библиотеч ной функции cost выполнялась иначе — командой readlib(cost). Это обстоятельство может служить причиной неверной работы документов, созданных в старых версиях Maple, в среде описываемой версии Maple 7.

    Вы можете проверить, что функция

    Шаг 1

    Вы можете проверить, что функция ПРИМЕЧАНИЕ
    Вы можете проверить, что функция sort в Maple 7 способна сортировать буквы и даже слова русского языка.
    Если функция сортировки меняет порядок расположения членов в выражении (или порядок расположения выражений), то другая функция — select — служит для выделения требуемого выражения:
    select(f, e)
    select(f, е. Ы. ..., bn)
    Как бы обратной ей по действию служит функция remove, устраняющая заданные выражения:
    remove(f, e)
    remove(f, е, b1.... bn)
    В этих функциях f — процедура, возвращающая логическое значение, е — список, множество, сумма, произведение или функция, b1, ..., bn — необязательные дополнительные аргументы.
    Далее даны примеры применения этих функций.

    Шаг 1

    Шаг 1

    Шаг 1



    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1

    Шаг 1



    Шаг 1

    Шаг 1

    Шаг 1



    Шаг 1

    Шаг 1

    Шаг 1



    в аналитическом виде здесь используется

    Шаг 1

    в аналитическом виде здесь используется Для получения итерационной формулы в аналитическом виде здесь используется функция unapply. Теперь, если задать решаемое уравнение, то можно получить искомое аналитическое выражение:

    Прежние версии системы Maple не

    Шаг 1

    Прежние версии системы Maple не Прежние версии системы Maple не брали этот интеграл, поскольку он не имеет аналитического представления через обычные функции. Maple 7 блестяще вычисляет этот "крепкий орешек", но полученное выражение довольно сложно.
    Из математики известно, что такой интеграл может быть представлен в следующем виде:

    Вначале подготовим процедуру IntExpMonomialR, реализующую

    Шаг 1

    Вначале подготовим процедуру IntExpMonomialR, реализующую где р(х) — выражение, представляющее полином.
    Приведенный ниже пример подготовлен в реализации Maple 7 [38]. Вначале подготовим процедуру IntExpMonomialR, реализующую вычисление уже рассмотренного ранее интеграла, но рекурсивным способом:

    и более сложные примеры на

    Шаг 1

    и более сложные примеры на Рекомендуется просмотреть и более сложные примеры на применение этих функций в справке.

    Шаг 1

    Шаг 1

    Шаг 1



    Эти примеры далеко не исчерпывают

    Шаг 1

    Эти примеры далеко не исчерпывают Эти примеры далеко не исчерпывают возможностей функции combine в преобразовании выражений. Рекомендуется обзорно просмотреть примеры применения функции combine с разными параметрами, приведенные в справочной системе Maple 7.

    Шаг 1

    Шаг 1

    Шаг 1

    Из этих примеров нетрудно заметить,

    Шаг 1

    Из этих примеров нетрудно заметить, Из этих примеров нетрудно заметить, что если второй параметр функции mар — список, то функция (первый параметр) прикладывается к каждому элементу списка, так что возвращается также список. Из последнего примера видно, что если за вторым параметром идет перечисление аргументов, то они включаются в список параметров функции.
    Функция mар2 отличается иным расположением параметров. Ее действие наглядно поясняют следующие примеры:

    Шаг 1

    Шаг 1

    Шаг 1



    Шаг 1

    Шаг 1

    Шаг 1



    Maple имеет также оператор селекции

    Шаг 2

    Maple имеет также оператор селекции Maple имеет также оператор селекции А[ехрr]. Его действие поясняют следующие примеры:

    Действие функции simplify существенно зависит

    Шаг 2

    Действие функции simplify существенно зависит Действие функции simplify существенно зависит от областей определения переменных. В следующем примере упрощение выражения не произошло, поскольку результат этой операции неоднозначен:

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    можно получить результаты вычислений для

    Шаг 2

    можно получить результаты вычислений для Далее, задав начальное приближение для х в виде х = х0, можно получить результаты вычислений для ряда итераций:

    Используя эту формулу, мы можем

    Шаг 2

    Используя эту формулу, мы можем Используя эту формулу, мы можем создать простую процедуру для численного и аналитического вычисления данного интеграла:

    Теперь составим процедуру для вычисления

    Шаг 2

    Теперь составим процедуру для вычисления Теперь составим процедуру для вычисления по частям нашего интеграла:

    их список читатель может пополнить

    Шаг 2

    их список читатель может пополнить Из этих примеров ( их список читатель может пополнить самостоятельно) следует, что функция преобразования convert является одной из самых мощных функций Maple. С ее помощью можно получить множество различных форм одного и того же выражения.

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Шаг 2

    Следует обратить внимание на то,

    Шаг 2

    Следует обратить внимание на то, Следует обратить внимание на то, что результат подстановок, полученный с помощью функции subop, порой может не совпадать с ожидаемым. Поэтому полезно контролировать получаемые в результате подстановок выражения на их корректность.
    Одним из важных применений подстановок является проверка правильности решений уравнений и систем уравнений. Ниже дан пример такой проверки:

    Шаг 3

    Шаг 3

    Шаг 3



    определив переменные как реальные или

    Шаг 3

    определив переменные как реальные или Однако, определив переменные как реальные или положительные, можно легко добиться желаемого упрощения:

    Нетрудно заметить, что, испытав скачок

    Шаг 3

    Нетрудно заметить, что, испытав скачок Нетрудно заметить, что, испытав скачок в начале решения, значениях довольно быстро сходятся к конечному результату, дающему корень заданной функции. Последние три итерации дают одно и то же значение х. Заметим, что этот метод дает только одно решение, даже если корней несколько. Вычислить другие корни в таком случае можно, изменив начальное условие.
    Можно попробовать с помощью полученной процедуры получить решение и для другой функции:

    в аналитическом виде довольно прост

    Шаг 3

    в аналитическом виде довольно прост Результат в аналитическом виде довольно прост для данного интеграла с конкретным значением т. Более того, мы получили несколько иной результат и дляп в общем случае. Но точен ли он? Для ответа на этот вопрос продифференцируем полученное выражение:

    В этой процедуре имеется обращение

    Шаг 3

    В этой процедуре имеется обращение В этой процедуре имеется обращение к ранее составленной процедуре IntExpMonomialR. Обратите внимание на то, что в процедуре введено предупреждение об определенных проблемах, связанных с использованием функции degree (сообщение начинается с символов ###). Тем не менее процедура работает, в чем убеждают по крайней мере следующие примеры:

    Здесь задана система из трех

    Шаг 3

    Здесь задана система из трех Здесь задана система из трех нелинейных уравнений, которая затем решена функцией solve. В конце примера с помощью функции подстановки выполнена проверка правильности решения. Оно верно, поскольку у всех уравнений значение левой части совпадает со значением правой части.

    Шаг 4

    Шаг 4

    Шаг 4

    Читателю настоятельно рекомендуется просмотреть все

    Шаг 4

    Читателю настоятельно рекомендуется просмотреть все Читателю настоятельно рекомендуется просмотреть все разделы справочной системы, относящиеся к примерам применения функции simplify (в том числе с другими функциями символьных преобразований), поскольку их число очень велико и эти примеры наглядно демонстрируют необходимость правильного применения разнообразных параметров для придания упрощениям нужного характера. Если функция simplify не способна выполнить упрощение выражения ехрr, то она просто его повторяет. Это сигнал к применению опций.

    и вполне естественно) уже другой

    Шаг 4

    и вполне естественно) уже другой Здесь итерационная формула имеет ( и вполне естественно) уже другой вид, но сходимость к корню также обеспечивается за несколько итераций. ;
    Возможна и иная форма задания итерационной процедуры с применением оператора дифференцирования D и заданием исходной функции также в виде процедуры:

    Результат дифференцирования выглядит куда сложнее,

    Шаг 4

    Результат дифференцирования выглядит куда сложнее, Результат дифференцирования выглядит куда сложнее, чем вычисленный интеграл. Однако с помощью функции simplify он упрощается к подынтегральной функции:

    В заключение остается отметить, что

    Шаг 4

    В заключение остается отметить, что В заключение остается отметить, что данный пример в Maple V R4 дает неточный результат, хотя никаких сообщений об ошибках не выводится.

    в программных процедурах можно использовать

    Шаг 5

    в программных процедурах можно использовать Вообще говоря, в программных процедурах можно использовать любые операторы и функции, присущие Maple-языку, в том числе и те, которые реализуют символьные вычисления. Это открывает широкий простор для разработки новых процедур и функций, обеспечивающих выполнение символьных операций.

    о том, что задача вычисления

    Шаг 5

    о том, что задача вычисления Это говорит о том, что задача вычисления заданного интеграла в аналитической форме действительно решена. А что касается громоздкости результатов, так ведь системы, подобные Maple 7, для того и созданы, чтобы облегчить нам работу с громоздкими вычислениями — в том числе аналитическими.

    Упрощение выражений

    Упрощение выражений

    Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений. "Все гениальное просто", — любим мы повторять, хотя это далеко не всегда так. Тем не менее стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель. В системе Maple 7 функция упрощения используется в следующем виде:
  • simplify(expr) — возвращает упрощенное выражение ехрr или повторяет его, если упрощение в рамках правил Maple 7 невозможно;
  • simplify(expr, nl, n2, ...) —возвращает упрощенное выражение ехрr с учетом параметров с именами nl, n2, ... (в том числе заданных списком или множеством);
  • simplify(ехрг,assume=prop) — возвращает упрощенное выражение ехpr с учетом всех условий.
  • Функция simplify — многоцелевая. Она обеспечивает упрощение математических выражений, выполняя следующие типовые действия (для простоты обозначим их как ->):
  • комбинируя цифровые подвыражения (3*х*5->15*х, 10*х/5->2*х);
  • приводя подобные множители в произведениях (х^3*а*х->а*х^4);
  • приводя подобные члены в суммах (5*х+2+3*х->8*х+2);
  • используя тождества, содержащие ноль (а+0->а, х-0->х);
  • используя тождества, содержащие единицу (1*х->х);
  • распределяя целочисленные показатели степени в произведениях ((3*x*y^3)^2 ->9*х^2*у^6);
  • сокращая ехрr на наибольший общий полиномиальный или иной множитель;
  • понижая степень полиномов там, где это возможно;
  • используя преобразования, способные упростить выражения.
  • Несмотря на свою гибкость, функция simplify не всегда способна выполнить возможные упрощения. В этом случае ей надо подсказать, в какой области ищутся упрощения и где можно найти соответствующие упрощающие преобразования.
    С этой целью в функцию simplify можно включать дополнительные параметры.
    В качестве параметров могут задаваться имена специальных математических функций и указания на область действия упрощений: Bessell, BesselJ, BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, dilog, exp, In, sqrt, polylog, pg, pochhammer, trig (для всех тригонометрических функций), hypergeom, radical, power и atsign (для операторов). Полезен также параметр symbolic, явно указывающий на проведение символьных преобразований.
    Возможно также применение функции simplify в форме simplify[], где — одно из следующих указаний: atsign, GAMMA, hypergeom, power, radical, RootOf, , sqrt, trig. Ниже даны примеры применения функции Simplifу:

    Вложенные процедуры и интегрирование по частям

    Вложенные процедуры и интегрирование по частям

    Теперь мы подошли к важному моменту, о котором читатель наверняка уже давно догадался — в составляемых пользователем процедурах можно использовать ранее составленные им (или кем-то еще) другие процедуры! Таким образом, Maple-язык позволяет реализовать процедуры, вложенные друг в друга. Для иллюстрации применения вложенных процедур рассмотрим операцию интегрирования по частям. Пусть нам надо вычислить интеграл:

    Вычисление интеграла по известной формуле

    Вычисление интеграла по известной формуле

    Рассмотрим следующий пример:

    Основные возможности двумерной графики

    D графики параметрически заданных поверхностей

    3d- графики параметрически заданных поверхностей

    На Рисунок 11.19 показано построение поверхности при полном ее параметрическом задании. В этом случае поверхность задается тремя формулами, содержащимися в списке.

    Быстрое построение графиков

    Быстрое построение графиков





    Быстрое построение трехмерных графиков smartplot3d

    Быстрое построение трехмерных графиков smartplot3d

    Быстрое (не в смысле ускорения самого построения, а лишь в смысле более быстрого задания построения графиков) построение трехмерных графиков обеспечивает функция smartplot3d Для этой функции задан диапазон изменения обоих аргументов -5..5. Рисунок 11.27 поясняет применение функции smartplot3d.

    Двумерная быстрая графика — smartplot

    Двумерная быстрая графика — smartplot

    В последние реализации системы Maple (5, 6 и 7) введены новые функции быстрого построения графиков. Функция smartplot(f) предназначена для создания двумерных графиков. Параметр f может задаваться в виде одиночного выражения или набора выражений, разделяемых запятыми. Задание управляющих парамтеров в этих графических функциях не предусмотрено; таким образом, их можно считать первичными, или черновыми. Для функции построения двумерного графика по умолчанию задан диапазон изменения аргумента -10.. 10. Рисунок 11.26 иллюстрирует применение функции smartplot для построения трех (верхний пример) и двух (нижний пример) графиков функций на одном рисунке.

    Двумерные и трехмерные графические структуры

    Двумерные и трехмерные графические структуры





    Графические структуры двумерной графики

    Графические структуры двумерной графики

    Графическая структура двумерной графики задается в виде:
    PLOT(s1, s2, s3....,0);
    где si, s2, s3 ... — графические объекты (или элементарные структуры — примитивы), о — общие для структуры параметры.
    Основными объектами являются:
  • POINTS([xl,yl],[x2,y2],...[xn,yn]) — построение точек, заданных их координатами;
  • CURVES([[xll,yll],...[xln,yln]], [[х21,у21],...[х2п,у2п]],... [[xml,yml]....[xmn.ymn]]) -построение кривых по точкам;
  • POLYGONS([[xll,yll]....[xln,yln]], [x2l.y2ll]....[x21n,y21n]].... [[xml,yml]....[xmn.ynm]]) -построение замкнутой области-полигона (многоугольника, так как последняя точка должна совпадать с первой);
  • ТЕХТ([х, у], 'string', horizontal .vertical) — вывод текстовой надписи 'string4, позиционированной в точке с координатами [х.у], с горизонтальной или вертикальной ориентацией. Параметр horizontal может иметь значение ALIGNLEFT или ALIGNRIGHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично параметр vertical может иметь значение ALIGNABOVE или ALIGNBELOW, указывающее в каком направлении (вверх или вниз) идет надпись.
  • При задании графических объектов (структур) si, s2, s3 и т. д. можно использовать описанные выше параметры и параметры, например, для задания стиля построения - STYLE (POINT, LINE/PATCH, PATCHNOGRID); толщины линий, - THICKNESS (кроме координатных осей); символа, которым строятся точки кривых — SYMBOL (BOX, CROSS, CIRCLE, POINT, DIAMOND и DEFAULT); стиля линий - LINESTYLE; цвета -COLOR (например, COLOR(HUE.O) для закраски непрерывной области), типа шрифта — FONT; вывода титульной надписи — TITLE (string); имени объекта — NAME (string); стиля координатных осей - AXESSTYLE (BOX, FRAME, NORMAL, NONE или DEFAULT) и т. д.
    Следует отметить, что параметры в графических структурах задаются несколько иначе — с помощью круглых скобок. Например, для задания шрифта TIMES ROMAN с размером символов 16 пунктов надо записать FONT(TIMES,ROMAN, 16), для задания стиля координатных осей в виде прямоугольника — AXESSTYLE (BOX) и т. д.
    На Рисунок 11.31 показан пример графических построений при использовании основных структур двумерной графики.
    Как видно из этого примера, графическая двумерная структура позволяет задавать практически любые двумерные графики и текстовые надписи в пределах одного рисунка.

    Графические структуры трехмерной графики

    Графические структуры трехмерной графики

    Графические структуры трехмерной графики строятся функцией PLOT3D:
    PLOT3D(s1,s2,s3.....o)
    В качестве элементарных графических структур можно использовать уже описанные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с добавлением в списки параметров третьей координаты. Пример такого построения дан на Рисунок 11.32.
    Кроме того, могут использоваться некоторые специальные трехмерные структуры. Одна из них — структура GRID:
  • GRID(a. .b,c..d.listlist) — задание поверхности над участком координатной плоскости, ограниченной отрезками[а, b] и[с, d], по данным, заданным переменной-списком listlist:=[[z11,...z1n],[z21,...z2n],...[z1m...zmn]] с размерностью n?m. Заметим, что эта переменная задает координату z для равноотстоящих точек поверхности.
  • На Рисунок 11.33 показан пример создания структуры трехмерной графики на базе GRID. Изображение .представляет собой линии, соединяющие заданные точки.
    Еще один тип трехмерной графической структуры — это MESH:
  • MESH(listlist) — задание трехмерной поверхности по данным списочной переменной list! 1st, содержащей полные координаты всех точек поверхности (возможно задание последней при неравномерной сетке).


  • Графики функций построенные точками

    Графики функций, построенные точками

    Показанный на Рисунок 11.5 график полинома, построенный ромбиками, не означает, что полином представлен отдельными точками. В данном случае просто выбран стиль линии в виде точек. Однако часто возникает необходимость построения графиков функций, которые представлены просто совокупностями точек. Такая совокупность может быть создана искусственно, как на Рисунок 11.7, либо просто задаваться списком координат х и значений функции.
    В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(x). В этом нетрудно убедиться, заменив знак ":" после выражения, задающего Р, на знак ";". Далее по списку Р построен график точек в виде крестиков, которые отображают отдельные значения функции sin(x).
    На Рисунок 11.8 показано построение графиков функций по точкам при явном задании функции списком координат ее отдельных точек. В первом примере эти точки соединяются отрезками прямых, так что получается кусочно-линейный график. Видно также, что указание типа точек после указания стиля линии игнорируется (а жаль, было бы неплохо, чтобы наряду с кусочно-линейной линией графика строились и выделенные окружностями точки).

    Графики функций с ординатами заданными вектором

    Графики функций с ординатами, заданными вектором

    Часто возникает необходимость построения графика точек, ординаты которых являются элементами некоторого вектора. Обычно при этом предполагается равномерное расположение точек по горизонтальной оси. Пример построения такого графика дан на Рисунок 11.10.

    Графики функций с разрывами

    Графики функций с разрывами

    Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается, что значения функции в этом месте устремляются в бесконечность. Функция tan(x), к примеру, в точках разрывов устремляется к +? и -?. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple 7 не всегда в состоянии определить оптимальный диапазон по оси ординат, а график функции выглядит весьма непредставительно, если не сказать безобразно (Рисунок 11.3, первый пример).

    Графики функций в неограниченном диапазоне

    Графики функций в неограниченном диапазоне

    Изредка встречаются графики функций f(x), которые надо построить при изменении значениях от нуля до бесконечности или даже от минус бесконечности до плюс бесконечности. Бесконечность в таких случаях задается как особая константа infinity. В этом случае переменной х, устремляющейся в бесконечность, откладывается значение аrctan(x). Рисунок 11.2 (второй пример) иллюстрирует сказанное.

    Графики функций в полярной системе координат

    Графики функций в полярной системе координат

    Графики в полярной системе координат представляют собой линии, которые описывают конец радиус- вектора r(t) при изменении угла t в определенных пределах — от t до t . Построение таких графиков также производится функцией plot, которая для этого записывается в следующем виде:

    Графики функций заданных функциональными операторами

    Графики функций, заданных функциональными операторами

    Еще одна "экзотическая" возможность функции plot — построение графиков функций, заданных функциональными операторами. Она иллюстрируется Рисунок 11.12.
    Имена функций (без указания списка параметров в круглых скобках) тоже, по существу, являются функциональными операторами. Так что они также могут использоваться при построении графиков упрощенными способами.

    Графики функций заданных параметрически

    Графики функций, заданных параметрически

    В ряде случаев для задания функциональных зависимостей используются заданные параметрически уравнения, например х = f1(t) и у =f2(t) при изменении переменной t в некоторых пределах. Точки(х, у) наносятся на график в декартовой системе координат и соединяются отрезками прямых. Для этого используется функция plot в следующей форме:

    Графики функций заданных процедурами

    Графики функций, заданных процедурами

    Некоторые виды функций, например кусочные, удобно задавать процедурами. Построение графиков функций, заданных процедурами, не вызывает никаких трудностей и иллюстрируется Рисунок 11.11.

    Графики функций заданных своими именами

    Графики функций, заданных своими именами

    Способность Maple 7 к упрощению работы пользователя просто поразительна — жаль только, что многие возможности этого становятся ясными после основательного изучения программы, на что уходят, увы, не дни, а месяцы, а то и годы. Применительно к графикам одной из таких возможностей является построение графиков функций, заданных только их функциональными именами — даже без указания параметров в круглых скобках. Такую возможность наглядно демонстрирует Рисунок 11.9.

    Графики нескольких функций на одном рисунке

    Графики нескольких функций на одном рисунке

    Важное значение имеет возможность построения на одном рисунке графиков нескольких функций. В простейшем случае (Рисунок 11.4, первый пример) для построения таких графиков достаточно перечислить нужные функции и установить для них общие интервалы изменения.

    Графики одной функции

    Графики одной функции

    При построении графика одной функции она записывается в явном виде на месте шаблона f. Примеры построения графика одной функции представлены на Рисунок 11.1. Обратите внимание на то, что график функции sin(x)/x строится без характерного провала в точке х = 0, который наблюдается при построении графиков этой функции многими программами. Он связан с используемым в них правилом — функция задается равной нулю, если ее числитель равен нулю. Данная функция в этой точке дает устранимую неопределенность 0/0->1, что и учитывает графический процессор системы Maple 7.

    Масштабирование трехмерных фигур и изменение углов их обзора

    Масштабирование трехмерных фигур и изменение углов их обзора

    Полезно обратить внимание на параметр масштаба scalling=constrained, явно введенный в документ Рисунок 11.20. Его можно было бы и не вводить, поскольку этот параметр задается по умолчанию. Он выравнивает масштабы представления фигуры по осям координат, обычно используется по умолчанию и позволяет снизить до минимума геометрические искажения фигур — тор, например, при этом виден как круглая труба, свернутая в кольцо. У таких графиков есть специфический недостаток — они занимают малую часть окна вывода.

    Основная функция построения двумерных графиков plot

    Основная функция построения двумерных графиков plot

    В математике широко используются зависимости вида y(x) или у(х). Их графики строятся на плоскости в виде ряда точек y1(x1), обычно соединяемых отрезками прямых. Таким образом, используется кусочно-линейная интерполяция двумерных графиков. Если число точек графика достаточно велико (десятки или сотни), то приближенность построения не очень заметна.
    Для построения двумерных графиков служит функция plot. Она задается в виде:
    plot(f, h, v)
    plot(f, h, v, о)
    где f — визуализируемая функция (или функции), h — переменная с указанием области ее изменения, v — необязательная переменная с указанием области изменения, о — параметр или набор параметров, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т. д.).
    Самыми простыми формами задания этой функции являются следующие:
  • plot(f ,xrnin,xmax) — построение графика функции f, заданной только своим именем;
  • plot(f(x),x=xmin,xmax) — построение графика функции f(x),
  • Диапазон изменения независимой переменной х задается как xmin. xmax, где xmin и xmax — минимальное и максимальное значение х, .. (две точки) — составной символ, указывающий на изменение независимой переменной. Разумеется, имя х здесь дано условно — независимая переменная может иметь любое допустимое имя.
    Помимо построения самой кривой у(х) или f(x) необходимо задать ряд других свойств графиков, например вывод координатных осей, тип и цвет линий графика и др. Это достигается применением параметров графика — специальных указаний для Maple. Графики обычно (хотя и не всегда) строятся сразу в достаточно приемлемом виде. Это достигается тем, что многие параметры задаются по умолчанию и пользователь, по крайней мере начинающий, может о них ничего не знать. Однако язык общения и программирования Maple 7 позволяет задавать управляющие параметры и в явном виде.
    Для двумерного графика возможны следующие параметры:
  • adaptive — включение адаптивного алгоритма построения графиков (детали см. ниже);
  • axes — вывод различных типов координат (axes=NORMAL — обычные оси, выводятся по умолчанию, axes=BOXES — график заключается в рамку с осями-шкалами, axes=FRAME — оси в виде перекрещенных линий, axes=NONE — оси не выводятся);
  • axes font — задание шрифтов для подписи делений на координатных осях (см. также параметр font);
  • color — задает цвет кривых (см. далее);
  • coords — задание типа координатной системы (см. далее);
  • discont — задает построение непрерывного графика (значения true или false);
  • filled — при filled=true задает окраску цветом, заданным параметром color, для области, ограниченной построенной линией и горизонтальной координатной осью х;
  • font — задание шрифта в виде [семейство, стиль, размер];
  • labels — задание надписей по координатным осям в виде [X, Y], где X и Y — надписи по осям х и у графика;
  • label directions — задает направление надписей по осям [X, Y], где X и Y может иметь строковые значения HORISONTAL (горизонтально) и VERTICAL (вертикально);
  • label font — задает тип шрифта подписей (см. font);
  • legend — задает вывод легенды (обозначения кривых);
  • linestyle — задание стиля линий (1 — сплошная, 2 — точками, 3 — пунктиром и 4 — штрихпунктиром);
  • numpoints — задает минимальное количество точек на графике (по умолчанию numpoints=49);
  • resolutions — задает горизонтальное разрешение устройства вывода (по умолчанию resolutions=200, параметр используется при отключенном адаптивном методе построения графиков);
  • sample — задает список параметров для предварительного представления кривых;
  • scaling — задает масштаб графика: CONSTRAINED (сжатый) или UNCONSTRAINED (несжатый — по умолчанию);
  • size.— задает размер шрифта в пунктах;
  • style — задает стиль построения графика (POINT — точечный, LINE — линиями);
  • symbol — задает вид символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест, CIRCLE — окружность, POINT — точка, DIAMOND — ромб);
  • symbol size — установка размеров символов для точек графика (в пунктах, по умолчанию 10);
  • title — задает построение заголовка графика (title="string", где string — строка);
  • titlefont — определяет шрифт для заголовка (см. font);
  • thickness — определяет толщину линий графиков (О, 1, 2, 3, значение по умолчанию — 0);
  • view=[A, В] — определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = [xmin. .xmax], B=[ymin. .ymax] (по умолчанию отображается вся кривая);
  • xtickmarks — задает минимальное число отметок по оси x,
  • ytickmarks — задает минимальное число отметок по оси у.
  • В основном задание параметров особых трудностей не вызывает, за исключением задания титульной надписи с выбором шрифтов по умолчанию — в этом случае не всегда поддерживается вывод символов кириллицы (русского языка). Подбором подходящего шрифта эту проблему удается решить. Модификация графиков с помощью управляющих параметров подробно рассматривается ниже.
    Специальный параметр adaptive задает работу специального адаптивного алгоритма для построения графиков наилучшего вида. При этом Maple автоматически учитывает кривизну изменения графика и увеличивает число отрезков прямых в тех частях графиков, где их ход заметно отличается от интерполирующей прямой. При задании adaptive=false адаптивный алгоритм построения графиков отключается, а при adaptive=true включается (значение по умолчанию).

    Основные типы двумерных графиков

    Основные типы двумерных графиков





    Основные возможности двумерной графики

    Основные возможности двумерной графики

    Maple 7 реализует все мыслимые (и даже "немыслимые") варианты математических графиков. Строятся как графики простых функций в декартовой и полярной системах координат, так и графики, показывающие реалистические образы сложных, пересекающихся в пространстве фигур с их функциональной окраской. Возможны наглядные графические иллюстрации решений самых разнообразных уравнений, включая системы дифференциальных уравнений.
    В само ядро Maple 7 встроено ограниченное число функций построения графиков. Это прежде всего функция для построения двумерных графиков plot и функция для построения трехмерных графиков plotSd. Они позволяют строить графики наиболее распространенных типов. Для построения специальных графиков (например, векторных полей градиентов, решения дифференциальных уравнений, построения фазовых портретов и т. д.) в пакеты системы Maple 7 включено большое число различных графических функций. Для их вызова необходимы соответствующие указания.
    Вообще говоря, средства для построения графиков в большинстве языков программирования принято считать графическими процедурами, или операторами. Однако мы сохраним за ними наименование функций, в силу двух принципиально важных свойств:
    О графические средства Maple V возвращают некоторые графические объекты, которые размещаются в окне документа — в строке вывода или в отдельном графическом объекте;
    О эти объекты можно использовать в качестве значений переменных, то есть переменным можно присваивать значения графических объектов и выполнять над ними соответствующие операции (например, с помощью функции show выводить на экран несколько графиков).
    Графические функции заданы таким образом, что обеспечивают построение типовых графиков без какой-либо особой подготовки. Для этого нужно лишь указать функцию, график которой строится, и пределы изменения независимых переменных. Однако с помощью дополнительных необязательных параметров можно существенно изменить вид графиков — например, настроить стиль и цвет линий, вывести титульную надпись, изменить вид координатных осей и т. д.

    Особенности применения функции plot3d

    Особенности применения функции plot3d

    Трехмерными называют графики, отображающие функции двух переменных z(х,у). Каждая точка zi таких графиков является высотой (аппликатой) точки, лежащей в плоскости XY и представленной координатами (х,у). Поскольку экран монитора компьютера в первом приближении является плоским, то на деле трехмерные графики представляют собой специальные проекции объемных объектов.

    Параметры функции plot3d

    Параметры функции plot3d

    С помощью параметров р можно в широких пределах управлять видом трехмерных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изменяя вид координатных осей и т. д. Следующие параметры функции p1ot3d задаются аналогично их заданию для функции plot:
    axesfont font color coords font ,
    labelfont linestyle numpoints scaling style
    symbol t hickness title titlefont
    Однако функция plot3d имеет ряд дополнительных специфических параметров:
  • ambientl light=[r,g,b] — задает интенсивность красного (r), зеленого (g) и синего (b) цветов подстветки в относительных единицах (от 0 до 1);
  • axes=f — задает вид координатных осей (BOXED, NORMAL, FRAME и NONE, по умолчанию NONE);
  • grid=[m,n] — задает число линий каркаса поверхности;
  • gridstyle=x — задает стиль линий каркаса х ('rectangular' или 'triangular');
  • 1abels=[x,y,z] — задает надписи по осям (х, у и z — строки, по умолчанию пустые);
  • 1ight=[phi ,theta,r,g,b] — задает углы, под которыми расположен источник освещения поверхности и интенсивности составляющих цвета (г, g и Ь);
  • lightmodel=x — задает схему освещения (соответственно 'none', 'lightl', 'light2', 'lights1 и 'light4');
  • orientat1on=[theta,phi]— задает углы ориентации поверхности (по умолчанию 45°);
  • projections — задает перспективу при обзоре поверхности (г может быть числом 0 или 1, задающим включение или выключение перспективы, а также одной из строк 'FISHEYE', 'NORMAL' или 'ORTHOGONAL' (это соответствует численным значениям г, равным 0, 0,5 или 1, причем по умолчанию задано projection=ORTHOGONAL));
  • shading=s — задает направления, по которым меняется цвет функциональной окраски (значения s могут быть XYZ, XY, Z, ZGREYSCALE, ZHUE, NONE);
  • tickmarks=[1 ,n,m] — задает характер маркировки по осямх, у и z (числа 1, n и m имеют значения не менее 1);
  • view=zmin. .zmax или view=[xmin. .xmax, ymin. .ymax, zmin..zmax] — задает минимальные и максимальные координаты поверхности для ее видимых участков.


  • Понятие о графических структурах

    Понятие о графических структурах

    Функции PLOT и PLOT3D (с именами, набранными большими буквами) позволяют создавать графические структуры, содержащие ряд графических объектов si, s2, s3 и т. д. Каждый объект может представлять собой точку или фигуру, полигон, надпись и т. д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PLOT3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после открытия файлов) представлять в виде графиков. Особые свойства этих функций подчеркиваются их записью прописными буквами.

    Построение фигур в различных системах координат

    Построение фигур в различных системах координат

    Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рисунок 11.16 показывает пример построения нелинейного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cylindrical.

    Построение поверхностей с разными стилями

    Построение поверхностей с разными стилями

    На Рисунок 11.15 показано два примера простейших построений графиков трехмерной поверхности. По умолчанию в Maple 7 строится поверхность с функциональной окраской и стилем style=patch (верхний рисунок). Функциональная окраска делает рисунки более информативными, но, увы, на рисунках в книге она превращается в окраску оттенками серого цвета.
    Параметр style=hidden строит каркасную поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение во втором примере задано линиями/черного цвета с помощью параметра color=black (см. нижний рисунок на Рисунок (11.15).
    Помимо значения patch для построения трехмерных поверхностей можно задавать ряд других стилей: point — точками, contour — контурными линиями, line — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями равного уровня.

    Построение поверхностей

    Построение поверхностей





    Построение ряда трехмерных фигур на одном графике

    Построение ряда трехмерных фигур на одном графике

    Функция plot3d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. Для этого достаточно вместо описания одной поверхности задать список описаний ряда поверхностей. При этом функция plot3d обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части поверхностей. Это создает изображения, выглядящие вполне естественно. Пример такого построения для двух функций показан на Рисунок 11.30.

    Построение трехмерных графиков

    Построение трехмерных графиков





    Формирование списка отдельных точек функции

    Шаг 1

    Формирование списка отдельных точек функции

    Рисунок 11.7. Формирование списка отдельных точек функции и их построение на графике

    Построение графиков четырех функций, заданных

    Шаг 1

    Построение графиков четырех функций, заданных

    Рисунок 11.9. Построение графиков четырех функций, заданных только их именами
    Этот пример показывает, что возможно построение графиков функций даже без указания в команде plot диапазонов. При этом диапазон по горизонтальной оси устанавливается равным по умолчанию -10.. 10, а по вертикальной оси выбирается автоматически в соответствии с экстремальными значениями функций в указанном диапазоне изменения независимой переменной (условно х).

    с ординатами, заданными элементами вектора

    Шаг 1

    с ординатами, заданными элементами вектора

    Рисунок 11.10. Построение графика точек с ординатами, заданными элементами вектора
    Из этого примера нетрудно заметить, что данная задача решается составлением списка парных значений координат исходных точек — к значениям ординат точек, взятых из вектора, добавляются значения абсцисс. Они задаются чисто условно, поскольку никакой информации об абсциссах точек в исходном векторе нет, так что фактически строится график зависимости ординат точек от их порядкового номера n.

    Шаг 1

    Шаг 1

    Шаг 1

    Построение графиков функции, заданной функциональными

    Шаг 1

    Построение графиков функции, заданной функциональными

    Рисунок 11.12. Построение графиков функции, заданной функциональными операторами
    plot([fl(t),f2(t),t-tmin..tmax].h,v.p)
    Если функции f1(£) и f2(0 содержат периодические функции (например, тригонометрические), то для получения замкнутых фигур диапазон изменения переменной t обычно задается равным 0. .2*Pi или -Pi..Pi. К примеру, если задать в качестве функций f1(t) и f2(t) функции sin(t) и cos(t), то будет получен график окружности. Рисунок 11.13 показывает другие, чуть менее тривиальные примеры построения графиков такого рода.
    Задание диапазонов для изменений h и v, а также параметров р не обязательно. Но, как и ранее, они позволяют получить вид графика, удовлетворяющий всем требованиям пользователя.

    Шаг 1

    Шаг 1

    Шаг 1 а

    Шаг 1

    Шаг 1

    Шаг 1 а

    Шаг 1

    Шаг 1

    Шаг 1 а

    При построении этой фигуры также

    Шаг 1

    При построении этой фигуры также

    Рисунок 11.16. Нелинейная цилиндрическая поверхность
    При построении этой фигуры также использована цветная функциональная окраска. Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи (кстати, сделанной на русском языке).
    Приведем еще один пример построения трехмерной поверхности — на этот раз . в сферической системе координат (Рисунок 11.17). Здесь функция задана вообще элементарно просто — в виде числа 1. Но, поскольку выбрана сферическая система координат, в результате строится поверхность шара единичного радиуса.
    О том, насколько необычным может быть график той или иной функции в различных системах координат, свидетельствует Рисунок 11.18. На нем показан график параметрически заданной функции от одной координаты t = sin(t3), построенный в сферической системе координат.
    Кстати, Рисунок 11.18 иллюстрирует возможность одновременного наблюдения нескольких окон. В одном окне задано построение графика, а в другом построен сам график. При построении графика в отдельном окне появляется панель форматирования графика. С помощью ее довольно наглядных кнопок можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).

    График трехмерной поверхности при полном

    Шаг 1

    График трехмерной поверхности при полном

    Рисунок 11.19. График трехмерной поверхности при полном параметрическом ее задании
    В данном случае функциональная окраска задана из меню, поэтому в состав функции соответствующий параметр не введен. Обратите внимание на технику удаления частей фигуры путем задания соответствующего диапазона изменения параметров t и n.
    Следующий пример показывает построение простого тороида — цилиндра, свернутого в кольцо (Рисунок 11.20). Здесь также использован прием удаления части фигуры, что делает ее представление более наглядным и красочным. Кроме того, введены параметры, задающие функциональную окраску.
    Тор на Рисунок 11.20 выглядит, как произведение искусства. Он дает полное и наглядное представление об этой фигуре.

    unconstrained означает отказ от равного

    Шаг 1

    unconstrained означает отказ от равного

    Рисунок 11.20. Тор с функциональной окраской поверхности
    Задание параметра scaling= unconstrained означает отказ от равного масштаба по осям. График при этом увеличивается в размерах, но становятся заметны его искажения по осям координат. В итоге тор превращается в толстую сплющенную трубу с эллиптическим сечением (Рисунок 11.21).
    Весьма важным является учет углов, под которыми наблюдается трехмерная поверхность или объект. К примеру, построение Рисунок 11.21 неудачно в том плане, что оно не показывает наличия у тора дырки. В общем, как в поговорке: "кому бублик, а кому дырка от бублика" — ведь бублик и есть материально реализованный тор. Простейший и очень удобный способ изменить угол обзора заключается во вращении фигуры на рисунке мышью при нажатой левой кнопке. При этом можно повернуть фигуру так, что ее геометрические особенности будут видны (Рисунок 11.22).
    В Maple есть способ явно задать углы обзора с помощью параметра orientation=[theta, phi], где theta и phi — углы, через которые задаются параметрические уравнения трехмерной фигуры или поверхности. Рисунок 11.23 дает пример такого задания фигуры, которую можно назвать "квадратным" тором. Обратите внимание, что значения заданных углов обзора повторяются в полях углов на контекстной панели инструментов. Разумеется, последние будут меняться, если начать вращать фигуру на рисунке мышью.

    в виде шестиконечной звезды

    Шаг 1

    в виде шестиконечной звезды

    Рисунок 11.24. Тор с сечением в виде шестиконечной звезды

    Шаг 1

    Шаг 1

    Шаг 1 а

    Шаг 1

    Шаг 1

    Шаг 1 а

    В данном случае строится лента

    Шаг 1

    В данном случае строится лента

    Рисунок 11.28. Пример задания и вывода трехмерного графика — графического объекта
    В данном случае строится лента Мебиуса, свойства которой (например, плавный переход с одной стороны ленты на другую) уже много веков будоражат воображение людей.
    Поскольку можно говорить, что вызов переменной возвращает графический объект, то это дает повод считать plot и plot3d графическими функциями.

    и применения процедуры трехмерной графики

    Шаг 1

    и применения процедуры трехмерной графики

    Рисунок 11.29. Пример создания и применения процедуры трехмерной графики
    Этот пример показывает еще один способ задания и построения кольца Мебиуса. Практически любые графические построения можно оформлять в виде процедур и использовать такие процедуры в своих документах.

    Пример построения двух трехмерных фигур,

    Шаг 1

    Пример построения двух трехмерных фигур,

    Рисунок 11.30. Пример построения двух трехмерных фигур, пересекающихся в пространстве

    Пример использования двумерных структур

    Шаг 1

    Пример использования двумерных структур

    Рисунок 11.31. Пример использования двумерных структур

    Пример создания структуры трехмерной графики

    Шаг 1

    Пример создания структуры трехмерной графики

    Рисунок 11.32. Пример создания структуры трехмерной графики

    Шаг 1

    Шаг 1

    Шаг 1 a

    Шаг 1

    Шаг 1

    Шаг 1 а

    Шаг 1

    Шаг 1

    Шаг 1 а

    Графики трех функций на одном

    Шаг 1

    Графики трех функций на одном

    Рисунок 11.4. Графики трех функций на одном рисунке
    Обычно графики разных функций автоматически строятся разными цветами. Но это не всегда удовлетворяет пользователя — например, при распечатке графиков монохромным принтером некоторые кривые могут выглядеть слишком блеклыми или даже не пропечататься вообще. Используя списки параметров color (цвет линий) и style (стиль линий), можно добиться выразительного выделения кривых — это показывает второй пример на Рисунок 11.4 для случая, когда линии графиков выделяются стилем. Однако если кривые задаются разным цветом, то при черно-белой печати они могут перестать различаться.
    На Рисунок 11.5 показан еще один пример такого рода. Здесь построен график функции sin(x)/x и график ее полиномиальной аппроксимации. Она выполняется настолько просто, что соответствующие функции записаны прямо в списке параметров функции plot.

    Шаг 2

    Шаг 2

    Шаг 2 а

    Построение графика функций, заданных процедурами

    Шаг 2

    Построение графика функций, заданных процедурами

    Рисунок 11.11. Построение графика функций, заданных процедурами
    Здесь, пожалуй, полезно обратить внимание на то, что в функции plot указывается имя процедуры без списка ее параметров.

    Здесь существенным моментом является задание

    Шаг 2

    Здесь существенным моментом является задание б

    Рисунок 11.13. Построение функций, заданных параметрически
    plot([r(t),theta(t),t=tmin..tnrax],h,v,p,coords-polar)
    Здесь существенным моментом является задание полярной системы координат параметром coords=polar. Рисунок 11.14 дает примеры построения графиков функций в полярной системе координат.
    Графики параметрических функций и функций в полярной системе координат отличаются огромным разнообразием. Снежинки и узоры мороза на стеклах, некоторые виды кристаллов и многие иные физические объекты подчиняются математическим закономерностям, положенным в основу построения таких графиков.

    Для построения графиков трехмерных поверхностей

    Шаг 2

    Для построения графиков трехмерных поверхностей б

    Рисунок 11.14. Построение графиков функций в полярной системе координат
    Для построения графиков трехмерных поверхностей Maple имеет встроенную в ядро функцию pi ot3d. Она может использоваться в следующих форматах:
    plot3d(exprl. x=a..b. y=c..d,p)
    plot3d(f, a..b. c..d.p)
    plot3d([exprf.exprg.exprh]. s=a..b, t=c..d.p)
    plot3d([f.g.h]. a..b, c..d,p)
    В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметрической формой задания поверхности. В приведенных формах записи f, g и h — функции; exprl — выражение, отражающее зависимость от -х и у; exprf, exprg и exprh — выражения, задающие поверхность параметрически; s, t, а и b — числовые константы действительного типа; end — числовые константы или выражения действительного типа; х, у, s и t — имена независимых переменных; р — управляющие параметры.

    Примеры простейшего построения трехмерных поверхностей

    Шаг 2

    Примеры простейшего построения трехмерных поверхностей б

    Рисунок 11.15. Примеры простейшего построения трехмерных поверхностей
    Цвет трехмерного графика может задаваться (как и для двумерного) параметром соlог=с, где с — цвет (оттенки цвета перечислялись ранее). Возможно еще два алгоритма задания цвета:

  • HUE — алгоритм с заданием цвета в виде color=f(x,y);
  • RGB — алгоритм с заданием цвета в виде color=[exprr,exprg,exprb], где выражения ехрrr, ехрrg и exprb задают относительную значимость (от 0 до 1) основных цветов (красного — ехрrr, зеленого — ехрrg и синего — exprb).
  • Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реалистический вид.

    в сферической системе координат

    Шаг 2

    в сферической системе координат

    Рисунок 11.17. Построение шарообразной поверхности в сферической системе координат

    с применением значения параметра

    Шаг 2

    с применением значения параметра

    Рисунок 11.21. Тор, построенный с применением значения параметра seating-unconstrained

    в виде пятиконечной звезды

    Шаг 2

    в виде пятиконечной звезды

    Рисунок 11.25. Тор круглого сечения в виде пятиконечной звезды

    Обратите внимание на второй пример

    Шаг 2

    Обратите внимание на второй пример б

    Рисунок 11.26. Построение графиков с помощью функции smartplot
    Обратите внимание на второй пример применения функции smartplot. Здесь график выражения 5sin(y)/y построен относительно вертикальной оси. Поэтому он развернут на 90° относительно графика, построенного обычным образом.
    Примечание 1
    Примечание 1


    На графиках, построенных командой smartplot(x), присутствует надпись "Live", что — видно на Рисунок 11.26.

    Как видно из второго примера,

    Шаг 2

    Как видно из второго примера, б

    Рисунок 11.27. Примеры применения функции smartplot3d
    Как видно из второго примера, представленного на Рисунок 11.27, функция smartplot3d обеспечивает построение не только отдельных поверхностей, но и ряда Пересе, кающихся поверхностей. При этом линии пересечения поверхностей строятся вполне корректно.

    Пример задания графической структуры типа

    Шаг 2

    Пример задания графической структуры типа

    Рисунок 11.33. Пример задания графической структуры типа GRID
    Обычная форма задания этой структуры следующая:
    MESH([[[x11,y11,z11]....[x1n,y1n,z1n]]. [[x21,y21,z21]....[x2n,y2n,z2n]]. ...[[xm1,ym1,zm1]...[xmn,ymn,zmn]]])
    Пример задания такой структуры представлен на Рисунок 11.34.

    Примеры построения графиков одной функции

    Шаг 2

    Примеры построения графиков одной функции б

    Рисунок 11.1. Примеры построения графиков одной функции
    При построении графиков одной функции могут быть введены описание диапазонов и различные параметры, например: для задания цвета кривой, толщины линии, которой строится график функции, и др. К примеру, запись в списке параметров color=black задает вывод кривых черным цветом, а запись thikness=2 задает во втором примере Рисунок 11.1 построение графика линией, удвоенной по сравнению с обычной толщиной. Кстати говоря, запись color=red дает красный цвет, color=green — зеленый цвет, color=blue — синий цвет и т. д. При черно-белой печати цвета представляются оттенками серого цвета.

    Правильный выбор диапазонов повышает представительность

    Шаг 2

    Правильный выбор диапазонов повышает представительность б

    Рисунок 11.2. Построение графиков функции с явным указанием масштаба
    Правильный выбор диапазонов повышает представительность графиков функций. Рекомендуется вначале пробовать строить графики с автоматическим выбором диапазонов, а уже затем указывать их вручную.

    Построение графиков функций

    Шаг 2

    Построение графиков функций б

    Рисунок 11.3. Построение графиков функций с разрывами

    В данном случае сама функция

    Шаг 2

    В данном случае сама функция

    Рисунок 11.5. График функции sin(x)/x и ее полиномиальной аппроксимации
    В данном случае сама функция построена сплошной линией, а график полинома точками — ромбами. Хорошо видно, что при малых х аппроксимация дает высокую точность, но затем с ростом х ее погрешность резко возрастает.
    Рисунок 11.6 показывает построение нескольких любопытных функций, полученных с помощью комбинаций элементарных функций. Такие комбинации позволяют получать периодические функции, моделирующие сигналы стандартного вида: в виде напряжения на выходе двухполупериодного выпрямителя, симметричных прямоугольных колебаний (меандр), пилообразных и треугольных импульсов, треугольных импульсов со скругленной вершиной.

    Построение графика функции, явно заданной

    Шаг 3

    Построение графика функции, явно заданной б

    Рисунок 11.8. Построение графика функции, явно заданной отдельными точками
    Во втором примере Рисунок 11.8 показано построение только точек заданной функциональной зависимости. Они представлены маленькими кружками. Читателю предлагается самостоятельно совместить оба подхода к построению графиков по точкам и создать график в виде отрезков прямых, соединяющих заданные точки функции, представленные кружками или крестиками.

    График еще одной поверхности

    Шаг 3

    График еще одной поверхности

    Рисунок 11.18. График еще одной поверхности в сферической системе координат

    после поворота мышью демонстрирует,

    Шаг 3

    после поворота мышью демонстрирует,

    Рисунок 11.22. Тор с Рисунок 11. 21 после поворота мышью демонстрирует, что он и впрямь имеет дырку

    Пример задания графической структуры типа

    Шаг 3

    Пример задания графической структуры типа

    Рисунок 11.34. Пример задания графической структуры типа MESH
    Описанные структуры могут использоваться и в программных модулях. Много таких примеров описано в книгах, поставляемых с системой Maple 7.

    Построение графиков нескольких любопытных функций

    Шаг 3

    Построение графиков нескольких любопытных функций

    Рисунок 11.6. Построение графиков нескольких любопытных функций
    В этом рисунке запись axes=NONE убирает координатные оси. Обратите внимание, что смещение графиков отдельных функций вниз с целью устранения их наложения достигнуто просто прибавлением к значению каждой функции некоторой константы.

    представленный под заданными углами обзора

    Шаг 4

    представленный под заданными углами обзора

    Рисунок 11.23. "Квадратный" тор, представленный под заданными углами обзора

    Специальные приемы построения трехмерных графиков

    Специальные приемы построения трехмерных графиков





    Среди аргументов функции plot

    Среди аргументов функции plot есть специальный параметр discont. Если задать его значение равным true, то качество графиков существенно улучшается, см. второй пример на Рисунок 11.3. Улучшение достигается разбиением графика на несколько участков, на которых функция непрерывна, и более тщательным контролем за отображаемым диапазоном. При discont=false данный параметр отключен и строятся обычные графики.

    Примечание 1
    Примечание 1


    Следует отметить, что вид графика можно улучшить, просто задав диапазон по оси у например введя в параметры функции запись у=-10..10). При этом в точках разрыва могут появиться вертикальные линии. Иногда это бывает полезно.

    Трехмерный график как графический объект

    Трехмерный график как графический объект

    Принадлежность функций plot и plot3d к функциям (в ряде книг их именуют операторами, командами или процедурами) наглядно выявляется при создании графических объектов. Графический объект — это, в сущности, обычная переменная, которой присваивается значение графической функции. После этого такая переменная, будучи вызванной, производит построение соответствующего графика. Пример этого дан на Рисунок 11.28.

    Управление диапазоном изменения

    Управление диапазоном изменения переменной и значения функции

    Для управления отображаемой на графике области служит задание диапазонов принимаемых значений для переменной и функции. В ряде случаев их можно не применять, тогда Maple автоматически задает приемлемые диапазоны. Однако их явное указание позволяет управлять областью графика вручную. Иногда соответствующее задание диапазонов случайно или целенаправленно ведет к отсечению части графика — например, на Рисунок 11.2 в первом примере отсечена верхняя часть графика.

    Управление стилем и цветом линий двумерных графиков

    Управление стилем и цветом линий двумерных графиков

    Maple 7 позволяет воспроизводить на одном графике множество кривых. При этом возникает необходимость как-то идентифицировать их. Для этого можно использовать построение линий разными стилями, разными цветами и с разной толщиной. Набор средств выделения кривых позволяет уверенно различать их как на экране цветного дисплея и в распечатках, сделанных цветным струйным принтером, так и при печати монохромными принтерами. Параметр style — позволяет задавать следующие стили для линий графиков:
  • POINT или point — график выводится по точкам;
  • LINE или line — график выводится линией.
  • Если задано построение графика точками, то параметр symbol позволяет представить точки в виде различных символов, например прямоугольников, крестов, окружностей или ромбов.
    Другой параметр — color — позволяет использовать обширный набор цветов линий графиков:
    aquamarine
    black
    blue
    navy
    coral
    cyan
    brown
    gold
    green
    gray
    grey
    khaki
    magenta
    maroon
    orange
    pink
    plum
    red
    sienna
    tan
    turquoise
    violet
    wheat
    white
    yellow
    Различные цветовые оттенки получаются благодаря использованию RGB-комбинаций базовых цветов: red — красный, gray — зеленый, bluе — синий. Приведем перевод ряда других составных цветов: black — черный, white — белый, khaki — цвет "хаки", gold — золотистый, orange — оранжевый, violet — фиолетовый, yellow — желтый и т. д. Перевод цветов некоторых оттенков на русский язык не всегда однозначен и потому не приводится. Средства управления стилем графиков дают возможность легко выделять различные кривые на одном рисунке, даже если для выделения не используются цвета.

    Типовые средства построения

    Урок 11.


    Типовые средства построения графиков


    Введение в построение двумерных графиков



    Выбор и пересчет координат трехмерных графиков

    Выбор и пересчет координат трехмерных графиков

    Для трехмерных графиков возможно задание 31 типа координатных систем с помощью параметра сооrds= Тип _ координатной _ системы. Поскольку на экране монитора поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и z, то для представления поверхности, заданной в иной системе координат с координатами u, v и w, используются известные [46, 47] формулы для преобразования (u, v, w) --> (х, у, z). Ниже перечислены типы трехмерных координатных систем и соответствующие формулы преобразования.
    bipolar-cylindrical:
    х = a*sinh(v)/(cosh(v)-cos'(u))
    у = a*sin(u)/(cosh(v)-cos(u))
    z = w
    bispherical:
    x = sin(u)*cos(w)/d
    у = sin(u)*sin(w)/d
    z = sinh(v)/d где d - cosh(v) - cos(u)
    cardioidal:
    x = u*v*cos(w)/(u^2+v^2)^2
    у -=u*v*sin(w)/(u^2+v^2)^2
    z = (u^2-v^2)/2/(u^2+v^2)^2
    cardioidcylindrical:
    x = (u^2-v^2)/2/(u^2+v^2)^2
    у - u*v/(u^2+v^2)^2
    z =w
    casscylindhcal:
    x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2)+exp(u)*cos(v)+l)^(l/2)
    у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2)-exp(u)*cos(v)-l)^(l/2)
    z =w
    confocalellip:
    x = ((a^2-u)*(a^2-v)*(a^2-w)/(a^2-b^2)/(a^2-c^2))^(l/2)
    у = ((b^2-u)*(b^2-v)*(b^2-w)/(b^2-a^2)/(b^2-c^2))^(l/2)
    z = ((c^2-u)*(c^2-v)*(c^2-w)/(c^2-a^2)/(c^2-b^2))^(l/2)
    confocalparab:
    x = ((a^2-u)*(a^2-v)*(a^2-w)/(b^2-a^2)^(l/2)
    у = ((b^2-u)*(b^2-v)*(b^2-w)/(b^2-a^2))^(l/2)
    z = (a^2+b^2-u-v-w)/2
    conical:
    x = u*v*w/(a*b)
    у = u/b*((v^2 - b^2)*(b^2-w^2)/(a^2-b^2))^(l/2)
    z= u/a*((a^2 - v^2)*(a^2 - w^2)/(a^2-b^2))6(l/2)
    cylindrical:
    x = u*cos(y)
    у = u*sin(y)
    z = w
    ellcylindrical:
    x =a*cosh(u)*cos(v)
    у = a*sinh(u)*sin(v)
    z = w
    ellipsoidal:
    x = u*v*w/a/b
    у = ((u^2-b^2)*(u^2-b^2)*(b^2-w^2)/(а^2-b^2)^(1/2)/b
    z = ((u^2-a^2)*(a^2-v^2)*(a^2-w^2)/(a^2-b^2)^(l/2)/a
    hypercylindrical:
    x = ((u^2+v^2)^(l/2)-ni)^(l/2)
    у = ((u^2+v^2)^(l/2)-u)^(l/2)
    z = w
    invcasscylindrical:
    x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2) +
    exp(u)*cos(v)+1)^(l/2)/(exp(2*u)+2*exp(u)*cos(v)+1)^(l/2)
    у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+1)^(l/2) -
    exp(u)*cos(v)-1)^(l/2)/(exp(2*u)+2*exp(u)*cos(v)-1)^(l/2)
    z = w
    invellcylindrical:
    x = a*cosh(u)*cos(v)/(cosh(u)^2-sin(v)^2)
    у = a*sinh(u)*sin(v)/(cosh(u)^2-sin(v)^2)
    z = w
    invoblspheroidal:
    x = a*cosh(u)*sin(v)*cos(w)/(cosh(u)^2-cos(v)^2)
    у = a*cosh(u)*sin(v)*sin(w)/(cosh(u)^2-cos(v)^2)
    z = a*sinh(u)*cos(v)/(cosh(u)^2-cos(v)^2)
    invprospheroldal:
    x = a*s1nh(u)*sin(v)*cos(w)/(cosh(u)^2-sin(v)^2)
    у = a*sinh(u)*sin(v)*sin(w)/(cosh(u)^2-sin(v)^2)
    z = a*cosh(u)*cos(v)/(cosh(u)^2-s1n(v)^2)
    logcyllndrical:
    x = a/Pi*ln(u^2+v^2)
    у = 2*a/Pi*arctan(v/u)
    z = w
    logcoshcylindrical:
    x = a/Pi*ln(cosh(u^2-sin(v)^2)
    у = 2*a/Pi*arctan(tanh(u)*tan(v))
    z = w
    maxwell cylindrical:
    x = a/P1*(u+l+exp(u)*cos(v))
    у = a/Pi*(v+exp(u)*sin(v))
    z = w
    oblatespheroidal:
    x = a*cosh(u)*s1n(v)*cos(w)
    у = a*cosh(u)*sin(v)*sin(w)
    z = a*s1nh(u)*cos(v)
    parabololdal:
    x = u*v*cos(w)
    у = u*v*sin(w)
    z = (u^2 - v^2)/2
    paraboloidal2:
    x = 2*((u-a)*(a-v)*(a-w)/(a-b)^(l/2)
    у = 2*((u-b)*(b-v)*(b-w)/(a-b))^(l/2)
    z = u+v+w-a-b
    paracylindrical:
    x = (iT2 - v*2)/2
    у =u*v
    z = w
    prolatespheroidal:
    x = a*sinh(u)*sin(v)*cos(w)
    y=a*s1nh(u)*sin(v)*sin(w)
    z=a*cosh(u)*cos(v)
    rectangular:
    x = u
    у = v
    z = w
    rosecylindrlcal:
    х =((u^2+v^2)^(l/2)-Hi)^(l/2)/(u^2+v^2)^(l/2)
    у = ((u^2+v^2)^(l/2)-u)^(l/2)/(u^2+v^2)^(l/2)
    z =w
    sixsphere:
    x = u/(u^2+v^2+w^2)
    у = v/(u^2+v^2+w^2)
    z = w/(u^2+v^2+w^2)
    spherical:
    x = u*cos(v)*sin(w)
    у = u*sin(v)*sin(w)
    z = u*cos(w)
    tangentcylindrical:
    x = u/(u^2+v^2) '
    у = v/(u^2+v^2)
    z = w
    tangentsphere:
    x = u*cos(w)/(u^2+v^2)
    у = u*sin(w)/(u^2+v^2)
    z = v/(u^2+v^2)
    toroidal:
    x = a*sinh(v)*cos(w)/d
    у = a*sinh(v)*sin(w)/d
    z = a*sin(u)/d где d = cosh(v) - cos(u)
    Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета. Вид графиков трехмерных поверхностей очень сильно различается в разных координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.

    Задание координатных систем двумерных графиков

    Задание координатных систем двумерных графиков

    В версии Maple 7 параметр coords задает 15 типов координатных систем для двумерных графиков. По умолчанию используется прямоугольная (декартова) система координат (coords=cartesian). При использовании других координатных систем координаты точек для них(и, v) преобразуются в координаты (х, у) как (n, v) —> (х, у). Ниже приведены наименования систем координат (значений параметра coords) и соответствующие формулы преобразования.
    bipolar:
    x = sinh(v)/(cosh(v)-cos(u)) у - sin(u)/(cosh(v)-cos(u))
    cardioid:
    x = l/2*(u^2-v^2)/(u^2+v^2)^2
    у = u*v/(u^2+v^2)^2
    cartesian:
    x = u
    У = v
    cassinian:
    x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+1)^(1/2) + exp(u)*cos(v)+1^(l/2)
    у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+1)^(1/2) -exp(u)*cos(v)-1)^(l/2)]
    elliptic:
    x = cosh(u)*cos(v) у = sinh(u)*sin(v)
    hyperbolic:
    x = ((u^2+v^2)^(l/2)+u)^(l/2)
    у = ((u^2+v~2)^(l/2)-u)^(l/2)
    invcassinian:
    x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2) + exp(u)*cos(v)+1)^(1/2)/(exp(2*u)+2*exp(u)*cos(v)+1)^(l/2)
    у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2) -exp(u)*cos(v)-l)^(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)^(l/2)
    invelliptic:
    x = a*cosh(u)*cos(v)/(cosh(u)*2-sin(v)*2)
    у = a*sinh(u)*sin(v)/(cosh(u)^2-sin(vr2)
    logarithmic:
    x = a/Pi*ln(u^2+v^2)
    у = 2*a/Pi*arctan(v/u)

    logcosh:
    x = a/Pi*ln(cosh(ur2-sin(vr2)
    у =2*a/Pi*arctan(tanh(u)*tan(v))
    maxwell :
    x - a/Pi*(u+l+exp(u)*cos(v))
    у = a/Pi*(v+exp(u)*sin(v))
    parabolic:
    x = (u^2-v^2)/2 •
    у - u*v
    polar:
    x = u*cos(v) у = u*sin(v)
    rose:
    x = ((u^2+v^2)^(l/2)+u)^(l/2)/(u^2+v^2)^(l/2)
    у - ((u^2+v^(1/2)+u)^(1/2)/(u^2+v^2)^(1/2)
    tangent:
    x = u/(u^2+v^2)
    у =v/(u^2+v^2)


    Задание трехмерных графиков в виде процедур

    Задание трехмерных графиков в виде процедур

    Язык программирования Maple 7 допускает применение в процедурах любых внутренних функций, в том числе графических. Пример такого применения дает Рисунок 11.29.

    Занимательные фигуры — трехмерные графики

    Занимательные фигуры — трехмерные графики

    Параметрическое задание уравнений поверхности открывает почти неисчерпаемые возможности построения занимательных и сложных фигур самого различного вида. Приведем пару построений такого рода.
    На Рисунок 11.24 показан тор, сечение которого имеет вид сплюснутой шестиконечной звезды. Вырез в фигуре дает прекрасный обзор ее внутренней поверхности, а цветная функциональная окраска и линии сетки, построенные с применением алгоритма удаления невидимых линий, дают весьма реалистичный вид фигуры. Замените параметр scaling=unconstrained на scaling=constrained, и вы получите тор с неискаженным сечением.
    На Рисунок 11.25 показан еще один тор. На этот раз он круглого сечения, но сверху и снизу имеет вид пятиконечной звезды.
    Примечание 1
    Примечание 1


    В приведенных на Рисунок 11.19-11.25 программах построения различных поверхностей — и трехмерных фигур имеется ряд характерных констант и математических выражений, определяющих как вид фигур, так и их размеры и положение. Рекомендуется тщательно проанализировать эти примеры и попробовать их в работе с несколько измененными теми или иными данными. Полезно построить ряд подобных примеров самостоятельно. Все это будет способствовать привитию учащимся специального геометрического стиля мышления, при котором геометрические особенности фигур связываются с их расчетным описанием.

    Контурные трехмерные графики

    Анимация двумерной графики в пакете plottools

    Анимация двумерной графики в пакете plottools

    Пакет plottools открывает возможности реализации анимационной графики. Мы ограничимся одним примером анимации двумерных графиков. Этот пример представлен на Рисунок 12.29. В этом примере показана анимационная иллюстрация решения дифференциального уравнения, описывающего незатухающий колебательный процесс. Строится качающийся объект — стрелка с острием вправо, решение дифференциального уравнения в виде синусоиды и большая стрелка с острием влево, которая соединяет текущую точку графика синусоиды с острием стрелки колеблющегося объекта.
    Этот пример наглядно показывает возможности применения анимации для визуализации достаточно сложных физических и математических закономерностей. Перспективы применения системы Maple 7 в создании виртуальных физических и иных лабораторий трудно переоценить.

    Анимация с помощью параметра insequence

    Анимация с помощью параметра insequence

    Еще один путь получения анимационных рисунков — создание ряда графических объектов pi, р2, рЗ и т. д. и их последовательный вывод с помощью функций display или display3d:
    display (pl,p2.p3.....insequence=true)
    display3d ( pi. p2. p3..., i nsequence=t rue)
    Здесь основным моментом является применение параметра insequence=true. Именно он обеспечивает вывод одного за другим серии графических объектов pi, р2, рЗ и т. д. При этом объекты появляются по одному и каждый предшествующий объект стирается перед появлением нового объекта.

    Анимация трехмерной графики в пакете plottools

    Анимация трехмерной графики в пакете plottools

    Хорошим примером ЗD-анимации является документ, показанный на Рисунок 12.30. Представленная на нем процедура springPlot имитирует поведение упругой системы, первоначально сжатой, а затем выстреливающей шар, установленный на ее верхней пластине. Упругая система, состоит из неподвижного основания, на котором расположена упругая масса (например, из пористой резины), и верхней пластины.

    Двумерный график векторного поля

    Двумерный график векторного поля

    Еще один распространенный способ представления трехмерных поверхностей —-графики полей векторов. Они часто применяются для отображения полей, например электрических зарядов. Особенность таких графиков в том, что для их построения используют стрелки, направление которых соответствует направлению изменения градиента поля, а длина — значению градиента. Так что термин "поле векторов" надо понимать в смысле, что поле графика заполнено векторами.
    Для построения таких графиков в двумерной системе координат используется функция fieldplot:
    fieldplot(f, r1, r2)
    fieldplot(f, r1, r2. ...)
    где f — вектор или множество векторов, задающих построение; r1 и r2 — пределы.
    На Рисунок 12.4 в нижней части документа показан вид одного из таких графиков. Следует отметить, что для получения достаточного числа отчетливо видных стрелок надо поработать с форматированием графиков. Иначе графики этого типа могут оказаться не очень представительными. Так, слишком короткие стрелки превращаются в черточки и даже точки, не имеющие острия, что лишает графики наглядности.
    Несколько позже мы рассмотрим построение на одном рисунке графиков плотности и векторного поля, а также создание более наглядных толстых стрелок.

    Графическое представление содержимого матрицы

    Графическое представление содержимого матрицы

    Многие вычисления имеют результаты, представляемые в форме матриц. Иногда такие результаты можно наглядно представить графически, например в виде гистограммы. Она представляет собой множество столбцов квадратного сечения, расположенных на плоскости, образованной осями строк (row), и столбцов (column) матрицы. При этом высота столбцов определяется содержимым ячеек матрицы.
    Такое построение обеспечивает графическая функция matrixplot из пакета plots. На Рисунок 12.35 показано совместное применение этой функции с двумя функциями пакета linalg, формирующими две довольно экзотические матрицы А и В.

    График плотности

    График плотности

    Иногда поверхности отображаются на плоскости как графики плотности окраски — чем выше высота поверхности, тем плотнее (темнее) окраска. Такой вид графиков создается функцией densityplot. Она может записываться в двух форматах:
    densityplot(exprl.x=a..b,y=c..d)
    densityplot(f,a..b,c..d)
    где назначение параметров соответствует указанному выше для функции contourplot. На Рисунок 12.4 (верхняя часть) дан пример построения графика такого типа. Нетрудно заметить, что в плоскости XY график разбит на квадраты, плотность окраски которых различна. В нашем случае плотность окраски задается оттенками серого цвета.

    Графика пакета plottools

    Графика пакета plottools

    Примитивы пакета plottools
    Инструментальный пакет графики plottools служит для создания графических примитивов, строящих элементарные геометрические объекты на плоскости и в пространстве: отрезки прямых и дуг, окружности, конусы, кубики и т. д. Его применение позволяет разнообразить графические построения и строить множество графиков специального назначения. В пакет входят следующие графические примитивы:

    arc
    arrow
    circle
    cone
    cuboid
    curve
    cutln
    cutout
    cylinder
    disk
    dodecahedron
    ellipse
    ellipticArc
    hemisphere
    hexahedron
    hyperbola
    icosahedron
    line
    octahedron
    pieslice
    point tetrahedron
    polygon torus
    rectangle
    semi torus
    sphere
    Примечание 1
    Примечание 1


    Вызов перечисленных примитивов осуществляется после загрузки пакета в память компьютера командой with(plottools). Только после этого примитивы пакета становятся доступными. Обычно примитивы используются для задания графических объектов, которые затем выводятся функцией display. Возможно применение этих примитивов совместно с различными графиками.
    Большинство примитивов пакета plottools имеет довольно очевидный синтаксис. Например, для задания дуги используется примитив агс(с, r, а..b,...), где с — список с координатами центра окружности, к которой принадлежит дуга, г — радиус этой окружности, а.. b — диапазон углов. На месте многоточия могут стоять обычные параметры, задающие цвет дуги, толщину ее линии и т. д. Конус строится примитивом cone(c,r,h...), где с — список с координатами центра, г — радиус основания, h — высота и т. д. Все формы записи графических примитивов и их синтаксис можно найти в справочной системе. В необходимых случаях стоит проверить синтаксис того или иного примитива с помощью справки по пакету plottools.

    Графики типа трехмерного поля из векторов

    Графики типа трехмерного поля из векторов

    Наглядность ряда графиков можно существенно увеличить, строя их в трехмерном представлении. Например, для такого построения графиков полей из векторов можно использовать графическую функцию fieldplot3d. В отличие от функции fieldplot она строит стрелки как бы в трехмерном пространстве (Рисунок 12.8).

    Графики в разных системах координат

    Графики в разных системах координат

    В пакете plots имеется множество функций для построения графиков в различных системах координат. Объем книги не позволяет воспроизвести примеры всех видов таких графиков, ибо их многие сотни. Да это и не надо — во встроенных в справочную систему примерах можно найти все нужные сведения. Так что ограничимся лишь парой примеров применения функции tubeplot(C, options), позволяющей строить весьма наглядные фигуры в пространстве, напоминающие трубы или иные объекты, образованные фигурами вращения.

    Иллюстрация итерационного решения уравнения f (х) = х

    Иллюстрация итерационного решения уравнения f (х) = х

    Классическим методом решения нелинейных уравнений является сведение их к виду х =f(x) и применение метода простых итераций xk =s(xk-1) при заданном значениих0. Приведем пример такого решения:
    >f :=x ->3*1n(x+l);
    f:=x-> 3ln(x+1)
    >x||0 := 0.5:
    x0:=5
    >x0 := .5;
    x0:=.5
    >for k from 1 to 16 do x||k := evalf( f(x||(k-l) )): od;
    xl := 1.216395324
    x2 := 2.387646445
    x3 := 3.660406248
    x4:= 4.617307866
    x5:= 5.177557566
    x6:= 5.462768931
    x7:= 5.598173559
    x8:= 5.660378631
    x9 := 5.688529002
    xl0:= 5.701181910
    x11 := 5.706851745
    x12 := 5.709388956
    x13:= 5.710523646
    x14 — 5.711030964
    xl5:= 5.711257755
    x16:= 5.711359134
    Нетрудно заметить, что значения xk в ходе итераций явно сходятся к некоторому значению. Проведем проверку решения, используя встроенную функцию solve:

    Конформные отображения на комплексной плоскости

    Конформные отображения на комплексной плоскости

    Объем данной книги не позволяет объяснить столь тонкое понятие, как конформные отображения на комплексной плоскости. Ограничимся лишь указанием на то, что в пакете plots имеется функция для таких отображений:
    conformal(F,rl,r2,о);
    где F — комплексная процедура или выражение; rl, г2 — области, задаваемые в виде а. .Ь или name=a. .b; о — управляющие параметры. Таким образом, для построения нужного графика достаточно задать нужное выражение и области изменения г! и г2. Пример построения конформных изображений для трех выражений дан на Рисунок 12.34.

    Контурные трехмерные графики

    Контурные трехмерные графики

    В отличие от векторных графиков контурные графики поверхностей, наложенные на сами эти поверхности, нередко повышают восприимчивость таких поверхностей — подобно изображению линий каркаса. Для одновременного построения поверхности и контурных линий на них служит функция contourplot3d. Пример ее применения показан на Рисунок 12.9.
    Для повышения наглядности этот график доработан с помощью контекстной панели инструментов графиков. В частности, включена функциональная окраска и подобраны углы обзора фигуры, при которых отчетливо видны ее впадина и пик.

    Наблюдение надрав анимации поверхности

    Наблюдение надрав анимации поверхности

    Наблюдение за развитием поверхности производит на многих (особенно на студентов) большое впечатление. Оно позволяет понять детали создания сложных трехмерных графиков и наглядно представить их математическую сущность. Рассмотрим анимацию поверхности на примере Рисунок 12.18.
    Как и для случая анимации двумерного графика, большой интерес представляет построение всех фаз анимации на одном рисунке. Делается это точно так Же, как в двумерном случае. Это иллюстрирует Рисунок 12.53. На нем представлены 8 фаз анимации трехмерной поверхности cos(t*x*y/3), представленной функцией трех переменных t, х и у. При этом изменение первой переменной создает фазы анимации поверхности.

    Новая функция для построения стрелок arrow

    Новая функция для построения стрелок arrow

    В пакет plots системы Maple 7 введена новая функция построения стрелок arrow. Она задается в виде arrow(u,[v,]opts) или arrow(U,opts)
    Построение стрелок задается одномерными массивами координат начала стрелок и их направления и и v или двумерным массивом U, которые могут быть представлены векторами, списками или множествами. Вид стрелок задается параметром opts, который может иметь значения shape, length, width, head_width, head_length или plane и задает вид стрелок (форму, длину, ширину и т. д.). Детали задания параметров можно найти в справке по данной функции. Рисунок 12.54 дает наглядное представление о ее возможностях.

    Пакет plots

    Пакет plots

    Общая характеристика пакета plots
    Пакет plots содержит почти полсотни графических функций, существенно расширяющих возможности построения двумерных и трехмерных графиков в Maple 7:
    > with(plots);
    [animate, animate3d, animatecurve, changecoords, complexplot, complexplotSd, conformal, contourplot, contourplotSd, coordplot, coordplotld, cylinderplot, densityplot, display, displayed, fteldplot,fieldplot3d, gradplot, gmdplotSd, implicitplot, implicitplot3d, inequal, listcontplot, HslcontplotSd, listdensityplot, listplot, Iistplot3d, loglogplot, logplot, matrixplot, odeplot>pareto,pointplot, pointplotSd, polarplot, polygonplot, polygonplotSd, palyhedrajsupported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptionsSd, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplotSd, tubeplot]
    Ввиду важности этого пакета отметим назначение всех его функций:

  • animate — создает анимацию двумерных графиков функций;
  • animate3d — создает анимацию трехмерных графиков функций;
  • animatecurve — создает анимацию кривых;
  • changecoords — смена системы координат;
  • complexplot — построение двумерного графика на комплексной плоскости;
  • complexplot3d — построение трехмерного графика в комплексном пространстве;
  • conformal — конформный график комплексной функции;
  • contourplot — построение контурного графика;
  • contourplot3d — построение трехмерного контурного графика;
  • coordplot — построение координатной системы двумерных графиков;
  • coordplot3d — построение координатной системы трехмерных графиков;
  • cylinderplot — построение графика поверхности в цилиндрических координатах;
  • densityplot — построение двумерного графика плотности;
  • display — построение графика для списка графических объектов;
  • display3d — построение графика для списка трехмерных графических объектов;
  • fieldplot — построение графика двумерного векторного поля;
  • fieldplot3d — построение графика трехмерного векторного поля;
  • gradplot — построение графика двумерного векторного поля градиента;
  • gradplot3d — построение графика трехмерного векторного поля градиента;
  • implicitplot — построение двумерного графика неявной функции;
  • implicitp1ot3d — построение трехмерного графика неявной функции;
  • inequal — построение графика решения системы неравенств;
  • listcontplot — построение двумерного контурного графика для сетки значений;
  • Iistcontplot3d — построение трехмерного контурного графика для сетки значений;
  • listdensityplot — построение двумерного графика плотности для сетки значений;
  • listplot — построение двумерного графика для списка значений;
  • listplot3d — построение трехмерного графика для списка значений;
  • loglogplot — построение логарифмического двумерного графика функции;
  • logplot — построение полулогарифмического двумерного графика функции;
  • matrixplot — построение трехмерного графика со значениями Z, определенными матрицей;
  • odeplot — построение двумерного или трехмерного графика решения дифференциальных уравнений;
  • pareto — построение диаграммы (гистограммы и графика);
  • pointplot — построение точками двумерного графика;
  • poi ntplot3d — построение точками трехмерного графика;
  • polarplot — построение графика двумерной кривой в полярной системе координат;
  • polygonplot — построение графика одного или нескольких многоугольников;
  • polygonplot3d — построение одного или нескольких многоугольников;
  • polyhedraplot — построение трехмерного многогранника;
  • replot — перестроение графика заново;
  • rootlocus — построение графика корней уравнения с комплексными неизвестными;
  • semilogplot — построение графика функции с логарифмическим масштабом по оси абсцисс;
  • setoptions — установка параметров по умолчанию для двумерных графиков;
  • setoptions3d — установка параметров по умолчанию для трехмерных графиков;
  • spaeecurve — построение трехмерных кривых;
  • sparsematrixplot — построение двумерного графика отличных от нуля значений матрицы;
  • sphereplot — построение графика трехмерной поверхности в сферических координатах;
  • surfdata — построение трехмерного графика поверхности по численным данным;
  • textplot — вывод текста на заданное место двумерного графика;
  • textplot3d — вывод текста на заданное место трехмерного графика;
  • tubeplot — построение трехмерного графика типа "трубы".
  • Среди этих функций надо отметить прежде всего средства построения графиков ряда новых типов (например, в виде линий равного уровня, векторных полей и т. д.), а также средства объединения различных графиков в один. Особый интерес представляют две первые функции, обеспечивающие анимацию как двумерных (animate), так и трехмерных графиков (animate3d). Этот пакет вполне заслуживает описания в отдельной книге. Но, учитывая ограниченный объем данной книги, мы рассмотрим лишь несколько характерных примеров его применения. Заметим, что для использования приведенных функций нужен вызов пакета, например командой with(plots).

    Построение двумерных анимированных графиков

    Построение двумерных анимированных графиков

    Более обширные возможности анимации двумерных графиков обеспечивает функция animate:
    ammate(F, х, t)
    animate(F,x, t, о)
    В ней параметр х задает пределы изменения переменной х, а параметр t — пределы изменения дополнительной переменной t. Суть анимации при использовании данной функции заключается в построении серии кадров (как в мультфильме), причем каждый кадр связан со значением изменяемой во времени переменной t. Если надо явно задать число кадров анимации N, то в качестве о следует использовать frame=N.
    Рисунок 12.16 показывает применение функции animate.

    Построение двумерных графиков типа implicitplot

    Построение двумерных графиков типа implicitplot

    В математике часто встречается особый тип задания геометрических фигур, при котором переменные х и у связаны неявной зависимостью. Например, окружность задается выражением х2 + у2 =R2, где R — радиус окружности. Для задания двумерного графика такого вида служит функция импликативной графики:
    implicitplot(eqn,x=a..b,y=c..d,options)
    Пример построения окружности с помощью этой функции показан на Рисунок 12.1, снизу. Чуть ниже мы рассмотрим подобную функцию и для трехмерного графика.

    Построение графиков функций в

    Построение графиков функций в двумерной полярной системе координат

    В пакете plots есть функция для построения графиков в полярной системе координат. Она имеет вид polarplot(L,o), где L — объекты для задания функции, график которой строится, и о — необязательные параметры. На Рисунок 12.1, сверху, представлен пример построения графика с помощью функции polarplot. В данном случае для большей выразительности опущено построение координатных осей, а график выведен линией удвоенной толщины. График очень напоминает лист клена, весьма почитаемого в Канаде и ставшего эмблемой Maple.

    Построение графиков из множества фигур

    Построение графиков из множества фигур

    В ряде случаев бывает необходимо строить графики, представляющие собой множество однотипных фигур. Для построения таких графиков полезно использовать функцию повторения seq(f ,i=a. .b). На Рисунок 12.28 показано построение фигуры, образованной вращением прямоугольника вокруг одной из вершин.

    Построение графиков линиями равного уровня

    Построение графиков линиями равного уровня

    Графики, построенные с помощью линий равного уровня (их также называют контурными графиками), часто используются в картографии. Эти графики получаются, если мысленно провести через трехмерную поверхность ряд равноотстоящих плоскостей, параллельных плоскости, образованной осями X иY графика. Линии равных высот образуются в результате пересечения этих плоскостей с трехмерной поверхностью.
    Для построения таких графиков используется функция contourplot, которая может использоваться в нескольких форматах:
    contourplot(exprl,x=a..b,y=c..d)
    contourplot(f,a..b,c..d)
    contourplot([exprf ,exprg,exprh ] S=a. .b,t=c. .d)
    contourplot([f.g.h ],a..b,c..d)
    contourp1ot3d(exprl,x=a..b,y=c. .d)
    contourplot3d(f,a..b,c..d)
    contourplot3d([exprf,exprg,exprh],s=a..b,t=c,.d)
    contourplot3d([f.g.h ],a..b,c..d)
    Здесь f, g и h — функции; exprl — выражение, описывающее зависимость высоты поверхности от координат х и у; exprf, exprg и exprh — выражения, зависящие от s и t, описывающие поверхность в параметрической форме; а и b — константы вещественного типа; end — константы или выражения вещественного типа; х, у, s и t — имена независимых переменных.
    На Рисунок 12.2 показано построение графика линиями равного уровня для одной функции. Параметр filled=true обеспечивает автоматическую функциональную окраску замкнутых фигур, образованных линиями равного уровня. Порою это придает графику большую выразительность, чем при построении только линий равного уровня.

    Построение сложных фигур импликативной графики

    Построение сложных фигур импликативной графики

    Импликативные функции (см. урок 7) нередко имеют графики весьма любопытного вида. Ограничимся парой примеров построения таких графиков, представленных на Рисунок 12.49. Эти фигуры напоминают контурные графики функции двух переменных.
    Приведенные примеры дают весьма наглядное представление о больших возможностях визуализации решений самых различных задач в системе Maple V. Можно значительно расширить их, эффектно используя описанные ранее приемы анимации изображений. В целом надо отметить, что графические возможности Maple 7 дают новый уровень качества графики современных математических систем, о котором с десяток лет тому назад можно было только мечтать.

    Построение сложных фигур в полярной системе координат

    Построение сложных фигур в полярной системе координат

    Некоторые виды математической графики имеют определенную художественную ценность и фигурируют в символике различных стран и общественных организаций. Остановимся на нескольких таких примерах применительно к графике в полярной системе координат. Представим фигуры, образованные множеством линий на плоскости.
    Рисунок 12.46 демонстрирует одну из таких фигур. Это семейство из 10 кардиоид разного размера. Параметр scallIng=constrained обеспечивает правильное отображение фигур — каждая кардиоида вписывается в огибающую ее невидимую окружность. Размер кардиоид задается значением параметра а.

    Построение сложных комбинированных графиков

    Построение сложных комбинированных графиков

    В заключение этой главы рассмотрим построение с помощью системы Maple 7 достаточно сложных комбинированных графиков, содержащих различные графические и текстовые объекты. Пример построения такого графика представлен на Рисунок 12.55.

    Построение трехмерных анимационных графиков

    Построение трехмерных анимационных графиков

    Аналогичным образом может осуществляться и анимирование трехмерных фигур. Для этого используется функция animate3d:
    animate3d(F,x, y,t,o)
    Здесь F — описание функции (или функций); х, у и t — диапазоны изменения переменных х, у и t Для задания числа кадров N надо использовать необязательный параметр о в виде frame=N.
    На Рисунок 12.18 показано построение анимированного графика. После задания функции, график которой строится, необходимо выделить график и запустить проигрыватель, как это описывалось для анимации двумерных графиков.

    Примеры применения двумерных примитивов пакета plottools

    Примеры применения двумерных примитивов пакета plottools

    На Рисунок 12.19 показано применение нескольких примитивов двумерной графики для построения дуги, окружности, закрашенного красным цветом эллипса и отрезка прямой. Кроме того, на графике показано построение синусоиды. Во избежание искажений пропорций фигур надо согласовывать диапазон изменения переменной х. Обычно параметр scalling=constrained выравнивает масштабы и диапазоны по осям координат, что гарантирует отсутствие искажений у окружностей и других геометрических фигур. Однако при этом размеры графика нередко оказываются малыми. Напоминаем, что- этот параметр можно задать и с помощью подменю Projection.

    Примеры применения трехмерных примитивов пакета plottools

    Примеры применения трехмерных примитивов пакета plottools

    Аналогичным описанному выше образом используются примитивы построения трехмерных фигур. Это открывает возможность создания разнообразных иллюстрационных рисунков и графиков, часто применяемых при изучении курса стереометрии. Могут строиться самые различные объемные фигуры и поверхности — конусы, цилиндры, кубы, полиэдры и т. д. Использование средств функциональной окраски делает изображения очень реалистичными.
    Рисунок 12.22 показывает построение цилиндра и двух граненых шаров. Цилиндр строится примитивом cylinder, а граненые шары — примитивом icosahedron.
    Другой пример (Рисунок 12.23) иллюстрирует построение на одном графике двух объемных фигур, одна из которых находится внутри другой фигуры. Этот пример демонстрирует достаточно корректное построение вложенных фигур. На Рисунок 12.24 показано совместное построение двух пересекающихся кубов и сферы в пространстве. Нетрудно заметить, что графика пакета приблизительно (с точностью до сегмента) вычисляет области пересечения фигур. С помощью контекстно-зависимого меню правой кнопки мыши (оно показано на Рисунок 12.24) можно устанавливать условия обзора фигур, учитывать перспективу при построении и т. д. В частности, фигуры на Рисунок 12.24 показаны в перспективе.

    Проигрыватель анимированной графики

    Проигрыватель анимированной графики

    При включенном выводе панели форматирования во время анимации она приобретает вид панели проигрывателя клипов (Рисунок 12.15). Эта панель имеет кнопки управления с обозначениями, принятыми у современных магнитофонов:
    1. Поле координат перемещающейся точки графика.
    2. Остановка анимации.
    3. Пуск анимации.
    4. Переход к следующему кадру (фрейму).
    5. Установка направления анимации от конца в начало.
    6. Установка направления анимации из начала в конец (по умолчанию).
    7. Уменьшение времени шага анимации.
    8. Увеличение времени шага анимации.
    9. Установка одиночного цикла анимации.
    10. Установка серии циклов анимации.
    Итак, кнопки проигрывателя, по существу, повторяют команды подменю управления анимацией.
    Нажав кнопку пуска (с треугольником, острием обращенным вправо), можно наблюдать изменение вида кривой для функции sin(x)/(x). Другие кнопки управляют характером анимации. Проигрыватель дает удобные средства для демонстрации анимации, например, во время занятий со школьниками или студентами.

    Расширенная техника анимации

    Расширенная техника анимации

    Анимирование разложения импульса в ряд Фурье
    Анимирование изображений является одним из самых мощных средств визуализации результатов моделирования тех или иных зависимостей или явлений.
    Порою изменение во времени одного из параметров зависимости дает наглядное представление о его математической или физической сути.
    Здесь мы расширим представление об анимации и рассмотрим не вполне обычный пример — наблюдение в динамике за гармоническим синтезом некоторой произвольной функции f(x) на отрезке изменения л; от 0 до 1. Значения функции f(x) могут быть одного знака или разных знаков. В этом примере можно наблюдать в динамике синтез заданной функции рядом Фурье с ограниченным числом синусных членов (гармоник) — до 1, 2, 3..JV. На Рисунок 12.50 представлен документ, реализующий такое разложение и затем синтез для пилообразного линейно нарастающего импульса, описываемого выражением f(x) = -1 + 2 *х. На графике строится исходная функция и результат ее синтеза в динамике анимации.

    Расширенные средства графической визуализации

    Расширенные средства графической визуализации

    Построение ряда графиков, расположенных по горизонтали
    Обычно если в строке ввода задается построение нескольких графиков, то в строке вывода все они располагаются по вертикали. Это не всегда удобно, например, при снятии копий экрана с рядом графиков, поскольку экран монитора вытянут по горизонтали, а не по вертикали. Однако при применении функций plots и display можно разместить ряд двумерных графиков в строке вывода по горизонтали. Это демонстрирует пример, показанный на Рисунок 12.31. Этот пример достаточно прост и нагляден, так что читатель может пользоваться данной возможностью всегда, когда ему это нужно.

    и двух граненых шаров

    Шаг 1

    и двух граненых шаров

    Рисунок 12.22. Построение цилиндра и двух граненых шаров

    Построение трехмерной фигуры

    Шаг 1

    Построение трехмерной фигуры

    Рисунок 12.25. Построение трехмерной фигуры — "шкурки ежа"

    Построение фигуры, образованной вращением прямоугольника

    Шаг 1

    Построение фигуры, образованной вращением прямоугольника

    Рисунок 12.28. Построение фигуры, образованной вращением прямоугольника

    в строке вывода по горизонтали

    Шаг 1

    в строке вывода по горизонтали

    Рисунок 12.31. Пример расположения трех графиков в строке вывода по горизонтали

    представляющий решения системы линейных уравнений

    Шаг 1

    представляющий решения системы линейных уравнений

    Рисунок 12.32. График, представляющий решения системы линейных уравнений
    На Рисунок 12.32 система задана пятью равенствами: el, е2, еЗ, е4 и е5. Затем функцией solve получено вначале решение для всех переменных (для иллюстрации), а затем для трех переменных х, у и z. Для получения решения в виде списка, а не множества, как в первом случае для всех переменных, использована функция подстановки subs. После этого функция plot3d строит плоскость решения в пространстве.

    Пример графической интерпретации решения системы

    Шаг 1

    Пример графической интерпретации решения системы

    Рисунок 12.33. Пример графической интерпретации решения системы неравенств
    Обратите внимание на задание цветов: optionsfeasible задает цвет внутренней области, для которой удовлетворяются все неравенства (равенства), optionsopen и optionsdosed задают цвета открытых и закрытых границ областей графика, optionsexcluded используется для цвета внешних областей. График дает весьма наглядную интерпретацию действия ряда неравенств (или равенств).

    Шаг 1

    Шаг 1

    Шаг 1

    Рисунок 12. 35. Графическое представление

    Шаг 1

    Рисунок 12. 35. Графическое представление

    Рисунок 12. 35. Графическое представление матрицы
    На Рисунок 12.35 показана графическая визуализация матрицы, полученной как разность матриц А и В. Для усиления эффекта восприятия применяется функциональная закраска разными цветами. Для задания цвета введена процедура F.

    Наблюдение за процессом ньютоновских итераций

    Шаг 1

    Наблюдение за процессом ньютоновских итераций

    Рисунок 12.36. Наблюдение за процессом ньютоновских итераций в трехмерном пространстве
    ВНИМАНИЕ
    Риск работы с этим примером заключается в том, что в системе Maple 7 он иногда вызывает фатальные ошибки, ведущие к прекращению работы с системой. Обычно при запуске этого примера сразу после загрузки системы Maple такого не происходит, но, когда память загружена, сбой вполне возможен. Объективности ради надо заметить, что в системах Maple 6 и 7 подобное поведение системы не было замечено. Тем не менее рекомендуется записывать подобные примеры на диск перед их запуском.

    С помощью функции аllvalues можно

    Шаг 1

    С помощью функции аllvalues можно С помощью функции аllvalues можно построить список SA корней случайного полинома. А с помощью команды вида:
    > with(plots):
    complexplot(SA.x=-1.2..1.2.style=point):
    построить комплексные корни полученного случайного полинома в виде точек • на комплексной плоскости. Один из таких графиков (их можно построить множество) показан на Рисунок 12.37.

    с помощью функций polarptot

    Шаг 1

    с помощью функций polarptot

    Рисунок 12.1. Графики, построенные с помощью функций polarptot и impticitplot

    Наглядность этого графика усилена за

    Шаг 1

    Наглядность этого графика усилена за

    Рисунок 12.38. Построение графика поверхности с множеством экстремумов
    Наглядность этого графика усилена за счет применения функциональной окраски и контурных линий, нанесенных на саму поверхность. Все эти возможности обеспечивают параметры основной функции plot3d.
    А на Рисунок 12.39 представлен еще один способ задания поверхности — с помощью функции двух угловых переменных f(theta, phi).
    При построении этого рисунка также используются функциональная окраска и построение контурных линий.

    Построение графика поверхности, заданной функцией

    Шаг 1

    Построение графика поверхности, заданной функцией

    Рисунок 12.39. Построение графика поверхности, заданной функцией двух угловых переменных

    Графическое представление определенного интеграла

    Шаг 1

    Графическое представление определенного интеграла

    Рисунок 12.41. Графическое представление определенного интеграла

    к теореме Пифагора

    Шаг 1

    к теореме Пифагора

    Рисунок 12.42. Графическая иллюстрация к теореме Пифагора

    В этой процедуре заданы следующие

    Шаг 1

    В этой процедуре заданы следующие В этой процедуре заданы следующие цвета (их можно изменить):

    значение другого корня получено

    Шаг 1

    значение другого корня получено Результат выглядит необычно — помимо довольно "очевидного корнях x= 0 значение другого корня получено в виде специальной функции Ламберта. Впрочем, нетрудно найти и его численное значение:
    > evalf(%);
    0., 5.711441084
    Однако как сделать процесс решения достаточно наглядным? Обычно для этого строят графики двух зависимостей — прямой х и кривой f(x) — и наносят на них ступенчатую линию перемещения точки xk. Специальной функции для графиков подобного рода Maple 7 не имеет. Однако можно составить специальную процедуру для их построения .Ее листинг, заимствованный из примера, описанного в пакете обучения системе Maple 7 - PowerTools, представлен ниже:

    Семейство кардиоид на одном графике

    Шаг 1

    Семейство кардиоид на одном графике

    Рисунок 12.46. Семейство кардиоид на одном графике
    Еще одно семейство кардиоид, на сей раз шестилепестковых, представлено на Рисунок 12.47. Здесь также изменяемым параметром каждой фигуры является ее размер, заданный параметром а.
    Фигуре, представленной на Рисунок 12.48, трудно дать определенное название. Назовем ее волнообразной спиралью.
    По образу и подобию приведенных фигур читатель может опробовать свои силы в создании новых красочных фигур в полярной системе координат. Некоторые из них поразительно напоминают снежинки, картинки в калейдоскопе и изображения морских звезд. Если убрать параметр color=black, .введенный ради черно-белой печати картинок в книге, то можно усилить красочность фигур за счет их разноцветной окраски.

    Шаг 1

    Шаг 1

    Шаг 1

    кадр анимации, когда число гармоник

    Шаг 1

    кадр анимации, когда число гармоник

    Рисунок 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд Фурье
    Рисунок 12.51 показывает завершающий стоп- кадр анимации, когда число гармоник N равно 30. Нетрудно заметить, что такое число гармоник в целом неплохо описывает большую часть импульса, хотя в. его начале и в конце все еще заметны сильные отклонения.
    Для f(x) = 1 строится приближение для однополярного импульса с длительностью 1 и амплитудой 1, при f(x) =х — приближение для пилообразного линейно нарастающего импульса, при f(x) =х^2 — приближение для нарастающего по параболе импульса, при f(x)=signum(x-l/2) — приближение для симметричного прямоугольного импульса-меандра и т. д. Фактически можно наблюдать анимационную картину изменения формы импульса по мере увеличения числа используемых для синтеза гармоник. Выбор используемого числа гармоник осуществляет амплитудный селектор — функция a= f(t,k), основанная на применении функции Хевисайда.

    Применение анимации дает повышенную степень

    Шаг 1

    Применение анимации дает повышенную степень

    Рисунок 12.53. Фазы анимации трехмерной поверхности
    Применение анимации дает повышенную степень визуализации решений ряда задач, связанных с построением двумерных и трехмерных графиков. Следует отметить, что построение анимированных графиков требует дополнительных и достаточно существенных затрат оперативной памяти. Поэтому злоупотреблять числом стоп-кадров таких графиков не стоит.

    Пример построения графика функции линиями

    Шаг 1

    Пример построения графика функции линиями

    Рисунок 12.2. Пример построения графика функции линиями равного уровня
    Обратите внимание на то, что данная функция по умолчанию строит легенду — она видна под графиком в виде линий с надписями. К сожалению, в данном варианте окраски сами контурные линии получаются черными и их невозможно отличить. Однако если убрать параметр filled=true, то контурные линии (и линии легенды) будут иметь разный цвет и легко различаться.
    Функция contourplot позволяет строить и графики ряда функций. Пример такого построения показан на Рисунок 12.3. Множество окружностей на этом рисунке создается четырьмя поверхностями, заданными функциями cl, с2, сЗ и с4.

    с помощью функции arrow

    Шаг 1

    с помощью функции arrow

    Рисунок 12.54. Построение стрелок с помощью функции arrow

    Шаг 1

    Шаг 1

    Шаг 1

    Обычно графики такого типа не

    Шаг 1

    Обычно графики такого типа не

    Рисунок 12.4. Графики плотности и поля векторов
    Обычно графики такого типа не очень выразительны, но имеют свои области применения. К примеру, оттенки окраски полупрозрачной жидкости могут указывать на рельеф поверхности дна емкости, в которой находится эта жидкость.

    показана одна из таких

    Шаг 1

    показана одна из таких

    Рисунок 12.5. Примеры применения функции implidtplot3d
    На Рисунок 12. 6 показана одна из таких фигур. Она поразительно напоминает раковину улитки. Функциональная окраска достигнута доработкой графика с помощью панели форматирования.
    Эта функция может использоваться и для построения ряда трубчатых объектов в пространстве. При этом автоматически задается алгоритм удаления невидимых линий даже для достаточно сложных фигур. Это наглядно иллюстрирует пример на Рисунок 12.7, показывающий фигуру "цепи". Не правда ли, реалистичность этой фигуры поражает воображение?
    Можно долго размышлять о том, как те или иные математические закономерности описывают предметы реального мира, положенные в основу тех или иных геометрических объектов, или, возможно, о гениальности людей, сумевших найти такие закономерности для многих из таких объектов. В наше время Maple 7 открывает огромные возможности для таких людей.

    Построение графика-

    Шаг 1

    Построение графика-

    Рисунок 12.6. Построение графика- "улитки"

    с контурными линиями

    Шаг 1

    с контурными линиями

    Рисунок 12.9. График поверхности с контурными линиями

    с обмоткой

    Шаг 1

    с обмоткой

    Рисунок 12.10. Тор с обмоткой — толстой спиралью

    Пример анимационного построения графика функцией

    Шаг 1

    Пример анимационного построения графика функцией

    Рисунок 12.15. Пример анимационного построения графика функцией animatecurve

    t задана переменная i. Именно

    Шаг 1

    t задана переменная i. Именно

    Рисунок 12.16. Анимация функции sin(i*x)/(i*x) на фоне неподвижной синусоиды
    В документе Рисунок 12.16 строятся две функции — не создающая анимации функция sin(x) и создающая анимацию функция sin(i*x)/(i*x), причем в качестве переменной t задана переменная i. Именно ее изменение и создает эффект анимации. Проигрыватель анимационных клипов и меню, описанные выше, могут использоваться для управления и этим видом анимации. Обратите внимание на вызов графических функций в этом примере командой with и на синтаксис записи этих функций.
    К сожалению, картинки в книгах всегда неподвижны и воспроизвести эффект анимации невозможно. Можно лишь представить несколько текущих кадров анимации. Представленная на Рисунок 12.16 картина соответствует последнему кадру анимации.
    Еще один пример анимации представлен на Рисунок 12.17. Этот документ показывает кадр анимированного процесса улучшения приближения синусоидальной функции рядом с различным числом членов (и порядком последнего члена ряда). Результирующая картина, изображенная на Рисунок 12.17, показывает как приближаемую синусоидальную функцию, так и графики всех рядов, которые последовательно выводятся в ходе анимации.

    показано также контекстное меню

    Шаг 1

    показано также контекстное меню

    Рисунок 12.18. Подготовка трехмерного анимационного графика
    На Рисунок 12. 18 показано также контекстное меню поля выделенного графика. Нетрудно заметить, что с помощью этого меню (и содержащихся в нем подменю) можно получить доступ к параметрам трехмерной графики и выполнить необходимые операции форматирования, такие как включение цветовой окраски, выбор ориентации фигуры и т. д.
    Назначение параметров, как и средств управления проигрывателем анимационных клипов, было описано выше.

    Примеры применения примитивов двумерной графики

    Шаг 1

    Примеры применения примитивов двумерной графики

    Рисунок 12.19. Примеры применения примитивов двумерной графики пакета plottools
    Рисунок 12.20 иллюстрирует построение средствами пакета plottools четырех разноцветных стрелок, направленных в разные стороны. Цвет стрелок задан списком цветов с, определенным после команды загрузки пакета. Для построения стрелок используется примитив arrow с соответствующими параметрами.

    с тонкой обмоткой. Рекомендуется внимательно

    Шаг 2

    с тонкой обмоткой. Рекомендуется внимательно

    Рисунок 12.11. Три пересекающихся тора с разными стилями построения
    Наконец, на Рисунок 12.12 показано построение тора с тонкой обмоткой. Рекомендуется внимательно посмотреть на запись функции tubeplot в этом примере и в примере, показанном на Рисунок 12.11. Можно также поэкспериментировать с управляющими параметрами графика, от которых сильно зависят его представительность и наглядность.

    Анимационная демонстрация приближения синусоиды рядом

    Шаг 2

    Анимационная демонстрация приближения синусоиды рядом

    Рисунок 12.17. Анимационная демонстрация приближения синусоиды рядом с меняющимся числом членов
    Анимация графиков может найти самое широкое применение при создании учебных материалов. С ее помощью можно акцентировать внимание на отдельных параметрах графиков и образующих их функций и наглядно иллюстрировать характер их изменений.

    в составе графических процедур, что

    Шаг 2

    в составе графических процедур, что

    Рисунок 12.20. Построение разноцветных стрелок, направленных в разные стороны
    Примитивы могут использоваться в составе графических процедур, что позволяет конструировать практически любые типы сложных графических объектов. В качестве примера на Рисунок 12.21 представлена процедура SmithChart, которая строит хорошо известную электрикам диаграмму Смита (впрочем, несколько упрощенную). В этой процедуре используется примитив построения дуг arc. При этом задается верхняя часть диаграммы, а нижняя получается ее зеркальным отражением.
    Примечание 1
    Примечание 1


    Обратите внимание на то, что, начиная с Рисунок 12.21, мы не указываем загрузку паета plottools, поскольку она уже была проведена ранее. Однако надо помнить, что все примеры этого раздела предполагают, что такая загрузка обеспечена. Если вы использовали команду restart или только что загрузили систему Maple 7, то для исполнения примера Рисунок 12.21 и последующих примеров надо исполнить команду with(plottools).

    Построение двух объемных фигур

    Шаг 2

    Построение двух объемных фигур

    Рисунок 12.23. Построение двух объемных фигур

    Построение фигуры

    Шаг 2

    Построение фигуры

    Рисунок 12.26. Построение фигуры "улитка"

    Пример анимации двумерной графики

    Шаг 2

    Пример анимации двумерной графики

    Рисунок 12.29. Пример анимации двумерной графики

    Шаг 2

    Шаг 2

    Шаг 2

    Расположение корней случайного полинома на

    Шаг 2

    Расположение корней случайного полинома на

    Рисунок 12.37. Расположение корней случайного полинома на комплексной плоскости
    Можно заметить любопытную закономерность — точки, представляющие корни случайного полинома, укладываются вблизи окружности единичного радиуса с центром в начале координат. Однако этот пример, приводимый в ряде книг по Maple, показывает, что порою вычисления могут давать довольно неожиданные результаты. Кстати говоря, аналитически можно вычислять корни полинома с максимальной степенью не более четырех.

    к заданной точке графика функции

    Шаг 2

    к заданной точке графика функции

    Рисунок 12.40. Построение касательной и перпендикуляра к заданной точке графика функции f(x)

    построенный график будет иметь вид,

    Шаг 2

    построенный график будет иметь вид, построенный график будет иметь вид, представленный на Рисунок 12.43 (естественно, в книге цвета — лишь оттенки серого).
    Рисунок 12.43 дает наглядное представление о поведении заданной функции. Рекомендуется опробовать данную процедуру на других функциях. Следует отметить, что, поскольку процедура использует функции ntiroimize и maximize, она может давать сбои при исследовании сложных функций, содержащих специальные математические функции или особенности. Иногда можно избежать такой ситуации, исключив особенность. Например, для анализа функции sin(x)/x можно записать ее в виде:
    >f:=x->if x=0 then 1 else sin(x)/x
    end if;
    shape_plot(f(x),-10,10);
    Исполнение приведенной выше строки ввода дает график, представленный на Рисунок 12.44.

    Параметрами этой процедуры являются: f1

    Шаг 2

    Параметрами этой процедуры являются: f1 Параметрами этой процедуры являются: f1 — функция f(x); а и b — пределы изменениях при построении графика; х0 — значение х, с которого начинаются итерации. Исполнив команду:
    >rec_p1ot( f(x), 0, 8, х0):
    можно наблюдать график, иллюстрирующий итерационный процесс. Он представлен на Рисунок 12.45.

    Семейство шестилепестковых кардиоид

    Шаг 2

    Семейство шестилепестковых кардиоид

    Рисунок 12.47. Семейство шестилепестковых кардиоид

    Построение сложных фигур, заданных импликативными

    Шаг 2

    Построение сложных фигур, заданных импликативными

    Рисунок 12.49. Построение сложных фигур, заданных импликативными функциями

    в этом примере оказывается наблюдение

    Шаг 2

    в этом примере оказывается наблюдение

    Рисунок 12.51. Второй (завершающий) кадр анимации
    Самым интересным в этом примере оказывается наблюдение за зарождением и эволюцией эффекта Гиббса — так называют волнообразные колебания на вершине импульса, связанные с ограничением числа гармоник при синтезе сигнала. С ростом числа гармоник эффект Гиббса не исчезает, просто обусловленные им выбросы вблизи разрывов импульса становятся более кратковременными. Амплитуда импульсов может достигать 18% от амплитуды перепадов сигнала, что сильно ухудшает приближение импульсных сигналов рядами Фурье и вынуждает математиков разрабатывать особые меры по уменьшению эффекта Гиббса.
    Можно ли наблюдать одновременно все фазы анимации? Можно! Для этого достаточно оформить анимационную картину, созданную функцией animate, в виде отдельного графического, объекта например g, после чего можно вывести все его фазы оператором display. Это и иллюстрирует Рисунок 12.52. На этот раз задано f(x) = signum(x-l/2) и N = 25. Таким образом рассматриваются симметричные прямоугольные импульсы - меандр. У каждого рисунка координатные оси с делениями удалены параметром axes=none.

    Пример построения графиков многих функций

    Шаг 2

    Пример построения графиков многих функций

    Рисунок 12.3. Пример построения графиков многих функций линиями равного уровня
    ВНИМАНИЕ
    Обратите внимание, что на многих графиках Maple 7 по умолчанию вписывает легенду,то есть список линий с обозначениями. Иногда (как, например, на Рисунок 12.3) этот список оказывается просто некстати. Легенду можно убрать, расширив заодно место для графика, сняв флажок Show Legend в меню Legend, которое появляется при двойном щелчке на графике (это меню видно на Рисунок 12.3). То же самое можно сделать с помощью той же команды в контекстном меню. Заодно запомните, что легенду можно редактировать, выполнив команду Edit Legend.
    Следует отметить, что хотя графики в виде линий равного уровня выглядят не так эстетично и естественно, как обычные графики трехмерных поверхностей (ибо требуют осмысления результатов), у них есть один существенный плюс - экстремумы функций на таких графиках выявляются порой более четко, чем на обычных графиках. Например, небольшая возвышенность или впадина за большой "горой" на обычном графике может оказаться невидимой, поскольку заслоняется "горой". На графике линий равного уровня этого эффекта нет. Однако выразительность таких графиков сильно зависит от числа контурных линий.

    Пример построения сложного объекта, состоящего

    Шаг 2

    Пример построения сложного объекта, состоящего

    Рисунок 12.55. Пример построения сложного объекта, состоящего из 8 графических и текстовых объектов
    Представленный на Рисунок 12.55 объект задает построение восьми графических объектов от р! до р8. Среди них цилиндр, две пересекающие его плоскости и иные (в том числе текстовые) объекты. Обратите внимание на способ вывода этих объектов функцией display3d. Этот пример показывает, что с помощью графических программных средств Maple 7 можно строить достаточно замысловатые графики, которые могут использоваться для визуализации тех или иных геометрических и иных объектов.

    с применением функции tubeplot

    Шаг 2

    с применением функции tubeplot

    Рисунок 12.7. Фигура "цепи", построенная с применением функции tubeplot

    В ряде случаев наглядно представленные

    Шаг 3

    В ряде случаев наглядно представленные

    Рисунок 12.12. Тор с тонкой обмоткой
    В ряде случаев наглядно представленные фигуры можно строить путем объединения однотипных фигур. Пример графика подобного рода представлен на Рисунок 12.13. Здесь готовится список графических объектов s, смещенных по вертикали. С помощью функции display они воспроизводятся на одном графике, что повышает реалистичность изображения.
    Последний пример имеет еще одну важную особенность — он иллюстрирует задание графической процедуры, в теле которой используются функции пакета plots. Параметр п этой процедуры задает число элементарных фигур, из которых строится полная фигура. Таким образом, высотой фигуры (или шириной "шины") можно управлять. Возможность задания практически любых графических процедур средствами Maple-языка существенно расширяет возможности Maple.
    Наглядность таких графиков, как графики плотности и векторных полей может быть улучшена их совместным применением. Такой пример показан на Рисунок 12.14.

    Построение диаграммы Смита

    Шаг 3

    Построение диаграммы Смита

    Рисунок 12.21. Построение диаграммы Смита

    Примеры применения примитивов трехмерной графики

    Шаг 3

    Примеры применения примитивов трехмерной графики

    Рисунок 12.24. Примеры применения примитивов трехмерной графики пакета plottools
    Построение еще одной забавной трехмерной фигуры — "шкурки ежа" — демонстрирует Рисунок 12.25. В основе построения лежит техника создания полигонов. Построение фигур, очень напоминающих улитки, показано на Рисунок 12.26. При построении этих фигур используется функция tubeplot. Обратите внимание на то, что строятся две входящие друг в друга "улитки".
    Наконец, на Рисунок 12.27 показано построение фигуры — бутылки Клейна. Фигура задана рядом своих фрагментов, определенных в процедуре cleinpoints. Эта процедура является еще одним наглядным примером программирования графических построений с помощью Maple-языка.
    С другими возможностями этого пакета читатель теперь справится самостоятельно или с помощью данных справочной системы. Много примеров построения сложных и красочных фигур с применением пакета plottools можно найти в Интернете на сайте фирмы Maple Software, в свободно распространяемой библиотеке пользователей системы Maple и в книгах по этой системе.

    В этом примере полезно обратить

    Шаг 3

    В этом примере полезно обратить

    Рисунок 12.27. Построение фигуры "бутылка Клейна"
    В этом примере полезно обратить внимание еще и на функцию поворота фигуры — rotate. Именно сочетание этих двух функций (мультиплицирования и поворота базовой фигуры — прямоугольника) позволяет получить сложную фигуру, показанную на Рисунок 12.28.

    Имитация отстрела шара сжатой упругой

    Шаг 3

    Имитация отстрела шара сжатой упругой

    Рисунок 12.30. Имитация отстрела шара сжатой упругой системой
    Управление анимацией, реализованной средствами пакета plottools, подобно уже описанному ранее. Последний пример также прекрасно иллюстрирует возможности применения Maple 7 при математическом моделировании различных явлений, устройств и систем.

    Конформное отображение на комплексной плоскости

    Шаг 3

    Конформное отображение на комплексной плоскости

    Рисунок 12.34. Конформное отображение на комплексной плоскости графиков трех зависимостей
    Средства конформного отображения в Maple 7, к сожалению, остаются рудиментарными и вряд ли достаточными для специалистов в этой области математики.

    Визуализация поведения функции

    Шаг 3

    Визуализация поведения функции

    Рисунок 12.43. Визуализация поведения функции f(х)

    Нетрудно заметить, что для данной

    Шаг 3

    Нетрудно заметить, что для данной

    Рисунок 12.45. Иллюстрация процесса итераций
    Нетрудно заметить, что для данной функции процесс итераций хотя и не очень быстро, но уверенно сходится к точке пересечения прямой у = х и кривой y=f(x). Вы можете, меняя зависимость f(x), провести исследования сходимости уравнений х = f(x).

    волнообразная спираль

    Шаг 3

    волнообразная спираль

    Рисунок 12.48. Фигура— волнообразная спираль

    Иллюстрация получения всех кадров анимации

    Шаг 3

    Иллюстрация получения всех кадров анимации

    Рисунок 12.52. Иллюстрация получения всех кадров анимации двумерного графика
    Любопытно отметить, что при определенных числах гармоник связанная с колебательными процессами неравномерность вершины импульса резко уменьшается. Наблюдение этого явления и является наиболее интересным и поучительным при просмотре данного примера.
    При внимательном просмотре Рисунок 12.52 заметно, что после некоторого периода установления фазы анимационной картинки практически повторяются. Это связано с известным обстоятельством — установившийся спектр меандра содержит только нечетные гармоники. Поэтому, к примеру, вид спектрального разложения при 22 гармониках будет тот же, что и при 21 гармонике, при 24 гармониках тот же, что при 23, и т. д. Однако эта закономерность проявляется только при установившемся (стационарном) спектре.

    Все сказанное об особенностях таких

    Шаг 3

    Все сказанное об особенностях таких

    Рисунок 12.8. Построение поля в трехмерном пространстве с помощью векторов
    Все сказанное об особенностях таких двумерных графиков остается справедливым и для графиков трехмерных. В частности, для обеспечения достаточной наглядности нужно тщательно отлаживать форматы представления таких графиков.

    Построение фигуры, напоминающей шину автомобиля

    Шаг 4

    Построение фигуры, напоминающей шину автомобиля

    Рисунок 12.13. Построение фигуры, напоминающей шину автомобиля

    Данная процедура дает хорошие результаты

    Шаг 4

    Данная процедура дает хорошие результаты

    Рисунок 12.44. Визуализация поведения функции sin(x)/x
    Данная процедура дает хорошие результаты при анализе функций, представленных полиномами. Вы можете сами убедиться в этом.

    Пример совместного применения графиков плотности

    Шаг 5

    Пример совместного применения графиков плотности

    Рисунок 12.14. Пример совместного применения графиков плотности и векторного поля
    Этот пример иллюстрирует использование "жирных*- стрелок .для обозначения векторного поля. Наглядность графика повышается благодаря наложению стрелок на график плотности, который лучше, чем собственно стрелки, дает представление о плавности изменения высоты поверхности, заданной функцией.

    Цвета при визуализации в процедуре shape_plot

    Таблица 12.1. Цвета при визуализации в процедуре shape_plot

    Изменение /(х)
    Цвет
    Возрастание
    Синий
    Убывание
    Красный
    Площадь
    Цвет
    Над минимумом
    Зеленый
    Под максимумом
    Коралловый
    Например, для функции:

    Техника анимирования графиков

    Техника анимирования графиков

    Анимация двумерных графиков
    Визуализация графических построений и результатов моделирования различных объектов и явлений существенно повышается при использовании средств "оживления" "(анимации) изображений. Пакет plots имеет две простые функции для создания анимированных графиков.
    Первая из этих функций служит для создания анимации графиков, представляющих функцию одной переменной F(x):
    animatecurve(F, r, ...)
    Эта функция просто позволяет наблюдать медленное построение графика. Формат ее применения подобен используемому в функции plot. При вызове данной функции вначале строится пустой шаблон графика. Если активизировать шаблон мышью, то в строке главного меню появляется меню Animation. Меню Animation содержит команды управления анимацией. Такое же подменю появляется и в контекстном (Рисунок 12.15). Указанное подменю содержит следующие команды анимации:

  • Play — запуск построения графика;
  • Next — выполнение следующего шага анимации;
  • Backward/Forward — переключение направления анимации (назад/вперед);
  • Faster — ускорение анимации;
  • Slower — замедление анимации;
  • Continiuus/Singlecycle — цикличность анимации.
  • При исполнении команды Play происходит построение кривой (или нескольких кривых). В зависимости от выбора команд Faster или Slower построение идет быстро или медленно. Команда Next выполняет один шаг анимации -построение очередного фрагмента кривой. Переключатель Backward/Forward позволяет задать направление построения кривой - от начала к концу или от конца к началу. Построение может быть непрерывным или циклическим в зависимости от состояния позиции Continiuus/Singlecycle в подменю управления анимацией. При циклической анимации число циклов задается параметром frames=n.

    Техника визуализации сложных пространственных фигур

    Техника визуализации сложных пространственных фигур

    Приведенные выше достаточно простые примеры дают представление о высоком качестве визуализации геометрических фигур с помощью пакета plots. Здесь мы рассмотрим еще несколько примеров визуализации трехмерных фигур. Многие видели катушки индуктивности, у которых провод того или иного диаметра намотан на тороидальный магнитный сердечник. Некую математическую абстракцию такой катушки иллюстрирует Рисунок 12.10.
    В документе Рисунок 12.10 для функции tubeplot использовано довольно большое число параметров. Не всегда их действие очевидно. Поэтому на Рисунок 12.11 показано построение трех взаимно пересекающихся торов с разными наборами параметров. Этот рисунок дает также наглядное представление о возможности построения нескольких графических объектов (представленных функциями pi, р2 и рЗ) с помощью функции tubeplot.

    Трехмерный график типа implicitplot3d

    Трехмерный график типа implicitplot3d

    Трехмерные поверхности также могут задаваться уравнениями неявного вида. В этом случае для построения их графиков используется функция implicitplot3d:
    implicitplot3d(exprl,x=a..b,y=c.,d,z=p..q,)
    implicitplot3d(f,a..b,c..d,p..q,)
    На Рисунок 12.5 показаны два примера построения объемных фигур с помощью функции implicitplot3d.
    Эти примеры хорошо иллюстрируют технику применения функции implicitplot3d. С ее помощью можно строить весьма своеобразные фигуры, что, впрочем, видно и из приведенных примеров. Для наглядности фигур на Рисунок 12.5 они несколько развернуты в пространстве с помощью мыши.

    Визуализация дифференциальных параметров кривых

    Визуализация дифференциальных параметров кривых

    Дифференциальные параметры функции f(x), описывающей некоторую кривую, имеют большое значение для анализа ее особых точек и областей существования. Так, точки с нулевой первой производной задают области, где кривая нарастает (первая производная положительна) или убывает (первая производная отрицательна) с ростом аргументах. Нули второй производной задают точки перегиба кривой.
    Следующая графическая процедура служит для визуализации поведения кривой /, = /(.г) на отрезке изменениях от а до b:

    Визуализация корней случайных полиномов

    Визуализация корней случайных полиномов.

    Наряду с традиционной для математических и статистических программ возможностью генерации случайных чисел Maple 7 предоставляет довольно экзотическую возможность генерации случайных полиномов с высокой максимальной степенью. Для этого используется функция:
    randpoly(var,o)
    Она возвращает случайный полином переменной var, причем максимальная степень полинома птах может указываться параметром о вида degree=nmax.
    Приведем примеры генерации случайного полинома с максимальной степенью 50:

    Визуализация ньютоновских итераций в комплексной области

    Визуализация ньютоновских итераций в комплексной области

    Теперь займемся довольно рискованным экспериментом — наблюдением ньютоновских итераций с их представлением на комплексной плоскости. На Рисунок 12.36 задана функция /(г) комплексного аргумента. Проследить за поведением этой функции на комплексной плоскости в ходе ньютоновских итераций позволяет графическая функция complexplot3d из пакета plots.
    Наблюдаемая картина весьма необычна и свидетельствует о далеко не простом ходе итерационного процесса.

    Визуализация построения касательной и перпендикуляра

    Визуализация построения касательной и перпендикуляра

    В ряде геометрических построений нужно отроить касательную и перпендикуляр к кривой, отображающей произвольную функцию f(x) в заданной точке х =а. Рисунок 12.40 поясняет, как это можно сделать. Линии касательной Т(х) и перпендикуляра N(x) определены аналитически через производную в заданной точке.
    Во избежание геометрических искажений положения касательной и перпендикуляра при построении графика функцией plot надо использовать параметр scaling=constrained.

    Визуализация поверхностей со многими экстремумами

    Визуализация поверхностей со многими экстремумами

    Maple 7 дает прекрасные возможности для визуализации поверхностей, имеющих множество пиков и впадин, другими словами, экстремумов. Рисунок 12.38 показывает задание "вулканической" поверхности с глубокой впадиной, окруженной пятью пиками. Здесь полезно обратить внимание на способ задания такой поверхности f(a, b, с) как функции трех переменных a, b и с. Он обеспечивает индивидуальное задание координат каждого экстремума и его высоты (отрицательной для впадины).

    Визуализация решения систем линейных уравнений

    Визуализация решения систем линейных уравнений

    Мы уже не раз использовали графические возможности Maple для визуализации решений математических задач. Так, многие особенности даже функций одной переменной вида f(x) могут быть выявлены с помощью графика этой функции. Затем можно точно вычислить корни функции (точки перехода через 0), экстремумы, "крутизну наклона (производную) в заданных точках и т. д. Еще более информативна в этом отношении трехмерная графика — для большинства функций двух переменных вида z(x, у) нужно очень богатое математическое воображение, чтобы представить их вид — особенно в одной из многих десятков координатных систем.
    Однако некоторые виды графиков трудно представить себе даже при наличии такого воображения. В этом отношении Maple 7 предоставляет поистине уникальные возможности, обеспечивая простую и быструю визуализацию решений. Ниже мы рассмотрим несколько наиболее характерных примеров такой визуализации. Системы линейных уравнений могут решаться как с помощью функции solve, так и с помощью матричных методов. Замечательной возможностью функции solve является возможность решения относительно ограниченного числа переменных. Например, систему линейных уравнений с переменными х, у, z, t и v можно решить относительно только первых трех переменных х, у и г. При этом решения будут функциями относительно переменных t и v и можно будет построить наглядный график решения (Рисунок 12.32).

    Визуализация решения систем неравенств

    Визуализация решения систем неравенств

    Пожалуй, еще более полезным и наглядным средством является визуализация решения системы уравнений в виде неравенств. В пакете plots имеется специальная графическая функция inequal, которая строит все граничные линии неравенств и позволяет раскрасить разделенные ими области различными цветами:
    inequal(ineqs, xspec, yspec, options)
    Параметры этой функции следующие: ineqs — одно или несколько неравенств или равенств или список неравенств или равенств; xspec — xvar=min_x. .max_x; yspec — yvar=min_y. .max_y; о — необязательные параметры, например указывающие цвета линий, представляющих неравенства или равенства, и областей, образованных этими линиями и границами графика. Пример применения этой функции представлен на Рисунок 12,33.

    Визуализация теоремы Пифагора

    Визуализация теоремы Пифагора

    Еще один пример наглядного геометрического представления математических понятий — визуализация известной теоремы Пифагора (Рисунок 12.42).
    В этом примере используется функция построения многоугольников. Наглядность построений усиливается выбором разной цветовой окраски треугольников и квадрата.

    Визуализация вычисления определенных интегралов

    Визуализация вычисления определенных интегралов

    Часто возникает необходимость в геометрическом представлении определенных интегралов в виде алгебраической суммы площадей, ограниченных кривой подынтегральной функции f(x), осью абсцисс х и вертикалями х =а их =b (пределами интегрирования). При этом желательно обеспечение закраски верхней и нижней (отрицательной и положительной) площадей разными цветами, например зеленым для верхней площади и красным для нижней. Как известно, численное значение определенного интеграла есть разность этих площадей.
    К сожалению, в Maple 7 нет встроенной функции, явно дающей такое построение. Однако ее несложно создать. На Рисунок 12.41 представлена процедура a_plot, решающая эту задачу. Параметрами процедуры являются интегрируемая функция/(д:) (заданная как функция пользователя), пределы интегрирования а и b и пределы слева am и справа bm, задающие область построения графика f(x).
    Рисунок 12.41 дает прекрасное представление о сущности интегрирования для определенного интеграла. Приведенную на этом рисунке процедуру можно использовать для подготовки Эффектных уроков по интегрированию разных функций.

    Основные средства решения дифференциальных уравнений

    Численное решение дифференциальных уравнений

    Численное решение дифференциальных уравнений

    Большинство нелинейных дифференциальных уравнений не имеет аналитического решения. Кроме того, часто аналитическое решение и не нужно, но требуется получить ответ в виде графических зависимостей.
    В таких случаях для решения дифференциальных уравнений в численном виде используется функция dsolve с параметром numeric или type=numeric. При этом решение возвращается в виде специальной процедуры, по умолчанию реализующей широко известный метод решения дифференциальных уравнений Рунге—Кутта—Фелберга порядков 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) при попытке решения заданной системы дифференциальных уравнений. Последнее достаточно наглядно иллюстрирует Рисунок 13.2.

    Дифференциальные уравнения с кусочными функциями

    Дифференциальные уравнения с кусочными функциями

    Функции кусочного типа широко используются при математическом моделировании различных физических объектов и систем. В основе такого моделирования обычно лежит решение дифференциальных уравнений, описывающих поведение объектов и систем. Покажем возможность применения кусочных функций для решения дифференциальных уравнений.
    Ниже представлено задание дифференциального уравнения первого порядка, содержащего кусочную функцию:

    Функция DEplot из пакета DEtools

    Функция DEplot из пакета DEtools

    Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функций для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot. Функция DEplot может записываться в нескольких формах:
    DEplot(deqns, vars. trange. eqns)
    DEplot(deqns, vans, trange. inits. eqns)
    DEplot(deqns. vars. trange, уrange, xrgnge, eqns) .
    DEplot(deqns. vars, trange. Inits, xrange. yrange, eqns)
    Здесь deqns — список или множество, содержащее систему дифференциальных уравнений первого порядка или одиночное уравнение любого порядка; vars — зависимая переменная или список либо множество зависимых переменных; trange — область изменения независимой переменной t; Inits — начальные условия для решения; yrange — область изменения для первой зависимой переменной, xrange — область изменения для второй зависимой переменной; eqns — опция, записываемая в виде keyword-value. Замена имен переменных другими в данном случае недопустима.
    Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти графики строятся в виде векторного поля направлений, а для неавтономных систем — только в виде кривых решения. По умолчанию реализуется метод Рунге—Кутта 4-го порядка, что соответствует опции methodiclassical[rk4]. С функцией DEplot могут использоваться следующие параметры:
  • arrows = type — тип стрелки векторного поля ('SMALL', 'MEDIUM', 'LARGE', 'LINE'
  • или 'NONE');
  • colour, color = arrowcolour — цвет стрелок (задается 7 способами);
  • dirgrid = [integer,integer] — число линий сетки (по умолчанию [20, 20]);
  • iterations = integer — количество итераций, представленное целым числом;
  • linесоlor, linecolor = lineinfo — цвет линии (задается 5 способами);
  • method='rk4' — задает метод решения ('euler', 'backeuler', 'impeuler' или 'rk4');
  • obsrange = TRUE.FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора;
  • scene = [name.name] — задает имена зависимых переменных, для которых строится график;
  • stepsize = h — шаг решения, по умолчанию равный abs((b-a))/20 и представленный вещественным значением.
  • На Рисунок 13.8 показано решение системы диффкренциальных уравнений
    x'(t)=x(t)(1-y(t)
    y'(t)= 0,3y(t)(x(t)-1),
    описывающих модель Лотки—Вольтерра при заданных в документе изменениях t, x(t) и y(t). Решение представлено в виде векторного поля стрелки которого являются касательными к кривым решения (сами эти кривые не строятся). Обратите внимание на функциональную закраску стрелок векторного поля, делающую решение особенно наглядным (правда, лишь на экране цветного дисплея, а не на страницах книги).

    Функция DEplotSd из пакета DEtools

    Функция DEplotSd из пакета DEtools

    В ряде случаев решение систем дифференциальных уравнений удобно представлять в виде пространственных кривых — например, линий равного уровня или просто в виде кривых в пространстве. Для этого служит функция DEplot3d:
    DEplot3d(deqns, vars, trarige, initset, о)
    DEplot3d(deqns, vars, trang, yrange, xrange, initset, o)
    Назначение параметров этой функции аналогично указанному для функции DEplot.
    Рисунок 13.10 поясняет применение функции DEPlqt3d для решения системы из двух дифференциальных уравнений с выводом фазового портрета колебаний в виде параметрически заданной зависимости x(t), y(t). В данном случае фазовый портрет строится на плоскости по типу построения графиков/линий равной высоты.
    Другой пример (Рисунок 13.11) показывает решение системы из двух дифференциальных уравнений с построением объемного фазового портрета. В этом случае используется трехмерная координатная система и графические построения соответствуют параметрическим зависимостям x(t), y(t) и z(t). Вид фазового портрета напоминает разворачивающуюся в пространстве объемную, спираль.
    Функциональная окраска делает график пикантным.

    Функция PDEplot пакета DEtools

    Функция PDEplot пакета DEtools

    Еще одна функция пакета DEtools — DEtools[PDEp1ot] — служит для построения графиков решения систем с квазилинейными дифференциальными уравнениями первого порядка в частных производных.
    Эта функция используется в следующем виде:
    PDEplotCpdiffeq, van, i_curve, srange, о)
    PDEplot(pdiffeq, var, i_curve. srange, xrange, yrange, urange, o)

    Графическая функция dfieldplot

    Графическая функция dfieldplot

    Графическая функция dfieldplot служит для построения поля направления с помощью векторов по результатам решения дифференциальных уравнений. Фактически эта функция как бы входит в функцию DEplot и при необходимости вызывается последней. Но она может использоваться и самостоятельно, что демонстрирует Рисунок 13.14, на котором показан пример решения следующей системы дифференциальных уравнений:
    x'(t) =x(t)(1- y(t)),
    y'(t) = 0,3y(t)(x(t) - 1).

    Графическая функция phaseportrait

    Графическая функция phaseportrait

    Графическая функция phaseportrait служит для построения фазовых портретов по результатам решения одного дифференциального уравнения или системы дифференциальных уравнений deqns. Она задается в следующем виде:
    phaseportrait(deqns,vars,traf,1n1ts,o)
    При задании уравнений достаточно указать их правые части. На Рисунок 13.15 представлен пример применения функции phaseportrait для решения системы из трех дифференциальных уравнений первого порядка.
    В этом примере система дифференциальных уравнений задана с помощью оператора дифференцирования D. Функциональная окраска линии фазового портрета достигается использованием параметра linecolor, в правой части которого задана формула для цвета.

    Графическое представление решений дифференциальных уравнений

    Графическое представление решений дифференциальных уравнений

    Применение функции odeplot пакета plots
    Для обычного графического представления результатов решения дифференциальных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде:
    odep1ot(s,vars.r,o)
    где s — запись (в выходной фирме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars — переменные, г — параметр, задающий пределы решения (например, а. .Ь), и о — необязательные дополнительные опции.
    На Рисунок 13.5 представлен пример решения одиночного дифференциального уравнения с выводом решения у(х) с помощью функции odeplot.
    В этом примере решается дифференциальное уравнение:
    y'(x)=cos(x2y(x))
    при у(0) = 2 и x, меняющемся от-5 до 5. Левая часть уравнения записана с помощью функции вычисления производной diff. Результатом построения является график решения у(х).
    В другом примере (Рисунок 13.6) представлено решение системы из двух нелинейных дифференциальных уравнений. Здесь с помощью функции odeplot строятся графики двух функций. —у(х) и z(x).
    В этом примере решается система:
    у'(х)=z(х),
    z'(x) = 3 sin(y(x))
    при начальных условиях y(0)=0, z(0) = 1 их, меняющемся от -4 до 4 при числе точек решения, равном 25.
    Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазового портрета — при этом по осям графика откладываются значения у(х) и z(х) при изменении х в определенных пределах. Рисунок 13.7 демонстрирует построение фазового портрета для системы, представленной выше.
    Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок; для построения, поэтому возможность Марle 7 быстро строить фазовые портреты трудно переоценить.

    Инструментальный пакет решения

    Инструментальный пакет решения дифференциальных уравнений DEtools

    Средства пакета DEtools
    Решение дифференциальных уравнений самых различных типов — одно из достоинств системы Maple 7. Пакет DEtools предоставляет ряд полезных функций для решения дифференциальных уравнений и систем с такими уравнениями:
    > with(DEtools);
    Warning, the name adjoint has been redefined
    [DEnormal, DEplot, DEplot3d, DEplot_pofygon, DFactor, DFactorLCLM, DFactorsols, Dchangevar, GCRD, LCLM, PDEchangecoords, RiemannPsols, Xchange, Xcommutator, Xgauge, abelsoL, adjoint, autonomous, bernoullisol, buildsol, buildsym, canoni, caseplqt, casesplit, checkrank, chinisol, clairautsol, constcoeffsols, convertAlg, convertsys, dalembertsol, dcoeffs, de2diffop, dfieldplot, diffop2de, dsubs, eigenring, endomorphism_charpoly, equinv, etajc, eulersols, exactsol, expsols, exterior'_power,firint,firtest, formal_sol, gen_exp, generate_ic, genhomosol, gensys, hamilton_eqs, indicialeq, infgen, initialdata, integrate_sols, intfactor, Invariants, kovacicsols, leftdivision, liesol, line_int, linearsol, matrixDE, matrix_riccati, moserjreduce, muchange, mult, mutest, newtonjpolygon, normalG2, odeadvisor, odepde, parametricsol, phaseportrait, poincare, polysols, ratsols, redode, reduceOrder, reduce_order, regular_parts, regularsp, remove_RootOf, riccati_system, riccatisol, rifsimp, rightdivision, rtaylor, separablesol, solvejgroup, super_reduce, symgen, symmetric_po\ver, symmetric^product, symtest, transinv, translate, untranslate, varparam, zoom]
    Этот пакет дает самые изысканные средства для аналитического и численного решения дифференциальных уравнений и систем с ними. По сравнению с версией Maple V R5 число функций данного пакета в Maple 7 возросло в несколько раз. Многие графические функции пакета DEtools были уже описаны. Ниже приводятся полные наименования тех функций, которые есть в реализациях R5, 6 и 7 системы Maple:

  • DEnormal — возвращает нормализованную форму дифференциальных уравнений;
  • DEplot — строит графики решения дифференциальных уравнений;
  • DEplot3d — строит трехмерные графики для решения систем дифференциальных уравнений;
  • Dchangevar — изменение переменных в дифференциальных уравнениях;
  • PDEchangecoords — изменение координатных систем для дифференциальных уравнений в частных производных;
  • PDEpTot — построение графиков решения дйффереациальых уравнений в частных производных;
  • autonomous — тестирует дифференциальные уравнения на автономность;
  • convertAlg — возвращает список коэффициентов для дифференциальных уравнений;
  • convertsys — преобразует систему дифференциальных уравнений в систему одиночных уравнений;
  • dfieldplot — строит график решения дифференциальных уравнений в виде векторного поля;
  • indicialeq — преобразует дифференциальные уравнения в полиномиальные;
  • phaseportrait — строит график решения дифференциальных уравнений в форме фазового портрета;
  • reduceOrder — понижает порядок дифференциальных уравнений;
  • regularsp — вычисляет регулярные особые точки для дифференциальных уравнений второго порядка;
  • translate — преобразует дифференциальные уравнения в список операторов;
  • untranslate — преобразует список операторов в дифференциальные уравнения;
  • varparam — находит общее решение дифференциальных уравнений методом вариации параметров.
  • Применение этих функций гарантирует совместимость документов реализаций Maple R5, 6 и 7.

    Контроль уровня вывода решения ДУ

    Контроль уровня вывода решения ДУ

    Для углубленного анализа аналитического решения ДУ (или системы ДУ) можно использовать специальную возможность управления уровнем вывода решения с помощью системной переменной infilevel(dsolve)=level. Значение level =all дает обычный вывод решения без Комментариев, уровень 1 зарезервирован для информации, которую может сообщить пользователь, уровень 2 или 3 дает более детальный вывод (включая сообщения об использованном алгоритме и технике решения) и, наконец, уровни 4 и 5 дают наиболее детальную информацию (если тиковая есть в дополнение к той информации, которую дает уровень 2 или 3).
    Приведем пример .аналитического решения ДУ третьего порядка с контролем уровня вывода решения:

    Основные функции пакета DEtools

    Основные функции пакета DEtools

    Ввиду обилия функций пакета DEtools дать их полное описание в данной книге не представляется возможным. Поэтому выборочно рассмотрим наиболее важные функции этого пакета. Функция:
    autonomous(des.vars,ivar)
    тестирует дифференциальное уравнение (или систему) des. Ее параметрами помимо des являются независимая переменная ivar и зависимая переменная dvar. Следующие примеры поясняют применение этой функции:
    > automou(sin(z(t)-z(t)^2)*(D@@4)(z)(t)-cos(z(t))-5,z.t);
    true
    > DE:=diff(x(s),s)-x(s)*cos(arctan(x(s)))=arctan(s):
    > autonomous(DE.{x},s);
    false
    Функция Dchangevar используется для обеспечения замен (подстановок) в дифференциальных уравнениях:
    Dchangevar(trans,deqns, c_tvar, rMvar)
    Dchangevar(tranl, tran2, .... tranN, deqns, c_ivar, n_ivar)
    В первом случае trans — список или множество уравнений, которые подставляются в дифференциальное уравнение, список или множество дифференциальных уравнений deqns. При этом c_ivar — имя текущей переменной, n_ivar — имя новой переменной (его задавать необязательно). Во второй форме для подстановки используются уравнения tranl, tran2, .... Ниже представлены примеры применения функции Dchangevar:

    Основные средства решения дифференциальных уравнений

    Основные средства решения дифференциальных уравнений

    Основная функция dsolve
    Важное место в математических расчетах занимает решение дифференциальных уравнений. К нему, в частности, обычно относится анализ поведения различных систем во времени (анализ динамики), а также вычисление различных полей (тяготения, электрических зарядов и т. д.). Трудно переоценить роль дифференциальных уравнений в моделировании физических и технических объектов и систем, Maple 7 позволяет решать одиночные дифференциальные уравнения и системы дифференциальных уравнений как аналитически, так и в численном виде. Разработчиками системы объявлено о существенном расширении средств решения дифференциальных уравнений и о повышении их надежности в смысле нахождения решений для большинства классов дифференциальных уравнений. Поэтому данный урок целиком посвящен решению уравнений данного класса. Для решения системы простых дифференциальных уравнений (задача Коши) используется функция dsolve в разных формах записи:
    dsolve(ODE)
    dsolve(ODE, y(x), extra_args)
    dsolve((ODE, ICs}, y(x), extra_args)
    dsolve({sysODE, ICs}, {funcs}, extra_args)
    Здесь ODE — одно обыкновенное дифференциальное уравнение или система из дифференциальных уравнений первого порядка с указанием начальных условий, у(х) — функция одной переменной, Ics — выражение, задающее начальные условия, {sysODE} —множество дифференциальных уравнений, {funcs} —множество неопределенных функций, extra_argument — опция, задающая тип решения. Параметр extra_argument задает класс решаемых уравнений. Отметим основные значения этого параметра:

  • exact — аналитическое решение (принято по умолчанию);
  • explicit — решение в явном виде;
  • system — решение системы дифференциальных уравнений;
  • ICs — решение системы дифференциальных уравнений с заданными начальными условиями;
  • formal series — решение в форме степенного многочлена;
  • integral transform — решение на основе интегральных преобразований Лапласа, Фурье и др.;
  • series — решение в виде ряда с порядком, указываемым значением переменной Order;
  • numeric — решение в численном виде.
  • Для решения задачи Коши в параметры dsolve надо включать начальные условия, а при решении краевых задач — краевые условия. Если Maple способна найти решение при числе начальных или краевых условий меньшего порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т. д. Они же могут быть при аналитическом решении системы, когда начальные условия не заданы. Если решение найдено в неявном виде, то в нем появится параметр _Т.
    По умолчанию функция dsolve автоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функции dsolve в квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений. Допустимы следующие методы:
    quadrature linear Bernoulli separable
    inverse linear
    homogeneous
    Chini
    lin_sym
    exact Abel pot_sym
    Информацию о каждом методе можно получить, используя команду Tdsolve, method и указав в ней конкретный метод. Например, команда Tdsolve,linear вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнений.
    Производные при записи дифференциальных уравнений могут задаваться функцией diff или оператором D. Выражение sysODE должно иметь структуру множества и содержать помимо самой системы уравнений их начальные условия.

    Приближенное полиномиальное решение ДУ

    Приближенное полиномиальное решение ДУ

    Во многих случаях аналитические решения даже простых ДУ оказываются весьма сложными, например содержат специальные математические функции. При этом нередко полезна подмена такого решения другим, тоже аналитическим, но приближенным решением. Наиболее распространенным приближенным решением в этом случае может быть полиномиальное решение, то есть замена реального решения полиномом той или иной степени. При этом порядок полинома задается значением системной переменной Order, а для получения такого решения функция dsolve должна иметь параметр series.
    На Рисунок 13.17 представлено решение ДУ третьего порядка различными методами: точное аналитическое и приближенное в виде полинома с максимальным заданным порядком 10 и 60. График дает сравнение этих решений для зависимости y(t).
    Дадим небольшой комментарий. Нетрудно заметить, что точное аналитическое решение весьма сложно и содержит специальные функции Бесселя и гамма- функции. При порядке полинома 8 (он несколько меньше заданного максимального) решение практически совпадает с точным до значений t < 2, а при максимальном заданном порядке 60 область совпадения расширяется до значений t < 5,5. Затем приближенное решение резко отходит от точного.
    Этот пример, с одной стороны, иллюстрирует хорошо известный факт — быстрое нарастание погрешности полиномиального приближения за пределами области хорошего совпадения решений. С другой стороны, он показывает, что степень полинома более 60 (и даже выше) вовсе не так уж бесполезна, как это утверждается во многих статьях и книгах по полиномиальному приближению. Точность полиномиальных вычислений Maple 7 достаточно высока, чтобы обеспечить получение приближенных полиномиальных выражений со степенью порядка десятков и иногда даже сотен. Другое дело, что столь "длинный" полином не всегда удобен для аналитических расчетов, даже несмотря на его структурную простоту.

    Проверка ДУ на автономность

    Проверка ДУ на автономность

    Одиночное дифференциальное уравнение или система дифференциальных уравнений называются автономными, если их правая часть явно не зависит от независимой переменной. Для автономных дифференциальных уравнений или систем при построении графиков решений функцией DEplot не обязательно задавать начальные условия, но нужно указывать диапазон изменения искомых переменных.
    Для проверки уравнений (или систем) на автономность используется функция:
    autonomous(des,vars,ivar)
    где des — заданное дифференциальное уравнение или (в виде списка) система дифференциальных уравнений, vars — зависимые переменные; ivar — независимая переменная. Если система автономна, то эта функция возвращает true, в противном случае false.
    Примеры:

    Решение дифференциальных уравнений второго порядка

    Решение дифференциальных уравнений второго порядка

    Здесь видно, что для задания производной используется ранее рассмотренная функция diff. С помощью символа $ можно задать производную более высокого порядка. Ниже представлено решение двух дифференциальных уравнений второго порядка:

    Решение ОДУ первого порядка

    Решение ОДУ первого порядка

    Начнем рассмотрение практических примеров с решения одиночных обыкновенных дифференциальных уравнений (ОДУ) первого порядка:

    Решение систем дифференциальных уравнений

    Решение систем дифференциальных уравнений

    На Рисунок 13.1 представлено решение системы из двух дифференциальных уравнений различными методами — в явном виде, в виде разложения в ряд и с использованием преобразования Лапласа. Здесь следует отметить, что решение в виде ряда является приближенным. Поэтому полученные в данном случае аналитические выражения отличаются от явного решения и решения с применением преобразования Лапласа.

    Пример решения одиночного дифференциального уравнения

    Шаг 1

    Пример решения одиночного дифференциального уравнения

    Рисунок 13.5. Пример решения одиночного дифференциального уравнения

    в виде графика векторного поля

    Шаг 1

    в виде графика векторного поля

    Рисунок 13.8. Решение системы дифференциальных уравнений Лотки—Вольтерра , с выводом в виде графика векторного поля
    Еще интересней вариант графиков, представленный на Рисунок 13.9. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий:
    x(0) = y(0) = 1,2 и x(0) = 1 и у(0)=0,7.
    Следует отметить, что функция DEplot может обращаться к другим функциям пакета DEtools для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения.

    Пример решения системы из двух

    Шаг 1

    Пример решения системы из двух

    Рисунок 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEptot3d
    Возможности функции DEplot3d позволяют решать системы, состоящие более чем из двух дифференциальных уравнений. Однако в этом случае число решений, представляемых графически, выходит за пределы возможного для трехмерной графики. При этом от пользователя зависит, какие из зависимостей опускаются при построении, а какие строятся.

    Пример решения системы из двух

    Шаг 1

    Пример решения системы из двух

    Рисунок 13.11. Пример решения системы из двух дифференциальных уравнений с построением трехмерного фазового портрета
    Здесь помимо упоминавшихся ранее параметров используются следующие: pdiffeq — квазилинейные дифференциальные уравнения первого порядка (PDE), vans — независимая переменная и i_curve — начальные условия для параметрических кривых трехмерной поверхности. Помимо опций, указанных для функции DEplot, здесь могут использоваться следующие опции:

  • basechar = TRUE, FALSE. ONLY — устанавливает показ базовых характеристик кривых;
  • basecolor, basecolor = b_color — устанавливает цвет базовых характеристик;
  • initcolor, initcolor =i_color — инициализация цветов;
  • numchar = integer — задает число отрезков кривых, которое не должно быть меньше 4 (по умолчанию 20);
  • numsteps = [integerl.integerZ] — задает число шагов интегрирования (по умолчанию [10, 10]).
  • Рисунок 13.12 демонстрирует применение функции PDEplot. Этот пример показывает, насколько необычным может быть решение даже простой системы дифференциальных уравнений в частных производных.

    Обратите внимание на использование опций

    Шаг 1

    Обратите внимание на использование опций

    Рисунок 13.13. Построение комбинированного графика с помощью функции PDEplot
    Обратите внимание на использование опций в этом примере, в частности на вывод надписи на русском языке. В целом список параметров функции phaseportrait аналогичен таковому для функции DEplot (отсутствует лишь задание начальных условий).

    в виде графика векторного поля

    Шаг 1

    в виде графика векторного поля

    Рисунок 13.14. Построение фазового портрета в виде графика векторного поля

    В первом случае система дифференциальных

    Шаг 1

    В первом случае система дифференциальных В первом случае система дифференциальных уравнений (модель. Лотки-Воль-терра) автономна, а во втором случае дифференциальное уравнение не автономно.

    В данном случае повышение уровня

    Шаг 1

    В данном случае повышение уровня В данном случае повышение уровня вывода до 4 или 5 бесполезно, поскольку вся информация о решении сообщается уже при уровне 2 (или 3).

    Шаг 1

    Шаг 1

    Шаг 1

    Следующие примеры иллюстрируют возможность решения

    Шаг 1

    Следующие примеры иллюстрируют возможность решения Следующие примеры иллюстрируют возможность решения одного и того же дифференциального уравнения ode_L разными методами:

    Шаг 1

    Шаг 1

    Шаг 1



    Решение системы из двух дифференциальных

    Шаг 1

    Решение системы из двух дифференциальных

    Рисунок 13.1. Решение системы из двух дифференциальных уравнений различными методами
    Следует отметить, что, несмотря на обширные возможности Maple 7 в области аналитического решения дифференциальных уравнений, оно возможно далеко не всегда. Поэтому, если не удается получить такое решение, полезно попытаться найти решение в численном виде.

    Шаг 1

    Шаг 1

    Шаг 1

    Используя функцию dsolve, выполним решение

    Шаг 1

    Используя функцию dsolve, выполним решение Используя функцию dsolve, выполним решение этого дифференциального уравнения:

    Примеры применения структуры DESol

    Шаг 1

    Примеры применения структуры DESol

    Рисунок 13.4. Примеры применения структуры DESol

    Шаг 1

    Шаг 1

    Шаг 1

    Пример решения системы из двух

    Шаг 2

    Пример решения системы из двух

    Рисунок 13.6. Пример решения системы из двух дифференциальных уравнений

    Пример построения двух фазовых портретов

    Шаг 2

    Пример построения двух фазовых портретов

    Рисунок 13.9. Пример построения двух фазовых портретов на фоне векторного поля

    В данном случае решение представлено

    Шаг 2

    В данном случае решение представлено

    Рисунок 13.12. Пример применения функции PDEplot
    В данном случае решение представлено трехмерной фигурой весьма нерегулярного вида.
    Другой пример использования функции PDEplot показан на Рисунок 13.13. Он иллюстрирует комбинированное построение графиков решения разного типа с применением функциональной закраски, реализуемой по заданной формуле с помощью опции initcolor.
    Еще раз отметим, что, к сожалению, рисунки в данной книге не дают представления о цвете выводимого Maple графика. Поэтому наглядность решений, видимых на экране монитора, существенно выше.

    Еще более интересный пример решения

    Шаг 2

    Еще более интересный пример решения

    Рисунок 13.15. Построение фазового портрета с помощью функции phaserportrait
    Еще более интересный пример решения дифференциального уравнения представлен на Рисунок 13.16. Здесь построены фазовые портреты для асимптотических решений.
    В целом надо отметить, что возможности визуализации решений дифференциальных уравнений с помощью системы Maple 7 весьма велики и приведенные выше примеры лишь частично иллюстрируют сказанное. В справочной системе можно найти ряд других весьма эффектных решений систем дифференциальных уравнений с визуализацией последних. ,

    Примеры решения ДУ третьего порядка

    Шаг 2

    Примеры решения ДУ третьего порядка

    Рисунок 13.17. Примеры решения ДУ третьего порядка

    Объем данной книги не позволяет

    Шаг 2

    Объем данной книги не позволяет Объем данной книги не позволяет остановиться на всех тонкостях аналитического решения дифференциальных уравнений. Множество примеров такого решения дано в справочной базе данных Maple,. 7- К ней нужно обратиться в случае, если решение того или иного дифференциального уравнения выходит за рамки учебного курса.

    Обратите внимание на решение второго

    Шаг 2

    Обратите внимание на решение второго Обратите внимание на решение второго из этих уравнений. Здесь использован прием визуализации исходного дифференциального уравнения, и оно задается значением переменной de. Кроме того, и это особенно важно, решение осуществляется при заданных начальных условиях. Именно поэтому в решении отсутствуют произвольные постоянные вида _СN.

    Решение системы дифференциальных уравнений численным

    Шаг 2

    Решение системы дифференциальных уравнений численным

    Рисунок 13.2. Решение системы дифференциальных уравнений численным методом rkf45 с выводом графика решения
    Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Для графического отображения Maple 7 предлагает ряд возможностей, и одна из них представлена на Рисунок 13.2 — см. последнюю строку ввода. При этом используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнений.
    В список параметров функции dsolve можно явным образом включить указание на метод решения, например опция mathod=dverk78 задает решение непрерывным методом Рунге—Кутта порядка 7 или 8. Вообще говоря, численное решение дифференциальных уравнений можно производить одним из следующих методов:

  • classical — одна из восьми версий классического метода, используемого по умолчанию;
  • rkf45 — метод Рунге—Кутта 4 или 5 порядка, модифицированный Фелбергом;
  • dverk78 — непрерывный метод Рунге—Кутта порядка 7 или 8;
  • gear — одна из двух версий одношагового экстраполяционного метода Гира;
  • mgear — одна из трех версий многошагового эктраполяционного метода Гира;
  • lsode — одна из восьми версий Ливенморского решателя жестких дифференциальных уравнений;
  • taylorseries — метод разложения в ряд Тейлора.
  • Обилие используемых методов расширяет возможности решения дифференциальных уравнений в численном виде. Большинство пользователей Maple 7 вполне устроит автоматический выбор метода решения по умолчанию. Однако в сложных случаях возможна прямая установка одного из указанных выше методов. С деталями реализации методов можно ознакомиться по справочной системе.
    С помощью параметра ' abserr' =аеrr можно задать величину абсолютной погрешности решения, а с помощью 'minerr'=mine — минимальную величину погрешности. В большинстве случаев эти величины, заданные по умолчанию, оказываются приемлемыми для расчетов.
    Maple 7 реализует адаптируемые к ходу решения методы, при которых шаг решения h автоматически меняется, подстраиваясь под условия решения. Так, если прогнозируемая погрешность решения становится больше заданной, шаг решения автоматически уменьшается. Более того, система Maple способна автоматически выбирать наиболее подходящий для решаемой задачи метод решения.
    Еще один пример решения системы дифференциальных уравнений представлен на Рисунок 13.3. Здесь на одном графике представлены зависимости у(х) и z(х), представляющие полное решение заданной системы. При этом процедура имеет особый вид listprocedure и для преобразования списка выходных данных в векторы решения Y и Z используется функция subs.
    Для решения достаточно сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет DEtools, содержащий самые изысканные средства для графической визуализации результатов решения дифференциальных уравнений. Эти средства мы более подробно рассмотрим в дальнейшем.

    Нетрудно заметить, что результат получен

    Шаг 2

    Нетрудно заметить, что результат получен Нетрудно заметить, что результат получен также в форме кусочной функции, полностью определяющей решение на трех интервалах изменениях. Приведем пример решения дифференциального уравнения второго порядка с кусочной функцией:

    Следует отметить, что подстановки являются

    Шаг 2

    Следует отметить, что подстановки являются Следует отметить, что подстановки являются мощным средством решения дифференциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения. Дополнительные примеры использования подстановок можно найти в справочной базе данных системы Maple 7.
    Функция нормализации ОДУ DEnormal синтаксически записывается в виде:
    DEnormal(des,ivar,dvar)
    где des — система дифференциальных уравнений, 1var — независимая переменная и dvar — зависимая переменная. Применение этой функции поясняют следующие примеры:

    Представление решения системы дифференциальных уравнений

    Шаг 3

    Представление решения системы дифференциальных уравнений

    Рисунок 13.7. Представление решения системы дифференциальных уравнений в виде фазового портрета

    Построение асимптотического решения на фоне

    Шаг 3

    Построение асимптотического решения на фоне

    Рисунок 13.16. Построение асимптотического решения на фоне графика векторного поля

    Шаг 3

    Шаг 3

    Шаг 3

    В конце этого раздела приведем

    Шаг 3

    В конце этого раздела приведем В конце этого раздела приведем пример решения нелинейного дифференциального уравнения Риккати с кусочной функцией:

    возвращает список коэффициентов формы системы

    Шаг 3

    возвращает список коэффициентов формы системы Функция convertAlg(des,dvar) возвращает список коэффициентов формы системы дифференциальных уравнений des с зависимыми переменными dvar. Это поясняют следующие примеры:

    Решение системы дифференциальных уравнений численным

    Шаг 4

    Решение системы дифференциальных уравнений численным

    Рисунок 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостей
    ВНИМАНИЕ
    При решении некоторых задач физики и радиоэлектроники выбираемый поумолчанию шаг изменения аргументах или t - Л может привести к неустойчивости решения. Неустойчивости можно избежать рядом способов. Можно, например, нормировать уравнения, избегая необходимости использования малого шага. А можно задать заведомо малый шаг. Например, при method=classical для этого служит параметр stepsize-h. Примеры такого подхода будут даны в уроке 17 (см. Решение физических задач и моделирование цепи на туннельном диоде).

    В ряде случаев желательна проверка

    Шаг 4

    В ряде случаев желательна проверка В ряде случаев желательна проверка решения дифференциальных уравнений. Ниже показано, как она делается для последнего уравнения:

    в системах дифференциальных уравнений используется

    Шаг 4

    в системах дифференциальных уравнений используется Для изменения переменных в системах дифференциальных уравнений используется функция convertsys:
    convertsys(deqns, inits, vars, ivar, yvec, ypvec)
    Здесь deqns — одно дифференциальное уравнение или список (множество), представляющие систему дифференциальных уравнений первого порядка, inits — множество или список начальных условий, vans — зависимые переменные, ivar — независимые переменные, yvec — вектор решений и ypvec — вектор производных. Функция:
    indicialeq(des.ivar,alpha.dvar)
    обеспечивает полиномиальное представление для линейного однородного дифференциального уравнения второго порядка des. Параметр alpha намечает точку сингулярности.

    Как видно из приведенных достаточно

    Шаг 5

    Как видно из приведенных достаточно Примечание 1
    Примечание 1


    Как видно из приведенных достаточно простых и наглядных примеров, результаты решения дифференциальных уравнений с кусочными функциями могут быть довольно громоздкими. Это, однако, не мешает эффективному применению функций данного класса.

    обеспечивает понижение порядка дифференциального уравнения

    Шаг 5

    обеспечивает понижение порядка дифференциального уравнения Функция:
    reduceOrder(des.dvar,partsol, solutionForm)
    обеспечивает понижение порядка дифференциального уравнения des (или системы уравнений, представленных списком или множеством) при зависимых переменных dvar, частном решении partsol (или списке частных решений) и флаге solutionForm, показывающем, что решение происходит явным методом (explicitly). Для демонстрации действия этой функции воспользуемся примером из ее справочной страницы:

    точки для дифференциального уравнения второго

    Шаг 6

    точки для дифференциального уравнения второго Функция:
    regularsp(des,ivar,dvar)
    вычисляет регулярные особые (сингулярные) точки для дифференциального уравнения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции:
    > coefs := [21*(х^2 - х + 1),0,100*х^2*(х-1)^2]:
    > regularsp(coefs. х);
    [0,1]
    Еще две функции пакета DEtools:
    translate(des,ivar.pt,dvar)
    untranslate(des,ivar,pt,dvar)
    выполняют особую операцию трансляции дифференциального уравнения (или списка дифференциальных уравнений) из центрированного относительно 0 в центрированное относительно 1 и наоборот. С деталями этого специфического процесса заинтересованный читатель может познакомиться в справочной базе данных. И еще одна полезная функция пакета:
    varparam(sols.v.ivar)
    находит общее решение дифференциального уравнения (или системы уравнений) sols методом вариации параметров. Параметр v задает правую часть уравнения; если он равен 0, ищется только частичное решение:

    Более подробную информацию об этих

    Шаг 7

    Более подробную информацию об этих Более подробную информацию об этих функциях читатель найдет в их справочных страницах, а также в информационном документе detdols.mws содержащем систематизированное описание пакета DEtools с многочисленными примерами его применения.

    Структура неявного представления

    Структура неявного представления дифференциальных уравнений — DESol

    В ряде случаев иметь явное представление дифференциальных уравнений нецелесообразно. Для неявного их представления в Maple 7 введена специальная структура:
    DESol(expr.vars)
    где exprs — выражение для исходной системы дифференциальных уравнений, vars — заданный в виде опции список переменных (или одна переменная). Структура DESol образует некоторый объект, дающий представление о дифференциальных уравнениях, чем-то напоминающее RootOf. С этим объектом можно обращаться, как с функцией, то есть его можно интегрировать, дифференцировать, получать разложение в ряд и вычислять численными методами. На Рисунок 13.4 показаны примеры применения структуры DESol. Обратите внимание на последний пример — в нем структура- DESol использована для получения решения дифференциального уравнения в виде степенного ряда.

    Углубленный анализ дифференциальных уравнений

    Углубленный анализ дифференциальных уравнений

    Задачи углубленного анализа ДУ
    Maple 7 существенно доработана по части решения дифференциальных уравнений (ДУ) и систем с ДУ. Эта доработка прежде всего направлена на получение верных решений как можно большего числа ДУ разных классов и систем с ДУ.
    В частности, расширен круг нелинейных дифференциальных уравнений, для которых Maple7способна дать аналитические решения.
    Весь арсенал средств решения ДУ-и методика их применения вполне заслуживают отражения в отдельной большой книге. Мы ограничимся описанием только трех средств системы Maple 7 - проверки ДУ на автономность, углубленным анализом решения с помощью контроля уровня выхода и получением приближенного полиномиального аналитического решения. Более подробное знакомство с новыми возможностями решения дифференциальных уравнений можно получить из соответствующей статьи справки symbolics в разделе What is new.

    

        Биржевой анализ: Технический анализ - Инструменты - Софт