Новости
															
														Анотація: Розглянемо можливості Octave при вирішенні задач векторної алгебри та аналітичної геометрії. Завдяки потужним графічним засобам пакета ці завдання стають більш зрозумілими і наочними.
6.1 Векторна алгебра
В геометрії вектором називається всякий спрямований відрізок. Вчення про дії над векторами називається векторною алгеброю.
  Вектор, початком якого служить точка А, а кінцем точка В, позначається 
  або 
  .  Якщо початок і кінець вектора збігаються, то відрізок перетворюється в точку і втрачає напрямок, такий відрізок називають нуль-вектором. 
  Якщо вектор заданий точками 
  і 
  , То його координати: 
  .  Довжина вектора називається також його модулем, позначається 
  або 
  і обчислюється за формулою: 
формули
  служать для обчислення координат середини відрізка 
  . 
  розділити відрізок 
  в заданому відношенні λ можна так: 
  , тут 
  і 
  - координати точки L, що ділить відрізок щодо 
  . 
Нагадаємо, що вектори в Octave задаються шляхом поелементного введення:
>>> a = [1 0 3]% Вектор-рядок a = 1 0 3 >>> b = [0; 1; 4]% Вектор-стовпець b = 0 у середньому 1 4
  Приклад 6.1.  побудувати вектор 
  . 
Рішення прикладу показано на Мал. 6.1 . лістинг 6.1 містить команди Octave, за допомогою яких був виконаний малюнок.
clear all; clf; cla; set (gcf, 'Position', [20, 20, 400, 400]); set (gcf, 'numbertitle', 'off') set (gcf, 'name', 'Vector') set (gca, 'Position', [.1, .1, .8, .8]); set (gca, 'xlim', [0, 10]); set (gca, 'ylim', [0, 10]); set (gca, 'xtick', [0: 10]); set (gca, 'ytick', [0: 10]); grid on; xlabel ( 'x'); ylabel ( 'y'); a = [5 7]; L1 = line ([0, a (1)], [0, a (2)]); set (L1, 'LineWidth', 3, 'Color', 'k'); L1_ = line ([a (1), a (1)], [a (2), a (2)]); set (L1_, 'LineWidth', 5, 'Color', 'k'); set (L1_, 'marker', '<', 'markersize', 16); Лістинг 6.1. Побудова вектора (приклад 6.1).
Приклад 6.2. Побудувати вектори, задані координатами початку і кінця:
  Рішення прикладу показано в   лістингу 6.2   і на   Мал.  6.2   .  Зверніть увагу, що для зображення вектора була створена спеціальна функція 
  .  Ця функція зображує спрямований відрізок 
  в декартовій системі координат і повертає координати його середини.  В даному випадку координати середини відрізка потрібні для нанесення відповідного напису, що позначає вектор на малюнку. 
Мал.6.1.
  Вектор на площині clear all;  % Функція малює спрямований відрізок АВ, як результат видає% координати середини відрізка АВ.  function [M] = vector (A, B) x1 = A (1);  x2 = B (1);  y1 = A (2);  y2 = B (2);  alf = 30 * pi / 180;% Кут в вершині стрілки в радіанах L = 15;  % Розподіл відрізка в заданому відношенні xm = (x1 + L * x2) / (1 + L);  ym = (y1 + L * y2) / (1 + L);  k1 = (y2-y1) / (x2-x1);  % Кут нахилу прямої АВ if (k1 == Inf) |  (K1 == - inf)% Відрізок перпендикулярний осі Ох% Координати підстави трикутника, утворює стрілку x4 = xm-0.2;  y4 = ym;  x3 = xm + 0.2;  y3 = ym;  elseif k1 == 0% Відрізок перпендикулярний осі Оу x4 = xm;  y4 = ym-0.2;  x3 = xm;  y3 = ym + 0.2;  else% Рівняння прямої АВ k1 = (y2-y1) / (x2-x1);  m1 = y1-x1 * (y2-y1) / (x2-x1);  % Рівняння прямої перпендикулярної АВ k3 = -1 / k1;  m3 = 1 / k1 * xm + ym;  % Рівняння прямої, що проходить через точку В під кутом alf до прямої АВ k2 = (- k1 * tan (alf)) / (tan (alf) * k1-1);  m2 = y2-k2 * x2;  % Рівняння прямої, що проходить через точку В під кутом -alf до прямої АВ k4 = (- k1 * tan (-alf)) / (tan (-alf) * k1-1);  m4 = y2-k4 * x2;  % Координати підстави трикутника, утворює стрілку x4 = (m3-m2) / (k2-k3);  y4 = k2 * x4 + m2;  x3 = (m3-m4) / (k4-k3);  y3 = k3 * x3 + m3;  end;  % Зображення прямий АВ line ([A (1), B (1)], [A (2), B (2)], 'LineWidth', 3, 'Color', 'k');  % Зображення стрілки в точці В patch ([x2, x3, x4], [y2, y3, y4], 'k');  % Координати середини відрізка АВ M (1) = (x1 + x2) / 2;  M (2) = (y1 + y2) / 2;  end;  clf;  cla;  set (gcf, 'Position', [20, 20, 400, 400]);  set (gcf, 'numbertitle', 'off');  set (gcf, 'name', 'Vector');  set (gca, 'Position', [.1, .1, .8, .8]);  set (gca, 'xlim', [0, 10]);  set (gca, 'ylim', [0, 10]);  set (gca, 'xtick', [0: 10]);  set (gca, 'ytick', [0: 10]);  grid on;  xlabel ( 'x');  ylabel ( 'y');  ma = vector ([2, 3], [4, 6]);  % Побудова вектора a T = text (ma (1) + 0.3, ma (2) -0.3, 'a');  set (T, 'FontSize', 20) mb = vector ([9, 7], [6, 5]);  % Побудова вектора b T = text (mb (1) + 0.3, mb (2) -0.3, 'b');  set (T, 'FontSize', 20) mc = vector ([1, 8], [4, 8]);  % Побудова вектора c T = text (mc (1) + 0.3, mc (2) -0.3, 'c');  set (T, 'FontSize', 20) md = vector ([6, 7], [6, 9]);  % Побудова вектора d T = text (md (1) + 0.3, md (2) -0.3, 'd');  set (T, 'FontSize', 20) mk = vector ([8, 4], [8, 1]);  % Побудова вектора k T = text (mk (1) + 0.3, mk (2) -0.3, 'k');  set (T, 'FontSize', 20) mp = vector ([7, 3], [5, 3]);  % Побудова вектора p T = text (mp (1) + 0.3, mp (2) -0.3, 'p');  set (T, 'FontSize', 20) Лістинг 6.2.  Побудова векторів, функція vector (приклад 6.2). 
  Мал.  6.2.  Геометричне рішення прикладу 6.2 
  Два ненульових вектора 
  і 
  рівні, якщо вони равнонаправлени і мають один і той же модуль.  Всі нульові вектори рівні.  У всіх інших випадках вектори не рівні.  Два вектора мають рівні модулі та протилежні напрямки, називаються протилежними.  Вектори лежать на паралельних прямих називаються колінеарними. 
  Приклад 6.3.  Порівняти вектори 
  і 
  , 
  , 
  і 
  , 
  і 
  задані координатами початку і кінця: 
  . 
  Текст файлу-сценарію представлений в   лістингу 6.3   .  При вирішенні прикладу була створена функція 
  , Яка обчислює довжину відрізка XY, заданого координатами точок 
  і 
  .  Для зображення векторів використовувалася функція 
  , Описана в прикладі 6.2. 
  Рішення прикладу показано в кінці   лістингу 6.3   і на   Мал.  6.3   .  За отриманими числовим результатами і геометричної інтерпретації прикладу можна зробити висновок, що вектори 
  і 
  рівні.  вектори 
  і 
  нерівні, хоча у них і однакові довжини, але напрямки різні.  вектори 
  і 
  нерівні по тій же причині, а вектори 
  і 
  рівні.  вектори 
  і 
  - протилежні, так як мають однаковий модуль і протилежні напрямки. 
