Опубликован: 03.12.2012 | Доступ: свободный | Студентов: 1155 / 293 | Длительность: 16:43:00
Лекция 8:

Работа с графикой: визуализация функций двух переменных

< Лекция 7 || Лекция 8: 12345 || Лекция 9 >
Аннотация: В данной лекции мы познакомимся с возможностями Mathematica, позволяющими визуализировать функциональные зависимости, а также дискретные наборы данных от двух переменных средствами как двумерной, таки трёхмерной графики, а также научимся осуществлять анимацию графических изображений.

Цель лекции: познакомиться с принципами создания в Mathematica двумерных и трёхмерных объектов и принципами работы с ними.

7.0. Введение

В предыдущей лекции мы познакомились с принципами визуализации данных, научились строить двумерные графики непрерывных и дискретных зависимостей от одной переменной. В настоящей лекции мы продолжим знакомство с графическими возможностями системы Mathematica и научимся визуализировать зависимости от двух и трёх переменных средствами двумерной и трёхмерной графики. Кроме того, мы научимся визуализировать динамические процессы, когда меняется один или несколько параметров. В качестве основы рассмотрения по-прежнему будем использовать книгу Е. М. Воробьёва [1].

7.1. Визуализация функций двух переменных в трёхмерном пространстве

Функция двух переменных определяет в трёхмерном пространстве некоторую поверхность. Встроенные функции Mathematica для работы с трёхмерной графикой, оканчиваются на Plot3D.

Для создания трёхмерных графических объектов предназначены функции Plot3D, ParametricPlot3D и ListPlot3D.

Формат обращения к функции Plot3D отличается от такового для функции Plot третьим обязательным аргументом: Plot3D[func,{x,xmin,xmax},{y,ymin,ymax}], где func — заданная функция переменных x и y, меняющихся на отрезках от xmin до xmax и от ymin до ymax, соответственно. На рисунке 7.1 в качестве примера (In[1]) мы построили поверхность, заданную функцией Cos[x*y]-x.

Функция ParametricPlot3D позволяет строить параметрически заданные зависимости: как поверхности, так и кривые в трёхмерном пространстве. В примере Out[2] на рис. 7.1 слева мы параметрически построили поверхность — тор, задав функциональную зависимость от двух переменных. В примере Out[2] справа мы изобразили в трёхмерном пространстве кривую, иллюстрирующую параметрическую зависимость от одной переменной.

Подробней о функциях Plot3D и ParametricPlot3D см. книги Е. М. Воробьёва [1, с. 83–86] и А. Н. Прокопени и А. В. Чичурина [5, с. 58–63].

Построение трёхмерных зависимостей непрерывных функций

Рис. 7.1. Построение трёхмерных зависимостей непрерывных функций

Для трёхмерного графического представления дискретных численных данных используется функция ListPlot3D. Если единственный аргумент функции задан в виде матрицы mxn, т.е., в виде {{v11,v12,...,v1n},{v21,v22,...,v2n},...,{vm1,vm2,...,vmn}}, то данные в ячейке матрицы vij рассматриваются как z-координаты (по оси аппликат) точки в трёхмерном пространстве, а координатам по осям абсцисс и ординат соответствуют значения x=i и y=j (пример In[1] на рис. 7.2). Подобный способ задания возможен, если значение n не равняется 3.

Если аргумент задан в виде матрицы, содержащей 3 столбца (т.е., матрица mxn, где n=3), то элементы матрицы интерпретируются иным образом: каждая точка i списка {{x1,y1,z1},{x2,y2,z2},...,{xm,ym,zm}} обладает координатами {xi,yi,zi} (пример In[2] на рис. 7.2).

О функции ListPlot3D см. книгу В. П. Дьяконова [2, с. 429–430].

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

