+38 (093)  990-30-70

Новости

Королевский бал у Вас дома

НОУ ІНТУЇТ | лекція | побудова графіків

  1. 4.2 Побудова тривимірних графіків Графік поверхні (тривимірний або 3D-графік) - це графік, положення...
  2. 4.2.2 Побудова графіків поверхонь, заданих параметрично

4.2 Побудова тривимірних графіків

Графік поверхні (тривимірний або 3D-графік) - це графік, положення точки в якому визначається значеннями трьох координат.

4.2.1 Побудова графіків поверхонь

Дамо визначення прямокутної (або декартовій) системи координат в просторі.


Мал.4.16.

Приклад використання функції bar (x, y)

Прямокутна система координат в просторі складається з заданою фіксованою точки Прямокутна система координат в просторі складається з заданою фіксованою точки   простору, званої початком координат, і трьох перпендикулярних прямих простору   і   , Які не лежать в одній площині і перетинаються на початку координат, - їх називають координатними осями (   - вісь абсцис,   - вісь ординат,   - вісь аплікат) простору, званої початком координат, і трьох перпендикулярних прямих простору і , Які не лежать в одній площині і перетинаються на початку координат, - їх називають координатними осями ( - вісь абсцис, - вісь ординат, - вісь аплікат). положення точки в просторовій системі координат визначається значенням трьох координат і позначається . Три площини, що містять пари координатних осей, називаються координатними площинами і .

величина величина   називається функцією двох величин   і   , Якщо кожній парі чисел, які можуть бути значеннями змінних   і   , Відповідає одне або кілька певних значень величини називається функцією двох величин і , Якщо кожній парі чисел, які можуть бути значеннями змінних і , Відповідає одне або кілька певних значень величини . При цьому змінні і називають аргументами функції . Пари тих чисел, які можуть бути значеннями аргументів , функції , В сукупності складають область визначення цієї функції.

Для побудови графіка двох змінних Для побудови графіка двох змінних   необхідно виконати наступні дії необхідно виконати наступні дії.

  1. Сформувати в області побудови графіка прямокутну сітку, проводячи прямі, паралельні осях .
  2. обчислити значення у всіх вузлах сітки.
  3. Звернутися до функції побудови поверхні, передаючи їй як параметри сітку і матрицю значень у вузлах сітки.

Для формування прямокутної сітки в Octave є функція Для формування прямокутної сітки в Octave є функція . Розглянемо побудову тривимірного графіка на наступному прикладі.

Приклад 4.14. Побудувати графік функції Приклад 4 .

Для формування сітки скористаємося функцією Для формування сітки скористаємося функцією .

>>> [xy] = meshgrid (-2: 2, -3: 3) x = -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 - 2 -1 0 1 2 -2 -1 0 1 2 -2 -1 0 1 2 y = -3 -3 -3 -3 -3 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3

Після формування сітки обчислимо значення функції у всіх вузлових точках

>>> z = 3 * x. * X-2 * sin (y). ^ 2 z = 11.96017 2.96017 -0.03983 2.96017 11.96017 10.34636 1.34636 -1.65364 1.34636 10.34636 10.58385 1.58385 -1.41615 1.58385 10.58385 12.00000 3.00000 0.00000 3.00000 12.00000 10.58385 1.58385 -1.41615 1.58385 10.58385 10.34636 1.34636 -1.65364 1.34636 10.34636 11.96017 2.96017 -0.03983 2.96017 11.96017 Лістинг.

на Мал. 4.17. зображено графік функції: на   Мал


Мал.4.17.

Графік функції

Для побудови каркасного графіка слід звернутися до функції Для побудови каркасного графіка слід звернутися до функції   ; ;

Після це буде створено графічне вікно з тривимірним графіком (див. Мал. 4.17 ). Як видно, отриманий графік вийшов грубим, для отримання менш грубого графіка слід сітку зробити більш щільною (див. лістинг 4.14 і Мал. 4.18 ).

[Xy] = meshgrid (- 2: 0.1: 2, -3: 0.1: 3); z = 3 * x. * x-2 * sin (y). ^ 2 mesh (x, y, z); Лістинг 4.14. Побудова графіка поверхні (приклад 4.14).

Будь тривимірний графік можна обертати, використовуючи мишку.

Для побудови поверхонь, крім функції Для побудови поверхонь, крім функції   побудови каркасного графіка, є функція   , Яка будує каркасну поверхню, заливаючи її кожну клітину кольором, який залежить від значення функції в вузлах сітки побудови каркасного графіка, є функція , Яка будує каркасну поверхню, заливаючи її кожну клітину кольором, який залежить від значення функції в вузлах сітки.

