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

  1. 4.1 Побудова двовимірних графіків
  2. 4.1.1 Побудова графіків у декартовій системі координат

Анотація: У цій лекції розповідається як будувати графіки за допомогою Octave. Перший розділ присвячений роботі з двовимірними графіками. У другому розділі розглянуто створення різних тривимірних графіків. Потім описані анімаційні можливості GNU Octave. Останній параграф присвячений опису графічних об'єктів.

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

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

4.1.1 Побудова графіків у декартовій системі координат

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

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

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

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

Приклад 4.1. Побудувати графік функції Приклад 4 на інтервалі [-10; 10].

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

Вирішення цього завдання представлено в лістингу 4.1 .

x = -10: 0.1: 10; % Формування масиву x. y = sin (x) + sin (3 * x) / 3 + sin (5 * x) / 5; % Формування масиву y. plot (x, y)% Побудова графіка функції. Лістинг 4.1. Побудова графіка (приклад 4.1).

В результаті звернення до функції В результаті звернення до функції   буде створено вікно з ім'ям Figure 1, в якому буде побудований графік функції буде створено вікно з ім'ям Figure 1, в якому буде побудований графік функції .

Графік формується шляхом з'єднання сусідніх точок прямими лініями. Чим більше буде інтервал між сусідніми точками (чим менше буде точок), тим більше буде помітно, що графік представляє з себе ламану.

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

  1. Звернутися до функції plot наступним чином - масиви абсцис і ординат першого графіка, - масиви абсцис і ординат другого графіка, - масиви абсцис і ординат n-ого графіка.
  2. Кожен графік зображати за допомогою функції , Але, перш ніж звертатися до функцій викликати команду hold on1, яка блокує режим очищення вікна.

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

на Мал. 4.2. зображені графіки функцій: на   Мал


Мал.4.2.

графіки функцій

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

Побудова графіків функцій першим і другим способом представлено в лістингу 4.2 . Утворені графіки функцій представлені на Мал. 4.2 .

% Спосіб перший x = -4 * pi: 0.1: 4 * pi; v = sin (x); w = cos (x); r = sin (x) / 2; p = 1.5 * cos (x); plot (x, v, x, w, x, r, x, p); % Спосіб другий x = -4 * pi: 0.1: 4 * pi; v = sin (x); plot (x, v); hold on; v = cos (x); plot (x, v); v = sin (x) / 2; plot (x, v); v = 1.5 * cos (x); plot (x, v); Лістинг 4.2. Два способи побудови графіка (приклад 4.2).

Зверніть увагу, що при побудові графіків першим способом Octave> автоматично змінює кольори зображуваних в одній системі координат графіків. Однак управляти кольором і видом кожного з зображуваних графіків може і користувач, для чого необхідно скористатися повною формою функції Зверніть увагу, що при побудові графіків першим способом Octave> автоматично змінює кольори зображуваних в одній системі координат графіків , де - масиви абсцис графіків; - масиви ординат графіків;

Таблиця 4.2. Кольори лінії Символ Колір лінії y жовтий m рожевий c блакитний r червоний g зелений d синій w білий

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

У рядку можуть брати участь символи, що відповідають за тип лінії, маркер, його розмір, колір лінії і висновок легенди. Спробуємо розібратися з цими символами. За суцільну лінію відповідає символ "-". За маркери відповідають такі символи ( см. табл. 4.1 ).

Колір лінії визначається буквою латинського алфавіту ( см. табл.4.2 ), Можна використовувати і цифри, але з точки зору авторів використання букв більш логічно (їх легше запам'ятати по англійським назвам квітів).


Мал.4.3.

Результат роботи функції plot (x = -pi: 0.1: pi, sin (x), "-k; sin (x);")

При визначенні рядка, що відповідає за виведення лінії, слід враховувати наступне:

  • не важливий порядок символу кольору і жирної цятки;
  • якщо присутній символ "-", то лінія завжди буде суцільна, при цьому, якщо присутній символ маркера, то все зображувані точки ще позначатимуться маркером, якщо символу маркера немає, то сусідні точки просто будуть з'єднуватися лініями;
  • якщо символ маркера "-" відсутній, то лінія може бути, як суцільна, так і точкова; це залежить від наявності жирної цятки, якщо символу маркера немає, то буде суцільна лінія, інакше - точкова.

Якщо необхідна легенда для графіка, то її слід включити до рядка форматів, укладену в символи ";". Наприклад, команда Якщо необхідна легенда для графіка, то її слід включити до рядка форматів, укладену в символи ; виведе на екран графік функції чорного кольору на інтервалі c легендою (Див. Мал. 4.3 )

Користувач може управляти і величиною маркера, для цього після рядка форматів слід вказати ім'я параметра Користувач може управляти і величиною маркера, для цього після рядка форматів слід вказати ім'я параметра   (Розмір маркера) і через кому величину - ціле число, яке визначає розмір маркера на графіку (Розмір маркера) і через кому величину - ціле число, яке визначає розмір маркера на графіку. Наприклад, команда , 4); виведе на екран графік, представлений на Мал. 4.4 .