function d = dlina (X, Y)% Функція повертає довжину відрізка XY d = sqrt ((Y (1) -X (1)) ^ 2 + (Y (2) -X (2)) ^ 2); end; clf; set (gcf, 'Position', [20, 20, 400, 400]); set (gcf, 'numbertitle', 'off') set (gcf, 'name', 'Vector') cla; set (gca, 'Position', [.1, .1, .8, .8]); set (gca, 'xlim', [0, 10]); set (gca, 'ylim', [0, 10]); set (gca, 'xtick', [0: 10]); set (gca, 'ytick', [0: 10]); grid on; xlabel ( 'x'); ylabel ( 'y'); % Вихідні дані A = [1, 2]; B = [3, 5]; C = [3, 2]; D = [5, 5]; O = [7, 9]; M = [6, 6] ; N = [8, 6]; K = [4, 9]; L = [3, 6]; P = [9, 2]; R = [6, 2]; U = [6, 3]; V = [9, 3]; % Довжини відрізків dAB = dlina (A, B) dCD = dlina (C, D) dON = dlina (O, N) dOM = dlina (O, M) dKL = dlina (K, L) dPR = dlina (P, R ) dUV = dlina (U, V)% Побудова вектора AB vector (A, B); A_ = text (A (1) + 0.3, A (2) -0.3, 'A'); set (A_, 'FontSize', 20) B_ = text (B (1) + 0.3, B (2) -0.3, 'B'); set (B_, 'FontSize', 20)% Побудова вектора CD vector (C, D); C_ = text (C (1) + 0.3, C (2) -0.3, 'C'); set (C_, 'FontSize', 20) D_ = text (D (1) + 0.3, D (2) -0.3, 'D'); set (D_, 'FontSize', 20)% Побудова вектора OM vector (O, M); O_ = text (O (1) + 0.3, O (2) -0.3, 'O'); set (O_, 'FontSize', 20) M_ = text (M (1) + 0.3, M (2) -0.3, 'M'); set (M_, 'FontSize', 20)% Побудова вектора ON vector (O, N); O_ = text (O (1) + 0.3, O (2) -0.3, 'O'); set (O_, 'FontSize', 20) N_ = text (N (1) + 0.3, N (2) -0.3, 'N'); set (N_, 'FontSize', 20)% Побудова вектора KL vector (K, L); K_ = text (K (1) + 0.3, K (2) -0.3, 'K'); set (K_, 'FontSize', 20) L_ = text (L (1) + 0.3, L (2) -0.3, 'L'); set (L_, 'FontSize', 20)% Побудова вектора PR vector (P, R); P_ = text (P (1) + 0.3, P (2) -0.3, 'P'); set (P_, 'FontSize', 20) R_ = text (R (1) + 0.3, R (2) -0.3, 'R'); set (R_, 'FontSize', 20)% Побудова вектора UV vector (U, V); U_ = text (U (1) + 0.3, U (2) -0.3, 'U'); set (U_, 'FontSize', 20) V_ = text (V (1) + 0.3, V (2) -0.3, 'V'); set (V_, 'FontSize', 20)% Рішення прикладу 6.3% Довжини відрізків: AB = 3.6056 CD = 3.6056 ON = 3.1623 OM = 3.1623 KL = 3.1623 PR = 3 UV = 3 Лістинг 6.3. Порівняння векторів (приклад 6.3).