увеличить изображение
Рис. 7.2. Построение трёхмерных графиков дискретных данных
< Лекция 7 || Лекция 8: 12345 || Лекция 9 >

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2821103379968watchdog( )../bootstrap.inc:0
23.2824103382416module_invoke( )../bootstrap.inc:967
33.2824103384272call_user_func_array ( )../module.inc:462
43.2824103384608devel_watchdog( )../module.inc:462
53.2825103385456decode_entities( )../devel.module:382
63.2825103387376drupal_error_handler( )../devel.module:340
73.2825103391024watchdog( )../common.inc:663
83.2826103393128module_invoke( )../bootstrap.inc:967
93.2826103395024call_user_func_array ( )../module.inc:462
103.2826103395392devel_watchdog( )../module.inc:462
113.2826103396112decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2821103379968watchdog( )../bootstrap.inc:0
23.2824103382416module_invoke( )../bootstrap.inc:967
33.2824103384272call_user_func_array ( )../module.inc:462
43.2824103384608devel_watchdog( )../module.inc:462
53.2825103385456decode_entities( )../devel.module:382
63.2825103387376drupal_error_handler( )../devel.module:340
73.2825103391024watchdog( )../common.inc:663
83.2826103393128module_invoke( )../bootstrap.inc:967
93.2826103395024call_user_func_array ( )../module.inc:462
103.2826103395392devel_watchdog( )../module.inc:462
113.2826103396112decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2821103379968watchdog( )../bootstrap.inc:0
23.2824103382416module_invoke( )../bootstrap.inc:967
33.2824103384272call_user_func_array ( )../module.inc:462
43.2824103384608devel_watchdog( )../module.inc:462
53.2825103385456decode_entities( )../devel.module:382
63.2832103387568drupal_error_handler( )../devel.module:340
73.2832103391288watchdog( )../common.inc:663
83.2832103393392module_invoke( )../bootstrap.inc:967
93.2832103395288call_user_func_array ( )../module.inc:462
103.2832103395656devel_watchdog( )../module.inc:462
113.2833103396456decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2821103379968watchdog( )../bootstrap.inc:0
23.2824103382416module_invoke( )../bootstrap.inc:967
33.2824103384272call_user_func_array ( )../module.inc:462
43.2824103384608devel_watchdog( )../module.inc:462
53.2825103385456decode_entities( )../devel.module:382
63.2832103387568drupal_error_handler( )../devel.module:340
73.2832103391288watchdog( )../common.inc:663
83.2832103393392module_invoke( )../bootstrap.inc:967
93.2832103395288call_user_func_array ( )../module.inc:462
103.2832103395656devel_watchdog( )../module.inc:462
113.2833103396456decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2839103380512watchdog( )../bootstrap.inc:0
23.2839103382560module_invoke( )../bootstrap.inc:967
33.2839103384416call_user_func_array ( )../module.inc:462
43.2839103384752devel_watchdog( )../module.inc:462
53.2840103385456decode_entities( )../devel.module:382
63.2840103387376drupal_error_handler( )../devel.module:340
73.2840103391016watchdog( )../common.inc:663
83.2840103393120module_invoke( )../bootstrap.inc:967
93.2840103395016call_user_func_array ( )../module.inc:462
103.2840103395384devel_watchdog( )../module.inc:462
113.2841103396104decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2839103380512watchdog( )../bootstrap.inc:0
23.2839103382560module_invoke( )../bootstrap.inc:967
33.2839103384416call_user_func_array ( )../module.inc:462
43.2839103384752devel_watchdog( )../module.inc:462
53.2840103385456decode_entities( )../devel.module:382
63.2840103387376drupal_error_handler( )../devel.module:340
73.2840103391016watchdog( )../common.inc:663
83.2840103393120module_invoke( )../bootstrap.inc:967
93.2840103395016call_user_func_array ( )../module.inc:462
103.2840103395384devel_watchdog( )../module.inc:462
113.2841103396104decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2839103380512watchdog( )../bootstrap.inc:0
23.2839103382560module_invoke( )../bootstrap.inc:967
33.2839103384416call_user_func_array ( )../module.inc:462
43.2839103384752devel_watchdog( )../module.inc:462
53.2840103385456decode_entities( )../devel.module:382
63.2845103387568drupal_error_handler( )../devel.module:340
73.2846103391288watchdog( )../common.inc:663
83.2846103393392module_invoke( )../bootstrap.inc:967
93.2846103395288call_user_func_array ( )../module.inc:462
103.2846103395656devel_watchdog( )../module.inc:462
113.2846103396456decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.2839103380512watchdog( )../bootstrap.inc:0
23.2839103382560module_invoke( )../bootstrap.inc:967
33.2839103384416call_user_func_array ( )../module.inc:462
43.2839103384752devel_watchdog( )../module.inc:462
53.2840103385456decode_entities( )../devel.module:382
63.2845103387568drupal_error_handler( )../devel.module:340
73.2846103391288watchdog( )../common.inc:663
83.2846103393392module_invoke( )../bootstrap.inc:967
93.2846103395288call_user_func_array ( )../module.inc:462
103.2846103395656devel_watchdog( )../module.inc:462
113.2846103396456decode_entities( )../devel.module:382