Для того, щоб щоб вивести графік в новому вікні, перед функцією plot, слід викликати функцію Для того, щоб щоб вивести графік в новому вікні, перед функцією plot, слід викликати функцію .

Увага! При роботі з графіками в Octave необхідно розуміти наступне: клацання по кнопці закриття вікна з графіками призводить не до знищення (закриття) вікна, а до його приховану. При повторному виклику команди малювання графіків відбувається відновлення вікна, в якому і зображуються графіки. Коректне закриття графічного вікна можна здійснити в Octave тільки програмно.

Графічне вікно створюється функцією Графічне вікно створюється функцією   ; ;

тут тут   - змінна, в якій буде зберігатися дескриптор (номер) вікна - змінна, в якій буде зберігатися дескриптор (номер) вікна. Для подальших операцій з вікном треба буде використовувати саме змінну, в якій зберігається дескриптор.

Знищення (закриття) вікна здійснюється за допомогою функції Знищення (закриття) вікна здійснюється за допомогою функції   , де   - ім'я дескриптора закривається вікна , де - ім'я дескриптора закривається вікна.

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

Octave представляє додаткові можливості для оформлення графіків:

При виведенні тексту за допомогою функцій При виведенні тексту за допомогою функцій   можна виводити грецькі букви2 (   см можна виводити грецькі букви2 ( см. табл. 4.3 ), Використовувати символи верхнього і нижнього індексу. Для виведення тексту у верхньому індексі використовується символ "^", в нижньому - символ "_". Наприклад, для виведення необхідно буде ввести текст e ^ {cos (x)}, а для виведення - текст x_ {min}. При роботі з текстом можна також використовувати синтаксис .

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

Приклад 4.3. Послідовно вивести в графічне вікно графіки функцій Приклад 4 з затримкою 5 секунд.

Текст рішення задачі з коментарями наведено в лістингу 4.3 .

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

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

Розглянемо два варіанти побудови графіків (див. лістинг 4.4 ).

% __________________ Спосіб перший _____________________________ x = -3 * pi (): pi () / 20: 3 * pi ();% Формуємо масив x. y = exp (sin (x)); % Формуємо масив y. u = exp (cos (x / 3));% Формуємо масив u. v = exp (sin (x / 2));% Формуємо масив v. % Будуємо графік функції y (x), суцільна чорна лінія, без маркера,% в якості легенди виводимо % __________________ Спосіб перший _____________________________ x = -3 * pi (): pi () / 20: 3 * pi ();% Формуємо масив x . plot (x, y, "k; e ^ {sin (x)};") hold on;% Блокуємо режим очищення вікна. % Будуємо графік функції u (x), суцільна чорна лінія, c маркером% трикутником, розмір маркера - 4, як легенду виводимо . plot (x, u, "-> k; e ^ {cos (x / 3)};", "markersize", 4)% Будуємо графік функції v (x), суцільна чорна лінія, c маркером% окружністю, розмір маркера - 4, як легенду виводимо . plot (x, v, "-ok; e ^ {sin (x / 2)};", "markersize", 4); % __________________ Спосіб другий _____________________________ x = -3 * pi (): pi () / 20: 3 * pi (); y = exp (sin (x)); u = exp (cos (x / 3)); v = exp (sin (x / 2)); % Відмінність виведення трьох графіків полягає в тому, замість 3-х функцій plot і% двох hold on використовується одна функція plot в якій вказані ті ж% параметри виведення графіків, що і в лістингу 4.4 plot (x, y, "k; e ^ {sin (x)}; ", x, u," -> k; e ^ {cos (x / 3)}; "," markersize ", 4, x, v," -ok; e ^ {sin ( x / 2)}; "," markersize ", 4) Лістинг 4.4. Побудова графіків (приклад 4.4).

на Мал. 4.5. зображені графіки функцій: на   Мал

Обидва способи формують один і той же графік (див. Мал. 4.5 ).

Приклад 4.5. Побудувати графік функції Приклад 4 на інтервалі [-2; 2].

У зв'язку з тим, що функція не визначена в точці У зв'язку з тим, що функція не визначена в точці   , Будемо будувати її як графіки двох функцій   на полуінтервале [-2;  0) і   на полуінтервале (0; 2] , Будемо будувати її як графіки двох функцій на полуінтервале [-2; 0) і на полуінтервале (0; 2]. Текст програми на Octave з коментарями наведено в лістингу 4.5 , Графік функції - на Мал. 4.6 .

a = 1; b = -0.4; c = 0.05; x1 = _2: 0.01: _0.1; % Визначаємо аргумент (масив x) на [-2; -_ 0.1]. x2 = 0.1: 0.01: 2; % Визначаємо аргумент (масив x) на [0.1; 2]. y1 = a + b. / x1 + c. / x1. / x1; % Обчислюємо значення функції y (x) на [_2; _0.1]. y2 = a + b. / x2 + c. / x2. / x2; % Обчислюємо значення функції y (x) на [0.1; 2]. % Будуємо графік як графік двох функцій, на інтервалах [-2; -0.1], [0.1; 2],% колір графіка чорний, легенда -. plot (x1, y1, 'k; f (x) = a + b / x + c / x ^ 2;', x2, y2, 'k'); title ( 'y = f (x)');% Підпис над графіком. xlabel ( 'X'); % Підпис осі X. ylabel ( 'Y');% Підпис осі Y. grid on; % Малюємо лінії сітки. Лістинг 4.5. Побудова графіка (приклад 4.5).

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


Мал.4.6.

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

Приклад 4.6. Побудувати графік функції Приклад 4 на інтервалі [-5; 7].

рівняння рівняння   має коріння -1, 3 має коріння -1, 3. Тому наша функція матиме розриви в цих точках . Будемо будувати її, як графіки трьох функцій, на трьох інтервалах [-5; _1.1], [0.9; 2.9], [3.1; 7]. лістинг 4.6 демонструє рішення прикладу 4.6, а на Мал. 4.7 зображений графік функції як результат роботи цієї програми.

% Визначаємо аргументи на інтервалах [-5; -1.1], [0.9; 2.9], [3.1; 7]. x1 = -5: 0.01: -1.1; x2 = -0.9: 0.01: 2.9; x3 = 3.1: 0.01: 7; % Обчислюємо значення y (x) на відповідних інтервалах. y1 = 1 ./ (x1. * x1-2 * x1-3); y2 = 1 ./ (x2. * x2-2 * x2-3); y3 = 1 ./ (x3. * x3-2 * x3-3); % Будуємо графік чорного кольору, як графік 3-х функцій. plot (x1, y1, 'k', x2, y2, 'k', x3, y3, 'k'); title ( 'y = f (x)'); % Підпис над графіком. xlabel ( 'X'); % Підпис осі X. ylabel ( 'Y') ;. % Підпис осі Y. legend ( 'f (x) = 1 / (x ^ 2-2x-3)', 4); % Висновок легенди. grid on; % Малюємо лінії сітки. Лістинг 4.6. Побудова графіка (приклад 4.6).

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

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

Приклад 4.7. Побудувати графіки функції Приклад 4 на інтервалі [-5; 5].

Вирішення цього завдання представлено в лістингу 4.7 , Отриманий графік - на Мал. 4.8 .

x = -5: 0.1: 5; y = x. ^ 3; z = cos (2 * x); plotyy (x, y, x, z); grid on; title ( 'Plot x ^ 3, cos (x / 2)'); xlabel ( 'X'); ylabel ( 'Y'); Лістинг 4.7.

на Мал. 4.8. зображені графіки функцій: на   Мал


Мал.4.8.

графіки функції

Octave надає можливість побудувати кілька осей в графічному вікні і вивести на кожну з них свої графіки. Для цього слід використовувати функцію subplot: subplot (row, col, cur);

параметри параметри   і   визначають кількість графіків по вертикалі і горизонталі відповідно,   визначає номер поточного графіка і визначають кількість графіків по вертикалі і горизонталі відповідно, визначає номер поточного графіка. Повторне звернення до функції з тими ж значеннями і дозволяє просто змінює номер поточного графіка і може використовуватися для перемикання між графіками. Розглянемо використання функції при вирішенні наступного завдання.

Приклад 4.8. Побудувати графіки функції Приклад 4 на інтервалі [-6; 6].

Рішення завдання представлено в істінге 4.8 л, отримане графічне вікно - на Мал. 4.9 .

% Формуємо масиви x, y, z, u, k, v, w. x = -6: 0.2: 6; y = 2 * exp (* 0.15 * x. ^ 2); z = exp (0.7 * x-0.25 * x. ^ 2); u = 0.5 * exp (-0.33 * x). * sin (2 * x + pi () / 3); k = 3 * sin (x * 0.22. * x. ^ 2); v = cos (x); w = exp (cos (x)); % Ділимо графічне вікно на 6 частин і оголошуємо перший графік поточних. subplot (3, 2, 1); plot (x, y); % Будуємо графік y (x) з лініями сітки і підписами. grid on; title ( 'Plot y = 2 e ^ {- 0.15x ^ 2}'); xlabel ( 'x'); ylabel ( 'y'); subplot (3, 2, 2); % Другий графік оголошуємо поточним. plot (x, z); % Будуємо графік z (x) з лініями сітки і підписами. grid on; title ( 'Plot z = cos ^ 2 (x)'); xlabel ( 'x'); ylabel ( 'z'); subplot (3, 2, 3); % Третій графік оголошуємо поточним. plot (x, u); % Будуємо графік u (x) з лініями сітки і підписами. grid on; title ( 'Plot u = 0.5e ^ {- 0.33x} sin (2x + pi / 3)'); xlabel ( 'x'); ylabel ( 'u'); subplot (3, 2, 4); % Четвертий графік оголошуємо поточним. plot (x, k); % Будуємо графік k (x) з лініями сітки і підписами. grid on; title ( 'Plot k = 3sin (x-0.22x ^ 2)'); xlabel ( 'x'); ylabel ( 'k'); subplot (3, 2, 5); % П'ятий графік оголошуємо поточним. plot (x, v); % Будуємо графік v (x) з лініями сітки і підписами. grid on; title ( 'Plot v = cos (x)'); xlabel ( 'x'); ylabel ( 'v'); subplot (3, 2, 6); % Шостий графік оголошуємо поточним. plot (x, w); % Будуємо графік w (x) з лініями сітки і підписами. grid on; title ( 'Plot w = e ^ {cos (x)}'); xlabel ( 'x'); ylabel ( 'w'); Лістинг 4.8. Побудова графіків (приклад 4.8).

Для побудови графіка функції можна використовувати функцію Для побудови графіка функції можна використовувати функцію   наступної структури: наступної структури: .

тут тут   - ім'я функції (стандартної функції Octave або функції, певної користувачем),   - інтервал, на якому буде будуватися графік,   - рядок формату, що визначає лише параметри лінії (але не легенду) - ім'я функції (стандартної функції Octave або функції, певної користувачем), - інтервал, на якому буде будуватися графік, - рядок формату, що визначає лише параметри лінії (але не легенду). Легенда графіка формується автоматично функцією без використання функції . Не дозволяє формувати легенду і третій параметр функції , На відміну від функції .

Приклад 4.9. використовуючи функцію Приклад 4 , Побудувати графіки функцій на інтервалі .

Текст програми на мові Octave з коментарями наведено в лістингу 4.9 . Отримані графіки можна побачити на Мал. 4.10 .

% Визначаємо функцію f = exp (cos (x)) function y = f (x) y = exp (cos (x)); end% Визначаємо функцію g = exp (sin (x)) function z = g (x) z = exp (sin (x)); end h = figure (); % Ділимо графічне вікно на 4 частини і оголошуємо перший графік поточних. subplot (2, 2, 1); % Будуємо графік g = exp (cos (x)) на інтервалі % Визначаємо функцію f = exp (cos (x)) function y = f (x) y = exp (cos (x));  end% Визначаємо функцію g = exp (sin (x)) function z = g (x) z = exp (sin (x));  end h = figure ();  % Ділимо графічне вікно на 4 частини і оголошуємо перший графік поточних % Блакитного кольору з маркером. fplot (@g, [3 * pi (), 2 * pi ()], '-pb'); title ( 'Plot y = e ^ {cos (x)}'); % Підписуємо графік. grid on; % Проводимо лінії сітки subplot (2, 2, 2); % Другий графік оголошуємо поточним. % Будуємо графік f = exp (sin (x)) на інтервалі % Червоного кольору з маркером. fplot (@f, [3 * pi (), 2-pi ()], '-or'); title ( 'Plot z = e ^ {sin (x)}');% Підписуємо графік. grid on; % Проводимо лінії сітки subplot (2, 2, 3); % Третій графік оголошуємо поточним. % Будуємо графік sin (x) на інтервалі чорного кольору fplot (@sin, [3 * pi (), 2 * pi ()], 'k'); title ( 'Plot sin (x)'); % Підписуємо графік. grid on; % Проводимо лінії сітки subplot (2, 2, 4); % Четвертий графік оголошуємо поточним. % Будуємо графік cos (x) на інтервалі зеленого кольору fplot (@cos, [3 * pi (), 2 * pi ()], 'g'); title ( 'Plot cos (x)'); % Підписуємо графік. grid on; % Проводимо лінії сітки Лістинг 4.9. Побудова графіків за допомогою fplot (приклад 4.9).