Приклад 4.15. З використанням функції Приклад 4 побудувати графік функції .

В лістингу 4.15 представлено рішення задачі, а на Мал. 4.19 зображений вийшов графік.

на Мал. 4.18. зображено графік функції: на   Мал


Мал.4.18.

Графік функції з щільною сіткою [xy] = meshgrid (-2: 0.2: 2, 0: 0.2: 4); z = sqrt (sin (x). ^ 2 + cos (y). ^ 2); surf (x, y, z); Лістинг 4.15. Побудова графіка поверхні (приклад 4.15).

У Octave можна побудувати графіки двох поверхонь в одній системі координат, для цього, як і для плоских графіків, слід використовувати команду У Octave можна побудувати графіки двох поверхонь в одній системі координат, для цього, як і для плоских графіків, слід використовувати команду   , Яка блокує створення другого нового вікна при виконанні команд   або , Яка блокує створення другого нового вікна при виконанні команд або .

Приклад 4.16. Побудувати в одній системі координат графіки функцій Приклад 4 .

Рішення завдання з використанням функції Рішення завдання з використанням функції   представлено в   лістингу 4 представлено в лістингу 4.16 , Отриманий графік зображений на Мал. 4.20 .

h = figure (); [Xy] = meshgrid (-2: 0.1: 2, -3: 0.1: 3); z = 2 * x. ^ 2 + 3 * y. ^ 4-1; z1 = -2 * x. ^ 2-3 * y. ^ 4-1; surf (x, y, z); hold on surf (x, y, z1); Лістинг 4.16. Побудова двох графіків одночасно (приклад 4.16).

на Мал. 4.19. зображено графік функції: на   Мал


Мал.4.19.

Графік функції
Мал. 4.20. Зображення двох поверхонь в одній системі координат з використанням функції surf
Мал. 4.21. Зображення двох поверхонь в одній системі координат з використанням функції mesh

Побудова поверхні за допомогою функції Побудова поверхні за допомогою функції   можна здійснити аналогічно (див можна здійснити аналогічно (див. лістинг 4.17 ), Графіки функцій - можна побачити на Мал. 4.21 .

h = figure (); [Xy] = meshgrid (-2: 0.1: 2, -3: 0.1: 3); z = 2 * x. ^ 2 + 3 * y. ^ 4-1; z1 = -2 * x. ^ 2-3 * y. ^ 4-1; mesh (x, y, z); hold on mesh (x, y, z1); Лістинг 4.17. Побудова графіків за допомогою mesh (приклад 4.16).

4.2.2 Побудова графіків поверхонь, заданих параметрично

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

  1. якщо і представимо у вигляді , То відповідні їм матриці і слід формувати у вигляді матричного множення на .
  2. якщо і представимо у вигляді або , То в цьому випадку матриці і слід записувати у вигляді або відповідно.

Розглянемо кілька задач побудови графіків поверхонь заданих параметрично.

Приклад 4.17. Побудувати поверхню однополостного гіперболоїда, рівняння якого задано в параметричному вигляді Приклад 4 .

В лістингу 4.18 представлено рішення цього завдання, відповідно до описаного вище алгоритму. Графік однополостного гиперболоида представлений на Мал. 4.22 .

clear all; h = 3.14 / 50; u = [0: h: 3.14] '; % Формуємо вектор-стовпець u. % Формуємо вектор-рядок v. Зверніть увагу, u - стовпець,% v - рядок з однаковою кількістю елементів. v = [0: 2 * h: 6.28]; % Формуємо матрицю X як матричне твір ch (u) cos (v). X = cosh (u) * cos (v); % Формуємо матрицю Y як матричне твір ch (u) * sin (v). Y = cosh (u) * sin (v); % Формуємо матрицю Z як матричне твір стовпця sh (u)% на рядок ones (size (v)). Z = sinh (u) * ones (size (v)); % Формуємо графік поверхні. surf (X, Y, Z); grid on; % Підписуємо графік і осі. title ( 'Plank hyperboloid'); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z') Лістинг 4.18. Побудова поверхні гіперболоїда (приклад 4.17).

Розглянемо кілька способів побудови сфери в Octave.

Приклад 4.18. Побудувати поверхню сфери з центром Приклад 4 і радіусом .

