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

2. Обчислення значень функції z ij = f (x i; y j) у всіх вузлах сітки.

3. Звернення до функції побудови тривимірних графіків.

5.1 Функції plot3d і plot3d1

У Scilab поверхню можна побудувати за допомогою функцій plot3d або plot3d1. Їх відмінність полягає в тому, що plot3d будує поверхню і затоки-

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

Звернення до функцій наступне:

5.1. Функції plot3d і plot3d1

тут x вектор-стовпець значень абсцис;

y вектор-стовпець значень ординат;

z матриця значень функції;

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

leg підписи координатних осей графіка символи, відокремлюються знаком @. Наприклад, 'X @ Y @ Z'.

flag масив, що складається з трьох цілочисельних параметрів: [mode, type, box]. тут

mode встановлює колір поверхні (див. табл. 5.1). За замовчуванням дорівнює 2 колір заливки синій, прямокутна сітка виводиться.

Таблиця 5.1. Значення параметра mode

> 0 поверхня має колір ¾mode¿, виводиться прямокутна сітка

0 виводиться прямокутна сітка, заливка відсутня (білий колір)

<0 поверхность имеет цвет ¾mode¿, отсутствует прямоугольная сетка

type дозволяє управляти масштабом графіка (див. табл. 5.2), за замовчуванням має значення 2;

(Див. Табл. 5.3). За замовчуванням дорівнює 4.

ebox визначає межі області, в яку буде виводитися поверхню, як вектор [xmin, xmax, ymin, ymax, zmin, zmax]. Цей параметр може використовуватися тільки при значенні параметра type = 1.

keyn = valuen послідовність значень властивостей графіка key1 = value1, key2 = value2. keyn = valuen,

таких як товщина лінії, її колір, колір заливки фону графічного вікна, наявність маркера і ін. (див. параграф 4.6).

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

Побудувати графік функції Z = sin (t) cos (t).

Створимо масив значень аргументу t. Обчислимо значення функції і запишемо їх в масив Z.

Зверніть увагу, що при зверненні до функції plot3d в якості параметрів X і Y. задають прямокутну сітку, двічі вказано параметр t, оскільки обидві функції і sin, і cos залежать від однієї змінної t (див. Лістинг 5.1, рис.5.1).

Лістинг 5.1. Побудова графіка функції Z = sin (t) cos (t) за допомогою функції plot3d

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

Побудувати графік функції Z = 5y 2 x 2.

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

5.1. Функції plot3d і plot3d1

Мал. 5.1. Графік функції Z = sin (t) cos (t)

Перш за все поставимо масиви X і Y.

Потім сформуємо матрицю значень функції Z (x i; y j), використовуючи оператор циклу for. Тут i параметр циклу, який буде перебирати всі значення масиву X, а j параметр циклу, який буде зіставляти кожному значенню масиву X по черзі всі значення масиву Y.

Таким чином, спочатку будуть обчислені всі значення функції Z при мінливому Y (від першого до останнього значення в масиві) і першому значенні масиву X. Потім при другому значенні масиву X і т. Д.

Нагадаємо, тут length визначає кількість елементів масиву X (Y) (див. Розділ 2).

Нарешті, для побудови поверхні звернемося до функції plot3d1 (див. Ли

Стінг 5.2, рис.5.12).

Як видно з прикладу, використання лише функції plot3d для графічного зображення показників, що залежать від двох незалежних змінних, досить складно. У Scilab існує кілька команд, покликаних полегшити процедуру створення прямокутної сітки це genfac3d і eval3dp.

Найпростішою з них по синтаксису є функція genfac3d:

Тут xx, yy, zz результуюча матриця розміром (4; n 1 m 1), де xx (:, i), yy (:, i) і zz (:, i) координати кожної з осередків прямокутної сітки;

x вектор x-координат розміру m;

y вектор y-координат розміру n;

z матриця розміру (m; n) значень функції Z (x i; y j).

Побудувати графік функції Z = sin (t) cos (t).

Визначимо масив параметра t і обчислимо значення функції Z = sin (t) cos (t). Прямокутну сітку створимо за допомогою команди genfac3d (див. Лістинг 5.3).

Лістинг 5.3. Створення прямокутної сітки графіка командою genfac3d і побудова її графіка за допомогою функції plot3d

Для формування графіка звернемося до функції plot3d (див. Рис. 5.1). Недоліком команди genfac3d є те, що вона все-таки не спрощує

роботу з функцією plot3d, якщо поверхня задається функцією від двох змінних. В такому випадку необхідно використовувати команду eval3dp:

Xf, Yf, Zf - результуюча матриця розміром (4; n 1 m 1), де xx (:, i), yy (:, i) і zz (:, i) координати кожної з осередків прямокутної сітки;

fun функція, певна користувачем, яка задає тривимірний графік;

5.1. Функції plot3d і plot3d1

p1 вектор розміру m;

p2 вектор розміру n.

Проілюструємо дію команди eval3dp наступним прикладом.

Побудувати графік, заданий наступними рівняннями: x = p 1 sin (p 1) cos (p 2), y = p 1 cos (p 1) cos (p 2), z = p 1 sin (p 2).

Перш за все, визначимо масиви значень параметрів p 1 і p 2. Далі створимо функцію scp, яка задає графік.

Нагадаємо, що функції в Scilab створюються за допомогою команди deff:

де s1, s2. список вихідних параметрів, тобто змінних, яким буде присвоєно кінцевий результат обчислень;

newfunction ім'я створюваної функції, воно буде використовуватися для її виклику;

e1, e2. вхідні параметри.

Зверніть увагу, що команда deff записана в три рядки тільки для зручності читання лістингу (див. Лістинг 5.4).

Лістинг 5.4. Створення прямокутної сітки графіка командою eval3dp і побудова її графіка за допомогою функції plot3d

p2 = linspace (0,2 *% pi, 10); deff ( "[x, y, z] = scp (p1, p2)", [ "x = p1. * sin (p1). * cos (p2)"; "y = p1. * cos (p1). * cos (p2) ";

"Z = p1. * Sin (p2)"]); [Xf, Yf, Zf] = eval3dp (scp, p1, p2); plot3d (Xf, Yf, Zf);

Тепер сформуємо прямокутну мережу за допомогою команди eval3dp і побудуємо графік, звернувшись до функції plot3d (див. Рис. 5.13).

Схожі статті