Смекни!
smekni.com

Графика в системе Maple V (стр. 9 из 12)

Здесь: data — список данных, scale — число или описатель. Детали применения этой простой функции поясняет рис. 13.63. На нем дано два примера — для построения столбцов заданной ширины и высоты и построения распределения 100 случайных чисел с нормальным распределением.

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

13.11. Графическая визуализация решений и анимация

Выше уже не раз графика использовалась для визуализации решений математических задач. Так, многие особенности даже функций одной переменной вида f(x) могут быть выявлены с помощью графика функций. Затем можно точно вычислить корни функции (точки перехода через 0), экстремумы, крутизну наклона (произ-

водную) в заданных точках и т.д. Еще более информативна в этом отношении трехмерная графика — для большинства функций двух переменных вида z(x,y) нужно очень богатое математическое воображение, чтобы представить их вид — особенно в одной из многих десятков координатных систем.


Рис. 13.63. Построение гистограмм.

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

13.11.1. Иллюстрация решения систем линейных уравнений

Системы линейных уравнений могут решаться как с помощью функции solve, так и с помощью матричных методов. Замечательной возможностью функции solve является возможность решения относительно ограниченного числа переменных. Например, систему линейных уравнений с переменными х, у, z, t и v можно решить относительно только первых трех переменных х, у и z. При этом решения будут функциями относительно переменных t и v и можно построить наглядный график решения (рис. 13.64).

На рис. 13.64 система задана пятью равенствами: е1, е2, еЗ, е4 и е5. Затем функцией solve получено вначале решение для всех переменных (для иллюстрации), а затем для трех переменных х, у и z. Для получения решения в виде списка, а не множества, как в первом случае для всех переменных, использована функция подстановки subs. После этого функция plot3d строит плоскость решения в пространстве.


Рис. 13.64. График, представляющий решения системы линейных уравнений.

13.11.2. Графическая визуализация решения системы неравенств

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

inequal(ineqs, xspec, yspec, options).

Параметры этой функции: ineqs — одно или более неравенство или равенство или список неравенств или равенств, xspec — xvar == min_x..max_x, yspec — yvar = min_y..max_y и о — необязательные опции, например указывающие на цвета линий, представляющих неравенства или равенства, и областей, образованных этими линиями и границами графика. Пример применения этой функции представлен на рис. 13.65.

Обратите внимание на задание опций цветов: optionsfasfeasibly задает цвет внутренней области, для которой удовлетворяются все неравенства (равенства), optionsopen и optionsclose задают цвета открытых и закрытых областей графика, optionsexcluded для цвета внешних областей. График дает весьма наглядную интерпретацию действия ряда неравенств (или равенств).

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

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

conformal(F,rl ,г2,о);

где F — комплексная процедура или выражение, rl, r2 — области, задаваемые в виде а..Ь или name=a..b, о — опции. Таким образом, для построения нужного графика достаточно задать нужное выражение и области изменения rl и г2. Пример построения конформных изображений для трех выражении дан на рис. 13.66.

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


Рис. 13.65. Пример графической интерпретации решения системы неравенств.


Рис. 13.66. Конформное отображение на комплексной плоскости графиков трех зависимостей.

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

Многие вычисления имеют результаты, представляемые в форме матриц. Иногда такие результаты можно наглядно представить графически, например, в виде столбиковой диаграммы. Она представляет собой множество столбиков квадратного сечения, расположенных на плоскости, образованной осями строк (row) и столбцов (column) матрицы. При этом высота столбцов определяется содержимым ячеек матрицы.

Такое построение обеспечивает графическая функция matrixplot из пакета расширения plots. На рис. 13.67 показано совместное применение этой функции с двумя функциями пакета linalg, формирующими две довольно экзотические матрицы А и В.


Рис. 13. 67. Графическое представление матрицы

На рис. 13.67 показана графическая визуализация матрицы, полученной как разность матриц А и В. Для усиления эффекта восприятия применяется цветовая функциональная закраска. Для задания цвета введена процедура F.

13.11.5. Визуализация Ньютоновых итераций

Теперь займемся довольно рискованным экспериментом — наблюдением Ньютоновых итераций с их представлением на комплексной плоскости. На рис. 13.68 задана функция f(z) комплексного аргумента. Для этого используется итерационное выражение. Проследить за поведением функции на комплексной плоскости позволяет графическая функция complexplot3d из пакета plots.

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

вполне возможен. Рекомендуется записывать подобные примеры на диск перед ик запуском. •


Рис. 13.68. Наблюдение за процессом Ньютоновых итерации в ЗО-пространстве.

13.11.6. Визуализация корней случайных полиномов

Наряду с традиционной для математических и статистических компьютерных систем возможностью генерации случайных чисел, Maple V предоставляет довольно «экзотическую» возможность генерации случайных полиномов с высокой максимальной степенью. Для этого используется функция:

ranpoly(var,o)

Она возвращает случайный полином переменной var, причем максимальная степень полинома птах может указываться опцией о вида degree=nmax.

Приведем пример генерации случайного полинома с максимальной степенью 50:


Поскольку полученный полином случайный, то вам не удастся повторить его генерацию — каждый запуск randpoly дает новый полином. Так что важно понять в принципе осуществляемые далее действия. Прежде всего найдем список корней полинома S:


В этом примере обратите внимание на число нулей в начале списка — их надо исключать из дальнейших вычислений. Это, и получение корней в виде обычных

комплексных чисел, делается с помощью функции allvalues, в которой в качестве

параметра надо использовать S[5]. Ниже показано создание списка SA корней полученного выше полинома:

>SA:=[S[1],S[2],S[3],S[4],allvalues(S[5])];

ЗА := [0, 0, 0, 0, -1.010550161 - .1475724933 I,

-1.010550161 + .1475724933 I, -.9465649833,

-.9003773676 - .5534775311 , -.9003773676 + .5534775311 ,

-.8562982808 - .3789548397 , -.8562982808 + .3789548397 ,

-.7320300364 - .6478720727 , -.7320300364 + .6478720727 ,

-.5900687567 - .7989860949 , -.5900687567 + .7989860949 .

-.3987161272-.8962702262 ,-.3987161272 + .8962702262 ,

-.3642724499-.9481481280 ,-.3642724499 + .9481481280 ,

-.02839255705 - .9363196855 I, -.02839255705 + .9363196855 I, .05710128939 -1.018443049 I, .05710128939 + 1.018443049 I, .2868399179-.9808645873 , .2868399179 + .9808645873 , .4149289767-.8396518590 , .4149289767 + .8396518590 , .6775641178-.8099749786 , .6775641178 + .8099749786 , .6864940076 - .6957907203 , .6864940076 + .6957907203 , .8450577013-.4872509104 , .8450577013 + .4872509104 , .9089753119-.3749374155 , .9089753119 + .3749374155 , .9157897832, 1.019132014 - .2114677899I, 1.019132014+.21146778991]

Напоминаем, что эти корни также являются случайными. Теперь можно построить комплексные корни полученного случайного полинома в виде точек на комплексной плоскости:

>with(plots):complexplot(SA,x~1.2..1.2,style=point);

Этот график показан на рис. 13.69.


Рис. 13.69. Расположение корней случайного полинома на комплексной плоскости.

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