У декартовій системі координат рівняння сфери має вигляд: У декартовій системі координат рівняння сфери має вигляд: . Його можна записати в параметричному вигляді

де де .

Методика побудови сфери подібна методиці побудови однополостного гіперболоїда, описаної в прикладі 4.17. В лістингу 4.19 представлений текст програми побудови сфери з центром в точці (1, 1, 1) і радіусом Методика побудови сфери подібна методиці побудови однополостного гіперболоїда, описаної в прикладі 4 , А на Мал. 4.23 зображена сфера.

clear all; h = pi / 30; u = [- 0: h: pi] '; % Формуємо вектор-стовпець u. v = [0: 2 * h: 2 * pi]; % Формуємо вектор-рядок v. % Формуємо матрицю X, використовуючи матричне твір sin (u) * cos (v). x = 1 + 4 * sin (u) * cos (v); % Формуємо матрицю Y, використовуючи твір sin (u) * sin (v). y = 1 + 4 * sin (u) * sin (v); % Формуємо матрицю Z, використовуючи твір стовпця% cos (u) на рядок ones (size (v)). z = 1 + 4 * cos (u) * ones (size (v)); % Формуємо графік поверхні. surf (x, y, z); grid on; % Підписуємо графік і осі. title ( 'SPHERE'); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z'); Лістинг 4.19. Побудова сфери (приклад 4.18).
Мал. 4.23. Графік сфери, побудований з використанням функції surf

Octave містить вбудовану функцію Octave містить вбудовану функцію   , Що дозволяє формувати матриці   розмірності   для побудови сфери одиничного радіуса (див , Що дозволяє формувати матриці розмірності для побудови сфери одиничного радіуса (див. приклад 4.18) з центром на початку координат.

Для побудови сфери одиничного радіуса з центром в початку координат досить двох команд Для побудови сфери одиничного радіуса з центром в початку координат досить двох команд . Чим n більше, тим більш "округлої" буде сфера. на Мал. 4.24 зображена сфера одиничного радіуса в центрі на початку координат при n = 25.


Мал.4.24.

Графік сфери одиничного радіуса, побудований з використанням функції sphere (25)

вбудовану функцію вбудовану функцію   можна використовувати і для побудови сфери з центром   і радіусом можна використовувати і для побудови сфери з центром і радіусом . В лістингу 4.20 наведено рішення прикладу 4.18 за допомогою функції sphere (n).

clear all; x0 = 2; y0 = _2; z0 = 5; R = 10% Визначаємо центр і радіус сфери. % Формуємо матриці X, Y, Z для побудови сфери одиничного радіуса% з центром на початку координат, використовуючи функцію sphere (n). [X, Y, Z] = sphere (25); % Перераховуємо матриці X, Y, Z для сфери з центром x0, y0, z0 і радіусом R. X = x0 + R * X; Y = y0 + R * Y; Z = z0 + R * Z; surf (X, Y, Z)% Изображаем сферу Лістинг 4.20. Побудова сфери за допомогою sphere (приклад 4.18).

В результаті роботи програми буде побудована сфера, представлена ​​на Мал. 4.25 .

Сфера є окремим випадком більш загальної фігури - еліпсоїда. Розглянемо два способи побудови еліпсоїда.

Приклад 4.19. Побудувати поверхню еліпсоїда, рівняння якої задано в параметричному вигляді:

тут тут   - піввісь еліпсоїда,   - центр еліпсоїда - піввісь еліпсоїда, - центр еліпсоїда.

Методика побудови еліпсоїда схожа на те, як раніше були побудовані однопорожнинний гіперболоїд (приклад 4.17) і сфера (приклад 4.18). Для цього необхідно сформувати матриці Методика побудови еліпсоїда схожа на те, як раніше були побудовані однопорожнинний гіперболоїд (приклад 4 і , Після чого викликати функцію . Як це зробити показано в лістингу 4.21 .

clear all; h = pi / 30; u = [- 0: h: pi] '; % Формуємо вектор-стовпець u. v = [0: 2 * h: 2 * pi]; % Формуємо вектор-рядок v. % Формуємо матрицю X, використовуючи матричне твір sin (u) * cos (v). a = 3; b = 7; c = 1; x0 = y0 = z0 = 10; x = x0 + a * sin (u) * cos (v); % Формуємо матрицю Y, використовуючи твір sin (u) * sin (v). y = y0 + b * sin (u) * sin (v); % Формуємо матрицю Z, використовуючи твір стовпця% cos (u) на рядок ones (size (v)). z = z0 + c * cos (u) * ones (size (v)); surf (x, y, z); grid on; % Формуємо еліпсоїд. % Підписуємо графік і осі. title ( 'ELLIPSOID'); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z'); Лістинг 4.21. Побудова поверхні еліпсоїда (приклад 4.19).

Еліпсоїд з центром в точці (10, 10, 10) і півосями Еліпсоїд з центром в точці (10, 10, 10) і півосями   представлений на   Мал представлений на Мал. 4.26 .

Однак, для побудови еліпсоїда в Octave існує функція Однак, для побудови еліпсоїда в Octave існує функція   , Яка дозволяє автоматично сформувати матриці , Яка дозволяє автоматично сформувати матриці .

У функції У функції   : :

Для побудови еліпсоїда, представленого на Мал. 4.23 досить ввести команди

a = 3; b = 7; c = 1; x0 = y0 = z0 = 10; [X, Y, Z] = ellipsoid (x0, y0, z0, a, b, c, 30); surf (x, y, z); grid on; title ( 'ELLIPSOID'); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z');

Для побудови циліндрів і кругових конусів можна використовувати функцію Для побудови циліндрів і кругових конусів можна використовувати функцію   для формування матриць для формування матриць . Потім будуємо саму поверхню (циліндр, конус) за допомогою функції .

Познайомимося з функцією cylinder докладніше. Звернення до функції має вигляд. Познайомимося з функцією cylinder докладніше ;

тут тут   - масив радіусів;  якщо ми будуємо циліндр,   - масив, що складається з двох однакових значень, функція вимагає як мінімум два значення, і для побудови циліндра це будуть радіус верхнього і нижнього підстави;  при побудові конуса r є масивом радіусів горизонтальних перетинів кругового конуса; - масив радіусів; якщо ми будуємо циліндр, - масив, що складається з двох однакових значень, функція вимагає як мінімум два значення, і для побудови циліндра це будуть радіус верхнього і нижнього підстави; при побудові конуса r є масивом радіусів горизонтальних перетинів кругового конуса;

- формуються для побудови поверхні (конуса, циліндра) матриці розмірності - формуються для побудови поверхні (конуса, циліндра) матриці розмірності .

Розглянемо кілька прикладів.

Приклад 4.20. Побудувати циліндр радіуса Приклад 4 і висотою .

Текст програми приведений в лістингу 4.22 , Графік - на малюнку 4.27 .

clear all; [X, y, z] = cylinder ([4, 4], 25); % Формування матриць x, y, z. grid on; surf (x, y, z); % Побудова циліндра. title ( "Cylinder") Лістинг 4.22. Побудова циліндра висотою 1 (приклад 4.20).

Приклад 4.21. Побудувати циліндр радіуса 4 і висотою 20.

Текст програми приведений в лістингу 4.23 , Графік - на малюнку 4.28 .

clear all; [X, y, z] = cylinder ([4, 4], 25); % Формування матриць x, y, z. grid on; surf (x, y, 20 * z); % Побудова циліндра з урахуванням висоти h = 20. title ( "Cylinder") Лістинг 4.23. Побудова циліндра висотою 20 (приклад 4.21).

Приклад 4.22. Приклади кругових конусів.

Розглянемо кілька прикладів.


Мал.4.27.

Циліндр радіуса R = 4 і висотою h = 1
Мал. 4.28. Циліндр радіуса R = 4 і висотою h = 20

Усічений круговий конус, представлений на Мал. 4.29 , Генерується програмою з лістингу 4.24 .

clear all; [X, y, z] = cylinder (2: 1: 10, 25); grid on; surf (x, y, z); title ( "Cone"); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z'); Лістинг 4.24. Побудова усіченого кругового конуса (приклад 4.22).

Круговий конус, представлений на Мал. 4.30 , Генерується програмою в лістингу 4.25 .

clear all [x, y, z] = cylinder ([5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5], 25); grid on; mesh (x, y, z); title ( "Cone") xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z'); Лістинг 4.25. Побудова кругового конуса (приклад 4.22).

На завершення приведений лістинг 4.26 , Який генерує поверхню, представлену на Мал. 4.31 .

clear all [x, y, z] = cylinder ([1, 3, 5, 7, 6, 4], 25); surf (x, y, z); title ( "Surface"); xlabel ( 'X'); ylabel ( 'Y'); zlabel ( 'Z'); Лістинг 4.26. Поверхня (див. Рис. 4.30)