Введение в Octave

Векторная алгебра и аналитическая геометрия

Разбить на страницы
Показывать лекцию целиком

6.1 Векторная алгебра

В геометрии вектором называется всякий направленный отрезок. Учение о действиях над векторами называется векторной алгеброй.

Вектор, началом которого служит точка А, а концом точка В, обозначается $$\overrightarrow{AB}$$ или $$\vec{a}$$. Если начало и конец вектора совпадают, то отрезок превращается в точку и теряет направление, такой отрезок называют нуль-вектором.

Если вектор задан точками $$A(x_1, y_1)$$ и $$B(x_2, y_2)$$, то его координаты: $$\overrightarrow{AB}=\{(x_2-x_1), (y_2-y_1)\}=\{X,Y\}$$. Длина вектора называется также его модулем, обозначается $$|\overrightarrow{AB}|$$ или $$|\vec{a}|$$ и вычисляется по формуле:

$$|\vec{a}|=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}=\sqrt{X^2+Y^2}$$

Формулы

$$M_x=\frac{x_1+x_2}{2},M_y=\frac{y_1+y_2}{2}$$

служат для вычисления координат середины отрезка $$\overrightarrow{AB}$$.

Разделить отрезок $$\overrightarrow{AB}$$ в заданном отношении λ можно так: $$L_{x}=\frac{x_{1}+\lambda x_{2}}{1+\lambda},L_{y}=\frac{y_{1}+\lambda y_{2}}{1+\lambda }$$, здесь $$L_x$$ и $$L_y$$ — координаты точки L, делящей отрезок в отношении $$AL:LB=l_{1}:l_{2}=\lambda$$.

Напомним, что векторы в Octave задаются путём поэлементного ввода:

	
>>> a =[1 0 3] % Вектор-строка
a = 1 0 3
>>> b = [0; 1; 4] % Вектор-столбец
b =
0
1
4

Пример 6.1. Построить вектор $$|\vec{a}| = \{5, 7\}$$.

Решение примера показано на рис. 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.2. Построить векторы, заданные координатами начала и конца:

$$\begin{array}{ccc} \vec{a}=\{(2,3),(4,6)\}, \vec{b}=\{(9,7),(6,5)\}, \vec{c}=\{(1,8),(4,8)\},\\ \vec{d}=\{(6,7),(6,9)\}, \vec{k}=\{(8,4),(8,1)\}, \vec{p}=\{(7,3),(5,3)\}. \end{array}$$

Решение примера показано в листинге 6.2 и на рис. 6.2. Обратите внимание, что для изображения вектора была создана специальная функция $$vector(A, B)$$. Эта функция изображает направленный отрезок $$|\overrightarrow{AB}|$$ в декартовой системе координат и возвращает координаты его середины. В данном случае координаты середины отрезка нужны для нанесения соответствующей надписи, обозначающей вектор на рисунке.

(рис 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) Геометрическое решение примера 6.2

Два ненулевых вектора $$\vec{a}$$ и $$\vec{b}$$ равны, если они равнонаправлены и имеют один и тот же модуль. Все нулевые векторы равны. Во всех остальных случаях векторы не равны. Два вектора имеющие равные модули и противоположные направления, называются противоположными . Векторы лежащие на параллельных прямых называются коллинеарными.

Пример 6.3. Сравнить векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$, $$\overrightarrow{ON}$$, $$\overrightarrow{OM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ заданные координатами начала и конца: $$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)$$.

Текст файла-сценария представлен в листинге 6.3. При решении примера была создана функция $$dlina(X, Y)$$, которая вычисляет длину отрезка XY, заданного координатами точек $$X(x_1, x_2)$$ и $$Y(y_1, y_2)$$. Для изображения векторов использовалась функция $$vector(A, B)$$, описанная в примере 6.2.

Решение примера показано в конце листинга 6.3 и на рис. 6.3 . По полученным числовым результатам и геометрической интерпретации примера можно сделать вывод, что векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$ равны. Векторы $$\overrightarrow{ON}$$ и $$\overrightarrow{OM}$$ не равны, хотя у них и одинаковые длины, но направления различны. Векторы $$\overrightarrow{ON}$$ и $$\overrightarrow{KL}$$ неравны по той же причине, а векторы $$\overrightarrow{OM}$$ и $$\overrightarrow{KL}$$ равны. Векторы $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ — противоположные, так как имеют одинаковый модуль и противоположные направления.

	
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.4. Проверить коллинеарны ли векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$,$$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$. Координаты точек: $$A(4, 2), B(2, 3), C(3, 2), D(7, 0), M(2, 1), N(6, 1), K(1, 2), L(7, 2), P(3, 3), R(5, 3), U(1, 4), V(5, 4)$$.

Текст файла-сценария представлен в листинге 6.4. При решении примера была создана функция $$kollin(a, b)$$, которая определяет коллинеарны ли векторы $$\vec{a}=\{x_{1}, y_{1}\}$$ и $$\vec{b}=\{x_{2}, y_{2}\}$$. Результатом работы функции является коэффициент пропорциональности векторов. Если векторы коллинеарны, то их соответствующие координаты пропорциональны: $$\pm\lambda =\frac{x_{2}}{x_{1}}=\frac{y_{2}}{y_{1}}$$. Знак коэффициента пропорциональности говорит о направлении векторов: "+" — в одну сторону, "_" — в разные. Для изображения векторов использовалась функция $$vector(A, B)$$, описанная в листинге 6.2 к примеру 6.2.

(рис 6.3) Изображение векторов примера 6.3

Решение примера показано в конце листинга 6.4 и на рис. 6.4. По полученным числовым результатам и геометрической интерпретации примера можно сделать вывод, что векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$ коллинеарны, но направлены в разные стороны. Векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$ не являются коллинеарными. Векторы $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ — коллинеарны и имеют одно направление.

	
function[lam]= kollin(a, b)
	if (a(2)==0)  (b(2)==0)
		lam=a(1)/b(1);
	elseif (a(1)==0)  (b(1)==0)
		lam=a(2)/b(2);
	elseif a(1)/b(1)==a(2)/b(2)
		lam=a(1)/b(1);
	else
		lam=Inf;
	end;
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’);
A= [3, 3];B= [1, 4];C= [2, 2];D= [6, 0];M= [2, 6];N= [6, 6];
K= [1, 7]; L= [7, 8];P= [7, 3];R= [9, 3];U= [5, 4];V= [9, 4];
AB_CD=kollin(B-A, D-C)
MN_KL=kollin(N-M, L-K)
PR_UV=kollin(R-P, V-U)
vector(A,B);% Построение вектора AB
A_=text(A(1),A(2)+0.3, ’A’); set(A_, ’FontSize’, 20)
B_=text(B(1),B(2)+0.3, ’B’); set(B_, ’FontSize’, 20)
vector(C,D); % Построение вектора CD
C_=text(C(1),C(2)+0.3, ’C’); set(C_, ’FontSize’, 20)
D_=text(D(1),D(2)+0.3, ’D’); set(D_, ’FontSize’, 20)
vector(N,M); % Построение вектора NM
N_=text(N(1),N(2)+0.3, ’N’); set(N_, ’FontSize’, 20)
M_=text(M(1),M(2)+0.3, ’M’); set(M_, ’FontSize’, 20)
vector(K, L); % Построение вектора KL
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)
vector(P,R); % Построение вектора PR
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)
vector(U,V); % Построение вектора UV
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)
% Результаты — коэффициенты пропорциональности векторов
AB_CD = -0.50000
MN_KL = Inf
PR_UV = 0.50000

Геометрической проекций вектора $$\overrightarrow{AB}$$ на ось OX называется вектор $$\overrightarrow{A^{'}B^{'}}$$, начало которого $$A^{'}$$ есть проекция точки $$A$$ на ось OX, а конец $$B^{'}$$ — проекция точки $$B$$ на ту же ось. Обозначается: $$\overrightarrow{A^{'}B^{'}}=\text{Пр}_{OX}\overrightarrow{AB}$$. Алгебраической проекций вектора $$\overrightarrow{AB}$$ на ось OX называется длина вектора $$\overrightarrow{A^{'}B^{'}}$$, взятая со знаком "+", если направление вектора $$\overrightarrow{AB}$$ совпадает с направлением оси OX, или со знаком "-" в противном случае.

(рис 6.4) Геометрическая интерпретация примера 6.4

Пример 6.5. Найти проекции векторов $$\overrightarrow{AB}$$ и $$\overrightarrow{PR}$$ на ось OX. Координаты точек, задающих векторы: $$A(1, 2), B(3, 5), P (9, 2), R(6, 2)$$.

Текст файла-сценария и значения алгебраических проекций векторов представлены в листинге 6.5. При решении примера была создана функция $$pr\_OX(X)$$, которая вычисляет длину проекции вектора на ось OX. Аргументом функции является массив абсцисс $$X(x_1, x_2)$$ заданного вектора. Для изображения векторов и их проекций использовалась функция $$vector(A, B)$$, описанная в примере 6.2. Геометрические проекции показаны на рис. 6.5.

	
function pr=pr_OX(X) % Длина проекции вектора на ось ОХ
	pr=X(2)-X(1);
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’);
A= [1, 2];B= [3, 5];P= [9, 2];R= [6, 2];
% Длины проекций
prAB=pr_OX([A(1),B(1)])
prPR=pr_OX([P(1),R(1)])		
vector(A,B);% Построение вектора AB
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)
% Построение проекции вектора АВ на ось ОХ
mAB=vector([A(1), 0], [B(1), 0]);
text(mAB(1),mAB(2)+0.5, ’prAB’, ’FontSize’, 18);
vector(P,R); % Построение вектора PR
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)
% Построение проекции вектора PR на ось ОХ
mPR=vector([P(1), 0], [R(1), 0]);
text(mPR(1),mPR(2)+0.3, ’prPR’, ’FontSize’, 18);
% Вычисление проекций
prAB = 2
prPR = -3
(рис 6.5) Проекции векторов на ось OX

Любые векторы можно привести к общему началу, то есть построить векторы равные данным и имеющие общее начало в некоторой точке О.

Над векторами производят различные действия: сложение, вычитание, умножение.

При сложении\ (вычитании ) векторов их координаты складываются (вычитаются): $$\vec{a}\pm\vec{b}=\{(a_{1}\pm b_{1}),(a_{2}\pm b_{2})\}$$.

При умножении\ (делении ) вектора на число все координаты умножаются (делятся) на это число: $$\lambda \vec{a}=\{\lambda a_{1,}\lambda a_{2}\}$, $\frac{\vec{a}}{\lambda}=\{\frac{a_{1}}{\lambda },\frac{a_{2}}{\lambda }\}$$.

(рис 6.6) Геометрическое представление суммы векторов

Пример 6.6. Найти сумму векторов $$\vec{a}=\{1,4\}$$ и $$\vec{b}=\{5,3\}$$.

Если векторы $$\vec{a}$$ и $$\vec{b}$$ не коллинеарны, то геометрически вектор $$\vec{c}=\vec{a}+\vec{b}$$ является диагональю параллелограмма построенного на векторах $$\vec{a}$$ и $$\vec{b}$$ (правило параллелограмма).

Листинг 6.7 содержит команды Octave, с помощью которых был решён пример и результаты их работы. Функция $$vector(A, B)$$, описана в примере 6.2. Геометрическое решение примера показано на рис. 6.6.

	
clf; cla;
set(gcf, ’Position’, [20, 20, 400, 400]);
set(gcf, ’numbertitle’, ’off’)
set(gcf, ’name’, ’Vector c=a+b’)
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, 4]; b = [5, 3];
c =[a(1)+b(1), a(2)+b(2)]% Сумма векторов
ma=vector([0, 0], a); % Построение вектора a
text (ma(1)+0.3,ma(2)-0.3, ’a’, ’FontSize’, 20);
mb=vector([0, 0], b); % Построение вектора b
text (mb(1)+0.3,mb(2)-0.3, ’b’, ’FontSize’, 20);
mc=vector([0, 0], c); % Построение вектора c=a+b
text (mc(1)+0.3,mc(2)-0.3, ’c’, ’FontSize’, 20);		
line([a(1), c(1)], [a(2), c(2)], ’LineWidth’, 1, ’Color’, ’k’);
line([b(1), c(1)], [b(2), c(2)], ’LineWidth’, 1, ’Color’, ’k’);
% Результаты работы программы. Координаты вектора c=a+b:
c = 67
(рис 6.7) Геометрическое представление действий над векторами

Пример 6.7. Выполнить действия над векторами $$\vec{c}=3\vec{a}-2\vec{b}$$, где $$\vec{a}=\{1,2\}$$ и $$\vec{b}=\{3,1\}$$.

Геометрически вычесть из вектора $$\vec{a}$$ вектор $$\vec{b}$$, значит найти такой вектор $$\vec{x}$$ для которого $$\vec{x}+\vec{b}=\vec{a}$$. Иначе говоря, если на векторах $$\vec{x}$$ и $$\vec{b}$$ построить треугольник, то $$\vec{a}$$ — его третья сторона (правило треугольника).

Листинг 6.7 содержит команды Octave и результаты работы файла-сценария. Функция $$vector(A, B)$$, описана в задаче 6.2. Решение примера показано на рис. 6.7.

	
clf; cla;
set(gcf, ’Position’, [20, 20, 400, 400]);
set(gcf, ’numbertitle’, ’off’)
set(gcf, ’name’, ’Vector c=4a-3b’)
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, 1];
c =[4*a(1)-3*b(1),4*a(2)-3*b(2)] % Действия над векторами
for i =1:4 % Построение вектора 4a
ma=vector([0, 0], i*a);
end;
text(ma(1)+0.3,ma(2)-0.3, ’4a’, ’FontSize’, 20);
for i =1:3 % Построение вектора 3b
mb=vector([0, 0], i*b);
end;
text(mb(1)+0.3,mb(2)-0.3, ’3b’, ’FontSize’, 20);
% Построение вектора c=4a-3b
mc=vector([3*b(1),3*b(2)], [4*a(1),4*a(2)]);
text(mc(1)+0.3,mc(2)+0.3, ’c=4a-3b’, ’FontSize’, 20);
% Результаты работы программы — координаты отрезка c=4a-3b
c = -55

Пример 6.8. Найти углы образуемые осями координат с вектором $$\vec{a}=\{2,-2,-1\}$$.

Углы, образуемые положительными направлениями осей с вектором ~a можно рассчитать по формулам $$a_i$$ — проекция вектора на соответствующую ось. (Прим. редактора). $$\cos (\alpha)=\frac{a_{1}}{|\vec{a}|}$, $\cos (\beta )=\frac{a_{2}}{|\vec{a}|}$, $\cos (\gamma )=\frac{a_{3}}{|\vec{a}|}$$.

Листинг 6.8 содержит команды Octave и результаты работы файла-сценария.

	
function[U]= ugol(X) % Углы, образуемые осями координат с вектором Х
m=sqrt(X(1)^2+X(2)^2+X(3)^2);
U=acos(X/m);
end;
function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
gr(1)= round(rad*180/pi); % Градусы
gr(2)= round((rad*180/pi-gr(1))*60); % Минуты
end;
u=ugol([2, -2, -1]) % Вычисление углов в радианах
% Углы в градусах и минутах
alf=rad_gr(u(1))
bet=rad_gr(u(2))
gam=rad_gr(u(3))
% Результаты работы — углы в радианах
u = 0.84107 2.30052 1.91063
% Углы в градусах и минутах
alf = 48 11
bet = 132 -11
gam = 109 28

Скалярным произведением вектора $$\vec{a}$$ на вектор $$\vec{b}$$ называется произведение их модулей и косинуса угла между ними: $$\overrightarrow{ab}=|\vec{a}|\cdot |\vec{b}|\cos (\widehat {{a,b}})$$. Если $$\vec{a}=\{a_{1,}a_{2,}a_{3}\}$$ и $$\vec{b}=\{b_{1,}b_{2,}b_{3}\}$$, то $$\overrightarrow{ab}=a_{1}b_{1}+a_{2}b_{2}+a_{3}b_{3}$$.

Пример 6.9. Найти угол между векторами $$\vec{a}=\{-2,1,2\}$$ и $$\vec{b}=\{-2,-2,1\}:\cos (\widehat {{a,b}})=\frac{\overrightarrow{ab}}{|\vec{a}|\cdot |\vec{b}|}$$.

Текст файла-сценария и результат его работы представлены в листинге 6.9

	
function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
gr(1)= round(rad*180/pi); % Градусы
gr(2)= round((rad*180/pi_gr(1))*60); % Минуты
end;
a = [-2, 1, 2]; b=[-2, -2, 1];
da=sqrt(a(1)^2+a(2)^2+a(3)^2);
db=sqrt(b(1)^2+b(2)^2+b(3)^2);
ab=sum(a. *b);
alf=acos(ab/(da*db))
rad_gr(alf)
% Результат — угол в радианах
alf = 1.1102
% Угол в градусах
ans = 64 -23

Пример 6.10. Проверить, являются ли векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ взаимно перпендикулярными. Координаты точек: $$M(2, 1), N(6, 1), K(1, 2), L(7, 2), P (3, 3), R(5, 3), U(1, 4), V(5, 4)$$.

Если $$\vec{a}=\{a_{1,}a_{2}\}$$ и $$\vec{b}=\{b_{1,}b_{2}\}$$, то их скалярное произведение равно нулю: $$\overrightarrow{ab}=a_{1}b_{1}+a_{2}b_{2}=0$$. На рис. 6.8 видно, что векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$ перпендикулярны, а $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ нет. Аналитические вычисления подтверждают это (листинг 6.10).

	
% Вычисление скалярного произведения векторов a и b
function[ab]= scal(a, b)
ab=a(1)*b(1)+a(2)*b(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’);
M= [2, 6];N= [6, 6];K= [4, 4]; L = [4, 8];
P= [7, 3];R= [9, 3];U= [5, 4];V= [9, 4];
MN_KL=scal(N-M, L-K)
PR_UV=scal(R-P, V-U)
vector(N,M); % Построение вектора NM
N_=text(N(1),N(2)+0.3, ’N’); set(N_, ’FontSize’, 20)
M_=text(M(1),M(2)+0.3, ’M’); set(M_, ’FontSize’, 20)
vector(K,L); % Построение вектора KL
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); % Построение вектора PR
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)
vector(U,V);% Построение вектора UV
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)
% Результат работы программы
MN_KL = 0
PR_UV = 8
(рис 6.8) Графическое решение примера 6.10

Векторным произведением вектора $$\vec{a}$$ на не коллинеарный с ним вектор $$\vec{b}$$ называется вектор $$\vec{c}$$, модуль которого численно равен площади параллелограмма построенного на векторах $$\vec{a}$$ и $$\vec{b}$$: $$\vec{a}\times \vec{b}=|\vec{a}|\cdot |\vec{b}|\sin (\widehat {{a,b}})$$. Направление вектора $$\vec{c}$$ перпендикулярно плоскости параллелограмма. Если векторы $$\vec{a}=\{x_{1,}y_{1,}z_{1}\}$$ и $$\vec{b}=\{x_{1,}y_{2,}z_{2}\}$$, то $$\vec{a}\times\vec{b}=\left\{\left|\begin{smallmatrix}y_{1}z_{1}\\y_{2}z_{2}\end{smallmatrix}\right|,\left|\begin{smallmatrix}z_{1}x_{1}\\z_{2}x_{2}\end{smallmatrix}\right|,\left|\begin{smallmatrix}x_{1}y_{1}\\x_{2}y_{2}\end{smallmatrix}\right|\right\}$$.

(рис 6.9) Геометрическая интерпретация векторного произведения

Пример 6.11. Найти векторное произведение векторов $$\vec{a}=\{1,4\}$$ и $$\vec{b}=\{5,3\}$$. Вычислить угол между векторами.

Графическое решение показано на рис. 6.9. Листинг 6.11 содержит текст программы и результаты её работы.

	
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, ’zlim’, [0, 10]);
set(gca, ’xtick’, [0 : 10]); set(gca, ’ytick’, [0 : 10]);
set(gca, ’ztick’, [0 : 10]);
set(gca, ’View’, [30 30], ’box’, ’on’);
xlabel(’x’); ylabel(’y’); zlabel(’z’);
axis([0, 10, 0, 10, 0, 10]);
grid on;
function D=dlin(x) % Длина вектора
	D=(x(1)^2+x(2)^2+x(3)^2)^(1/2);
end;
function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
	gr(1)= round(rad*180/pi); % Градусы
	gr(2)= round((rad*180/pi_gr(1))*60); % Минуты
end;
% Исходные данные
x1 =4; y1 =2; z1 =0; x2 =1; y2 =3; z2 =0; a=[x1, y1, z1]; b=[x2, y2, z2];
% Расчёт координат векторного произведения
M=[a; b]; M1=M(1:2, 2:3);M2=[M(:, 1),M(:, 3)]; M3=M(1:2, 1:2);
c(1)=det(M1); c(2)=-det(M2); c(3)=(det(M3));
% Расчёт угла между векторами a и b
da=dlin(a); db=dlin(b); dc=dlin(c);
alf=asin(dc/(da*db));
% Изображение векторов a,b,c
line([0, a(1)], [0, a(2)], [0, a(3)], ’LineWidth’, 5, ’Color’, ’k’);
line([0, b(1)], [0, b(2)], [0, b(3)], ’LineWidth’, 5, ’Color’, ’k’);
line([0, c(1)], [0, c(2)], [0, c(3)], ’LineWidth’, 5, ’Color’, ’k’);
% Изображение стрелок на векторах
line([c(1), c(1)], [c(2), c(2)], [c(3), c(3)], ’LineWidth’, 5, ’Color’
	, ’k’, ’marker’, ’^’, ’markersize’, 16);
line([b(1), b(1)], [b(2), b(2)], [b(3), b(3)], ’LineWidth’, 5, ’Color’
	, ’k’, ’marker’, ’<’, ’markersize’, 10);
line([a(1), a(1)], [a(2), a(2)], [a(3), a(3)], ’LineWidth’, 5, ’Color’
	, ’k’, ’marker’, ’<’, ’markersize’, 10);
% Расчёт координат вершины параллелограмма
k1=y1/x1; k2=y2/x2; d(1) =(y1-y2+k1*x2-k2*x1)/(k1-k2);
d(2)=k1*d(1)+y2-k1*x2; d(3) =0;
% Стороны параллелограмма
line([a(1),d(1)],[a(2),d(2)],[a(3),d(3)], ’LineWidth’, 2, ’Color’, ’k’);
line([b(1),d(1)],[b(2),d(2)],[b(3),d(3)], ’LineWidth’, 2, ’Color’, ’k’);
c % Координаты векторного произведения
alfa=rad_gr(alf) % Угол между векторами a и b
% Результаты работы программы — координаты векторного произведения
c = 0 -0 10
% Угол между векторами
alfa = 45 -0

Три вектора называют компланарными, если они, будучи приведены к общему началу, лежат в одной плоскости. Смешанным или векторно-скалярным произведением трёх векторов $$\vec{a}$$,$$\vec{b}$$ и $$\vec{c}$$ называется скалярное произведение вектора $$\vec{a}$$ на векторное произведение $$\vec{b}\times\vec{c}$$, то есть число $$\overrightarrow{abc}=\vec{a}\cdot (\vec{b}\times\vec{c})=(\vec{b}\times \vec{c})\cdot \vec{a}$$. Если векторы $$\vec{a}=\{x_{1,}y_{1,}z_{1}\}$$, $$\vec{b}=\{x_{1,}y_{2,}z_{2}\}$$ и $$\vec{\text{с}}=\{x_{3,}y_{3,}z_{3}\}$$ даны своими координатами, то смешанное произведение вычисляют по формуле:

$$\overrightarrow{abc}= \displaystyle\left\arrowvert{ \begin{array}{ccc} x_{1}y_{1}z_{1}\\ x_{2}y_{2}z_{2}\\ x_{3}y_{3}z_{3} \end{array} }\right\arrowvert.$$

Необходимым и достаточным условием компланарности векторов $$\vec{a}$$, $$\vec{b}$$ и $$\vec{c}$$ является равенство нулю их смешанного произведения $$\overrightarrow{abc}=0$$.

Пример 6.12. Проверить компланарность векторов (листинг 6.12):

$$\begin{aligned} \text{а) } \vec{a}=\{-2,-1,-3\}, \vec{b}=\{-1,4,6\} \text{ и } \vec{c}=\{1,5,9\};\\ \text{б) } \vec{a}=\{1,2,3\}, \vec{b}=\{-1,3,4\} \text{ и } \vec{c}=\{2,5,2\}. \end{aligned}$$
	
function d=komp(A, B,C)
	M=[A;B;C ];
	d=det (M);
	if d==0
		disp(’Векторы компланарны’);
	else
		disp(’Векторы не компланарны’);
	end;
end;
a =[-2, -1, -3];b = [-1, 4, 6]; c = [1, 5, 9]; d1=komp(a, b, c)
a = [ 1, 2, 3 ]; b = [ -1, 3, 4 ]; c = [ 2, 5, 2 ]; d2=komp( a, b, c )
% Результат работы программы
Векторы компланарны
d1 = 0
Векторы не компланарны
d2 = -27

6.2 Аналитическая геометрия

Плоскость, проходящая через точку $$M_{0}(x_{0}, y_{0}, z_{0})$$ и перпендикулярная к вектору $$\vec{N}\{A,B,C\}$$ представляется уравнением $$A(x-x_{0})+B(y-y_{0})+C(z-z_{0})=0$$ или $$Ax+By+Cz+D=0$$.

Вектор $$\vec{N}\{A,B,C\}$$ называется нормальным вектором плоскости.

Пример 6.13. Записать уравнение и построить плоскость, проходящую через точку $$M_0 (2, 0, 4)$$ и перпендикулярную вектору $$\vec{N}\{3,0,-3\}$$.

Исходя из условия примера уравнение плоскости имеет вид $$3(x-2)+0(y-1)-3(z-4)=0\Rightarrow 3x-6-3z+12=0\Rightarrow 3x-3z+6=0$$.

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

$$Ax+By+Cz+D=0\Rightarrow z(x,y)=-{\frac{A}{C}}x-\frac{B}{C}y-\frac{D}{C},\\ z(x,y)=b_{0}+b_{1}x+b_{2}y,b_{0}=-{\frac{A}{C}},b_{1}=\frac{-{B}}{C},b_{2}=\frac{-{D}}{C}.$$ (рис 6.10) Изображение плоскости и её направляющего вектора

Решение примера представлено в листинге 6.13 и на рис. 6.10

	
clf; cla;
set(gcf, ’Position’, [ 20, 20, 400, 400 ] );
axis ( [ 0, 1 0, 0, 1 0, 0, 1 0 ] )
A=3;B=0;C=_3;D=6;N=[A, B,C ]; % Параметры плоскости
b0= - D/C; b1= - A/C; b2= - B/C; % Параметры уравнения плоскости, преобразо% ванного к функции двух переменных
								% Построение плоскости
xk=5;yk=5;
X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
[ x, y]= meshgrid(X,Y);
z=b0+b1*x+b2 * y;
surf( x, y, z ), colormap gray
grid on; xlabel ( ’x’, ’FontSize’, 2 0 );
ylabel( ’y’, ’FontSize’, 2 0 ); zlabel( ’z’, ’FontSize’, 2 0 );
set( gca, ’FontSize’, 1 2 ); set ( gca, ’box’, ’on’ );
% Построение направляющего вектора
line( [ xk, 0 ], [ 0, 0 ], [ b0, yk+b0 ], ’LineWidth’, 5, ’Color’, ’k’ );
line( [ 0, 0 ], [ 0, 0 ], [ yk+b0, yk+b0 ], ’LineWidth’, 5, ’Color’, ’k’, ’
	marker’, ’v’, ’markersize’, 1 6 );
text(0+0.3,0+0.3, yk+b0 _1, ’N’, ’FontSize’, 2 0 );
title( ’3x-3z+6=0’, ’FontSize’, 2 0 ) % Заголовок

Если плоскость проходит через заданную точку $$M_{1}(x_{1,}y_{1,}z_{1})$$ и параллельна плоскости $$Ax + By + Cz + D = 0$$, то её уравнение записывают так $$A(x-x_{1})+B(y-y_{1})+C(z-z_{1})=0$$.

(рис 6.11) Параллельные плоскости

Пример 6.14. Записать уравнение и построить плоскость, проходящую через точку $$M_0 (1, 3, 5)$$ параллельно плоскости $$3x - 3z + 6 = 0$$.

Уравнение плоскости имеет вид: $$3(x-1)-3(z-5)=0\Rightarrow 3x-3-3z+15=0\Rightarrow 3x-3z+12=0$$.

Решение примера показано на рис. 6.11 и в листинге 6.14.

	
function p=plos(A, B, C,D)
	% Параметры уравнения плоскости, преобразованного
	b0= - D/C; b1= - A/C; b2= - B/C; % к функции двух переменных
	% Построение плоскости
	xk=5;yk=5;
	X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
	[ x, y]= meshgrid(X,Y);
	z=b0+b1 * x+b2 * y;
	surf( x, y, z ), colormap gray
	grid on;
	p=0;
end;
clf; cla; set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
axis( [ 0, 10, 0, 10, 0, 10 ] )
A1=3;B1=0;C1=_3;D1=6; % Параметры плоскости
% Построение плоскостей
plos(A1, B1, C1, D1)
hold on
A2=3;B2=0;C2=_3;D2=12;
p=plos(A2, B2, C2, D2)
xlabel( ’x’, ’FontSize’, 2 0 ); ylabel( ’y’, ’FontSize’, 2 0 );
zlabel( ’z’, ’FontSize’, 2 0 );
set( gca, ’FontSize’, 1 2 ); set( gca, ’box’, ’on’ );
M= [ 1, 3, 5 ]; % Изображение точки
line( [M( 1 ),M( 1 ) ], [M( 2 ),M( 2 ) ], [M( 3 ),M( 3 ) ], ’LineWidth’, 5, ’Color’
	, ’k’, ’marker’, ’o’, ’markersize’, 1 6 );
text(M( 1 ) _0.5,M( 2 ) +0.5,M( 3 ) +1, ’M(1,3,5)’, ’FontSize’, 2 0 );
title( ’3x-3z+6=0,3x-3z+12=0’, ’FontSize’, 2 0 )

Если три точки $$M_{0}(x_{0}, y_{0}, z_{0}),M_{1}(x_{1}, y_{1}, z_{1})$$ и $$M_{2}(x_{2}, y_{2}, z_{2})$$ не лежат на одной прямой, то уравнение плоскости, проходящей через них, представляется уравнением:

$$\left\arrowvert\begin{matrix}x-x_{0}y-y_{0}z-z_{0}\\x_{1}-x_{0}y_{1}-y_{0}z_{1}-z_{0}\\x_{2}-x_{0}y_{2}-y_{0}z_{2}-z_{0}\end{matrix}\right\arrowvert=0.$$

Пример 6.15. Записать уравнение и построить плоскость, проходящую через точки $$M_0(1, 2, 3), M_1(2, 1, 2)$$ и $$M_2(3, 3, 1)$$.

Заданные точки не лежат на одной прямой, так как векторы $$\overrightarrow{{M_{0}M_{1}}}$$ и $$\overrightarrow{{M_{0}M_{2}}}$$ не коллинеарны. ли. 6.12 и рис. 6.13 иллюстрируют это утверждение. Изображение на рис. 6.12 получено в результате работы программы показанной в листинге 6.15. Рис. 6.13 получен из ррис. 6.12ис путём поворота Аналитически поворот можно осуществить с помощью функции view, например, view(37.5,30); вернуть рисунок в исходное состояние можно командой view(2) (прим. редактора ). в графическом окне.

	
clf; cla;
set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
set( gca, ’Position’, [ . 1, . 1, . 8, . 8 ] );
set( gca, ’xlim’,[0,3]); set ( gca, ’ylim’,[0,3]); set ( gca, ’zlim’,[0,3]);
set( gca, ’xtick’,[0:3]); set ( gca, ’ytick’,[0:3]); set ( gca, ’ztick’,[0:3]);
set( gca, ’box’, ’on’ ); xlabel ( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
axis( [ 0, 3, 0, 3, 0, 3 ] )
grid on;
M0= [ 1, 2, 3 ];M1= [ 2, 1, 2 ];M2= [ 3, 3, 1 ]; % Исходные данные
% Изображение векторов M0M1 и M0M2
line ([M1(1),M0(1)],[M1(2),M0(2)],[M1(3),M0(3)],’LineWidth’,5,’Color’,’k’);
line ([M2(1),M0(1)],[M2(2),M0(2)],[M2(3),M0(3)],’LineWidth’,5,’Color’,’k’);
% Изображение стрелок на векторах
line ([M1(1),M1(1)],[M1(2),M1(2)],[M1(3),M1(3)], ’LineWidth’, 5, ’Color’, ’k
	’, ’marker’, ’>’, ’markersize’, 10 );		
line ([M2(1),M2(1)],[M2(2),M2(2)],[M2(3),M2(3)], ’LineWidth’, 5, ’Color’, ’k
	’, ’marker’, ’<’, ’markersize’, 10 );
line ([M0(1),M0(1)],[M0(2),M0(2)],[M0(3),M0(3)], ’LineWidth’, 5, ’Color’, ’k
	’, ’marker’, ’o’, ’markersize’, 10 );
% Подписи
text(M0( 1 ),M0( 2 ) +0.3,M0( 3 ), ’M0’, ’FontSize’, 2 0 );
text(M1( 1 ),M1( 2 ) +0.3,M1( 3 ), ’M1’, ’FontSize’, 2 0 );
text(M2( 1 ),M2( 2 ) +0.3,M2( 3 ), ’M2’, ’FontSize’, 2 0 );
(рис 6.12) Иллюстрация к примеру 6.15 (векторы на плоскости) (рис 6.13) Иллюстрация примеру 6.15 (векторы в пространстве) (рис 6.14) Плоскость, проходящая через три точки

Плоскость представлена уравнением:

$$\left\arrowvert\begin{matrix}x-1y-2z-3\\1-1-1\\21-2\end{matrix}\right\arrowvert =0\Rightarrow x+z-4=0.$$

Графическое изображение плоскости показано на рис. 6.14. Текст программы в листинге 6.16.

	
clf; cla;
set ( gcf, ’Position’, [ 20, 20, 400, 400] ); axis ( [ 0, 10, 0, 10, 0, 10 ] )
A=1;B=0;C=1;D=-4;N=[A, B,C ]; % Параметры плоскости
% Параметры уравнения плоскости, преобразованного
% к функции двух переменных
b0= - D/C; b1= - A/C; b2= - B/C;
% Построение плоскости
xk=3;yk=3;X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
[ x, y]= meshgrid(X,Y);
z=b0+b1*x+b2 * y;
surf ( x, y, z ), colormap gray
grid on;
xlabel ( ’x’, ’FontSize’, 20 ); ylabel ( ’y’, ’FontSize’, 20 );
zlabel ( ’z’, ’FontSize’, 20 );
set ( gca, ’FontSize’, 12 ); set ( gca, ’box’, ’on’ );
% Построение направляющего вектора
line ( [ xk, 0 ], [ 0, 0 ], [ b0, b0_yk ], ’LineWidth’, 5, ’Color’, ’k’ );
line ( [ xk, xk ], [ 0, 0 ], [ b0, b0 ], ’LineWidth’, 5, ’Color’, ’k’, ’marker’,
	’v’, ’markersize’, 16 );
text (0+0.3,0+0.3, b0-yk, ’N’, ’FontSize’, 20 );
% Исходные данные
M0= [ 1, 2, 3 ];M1= [ 2, 1, 2 ];M2= [ 3, 3, 1 ];
% Нанесение точек на график
line ( [M1( 1 ),M1( 1 ) ], [ M1( 2 ),M1( 2 ) ], [ M1( 3 ),M1( 3 ) ], ’LineWidth’, 5, ’
	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
line ( [M2( 1 ),M2( 1 ) ], [ M2( 2 ),M2( 2 ) ], [ M2( 3 ),M2( 3 ) ], ’LineWidth’, 5, ’
	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
line ( [M0( 1 ),M0( 1 ) ], [ M0( 2 ),M0( 2 ) ], [ M0( 3 ),M0( 3 ) ], ’LineWidth’, 5, ’
	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
% Подписи
text (M0( 1 ) -0.3,M0( 2 ) -0.3,M0( 3 ), ’M0’, ’FontSize’, 20 );
text (M1( 1 ) -0.3,M1( 2 ) -0.3,M1( 3 ), ’M1’, ’FontSize’, 20 );
text (M2( 1 ) -0.3,M2( 2 ) -0.3,M2( 3 ), ’M2’, ’FontSize’, 20 );
% Заголовок
title ( ’x+z-4=0’, ’FontSize’, 20 )

Если плоскость $$Ax + By + Cz + D = 0$$ не параллельна оси OX $$(A\neq 0)$$, то она отсекает на этой оси отрезок $$a=-{\frac{D}{A}}$$. Аналогично отрезки на осях OY, OZ будут $$b=-{\frac{D}{B}},(B\neq 0)$$ и $$\text{с}=-{\frac{D}{C}},(C\neq 0)$$. Таким образом, плоскость отсекающую на осях отрезки $$a, b$$ и $$c$$ можно представить уравнением

$$\frac{x}{a}+\frac{y}{b}+\frac{z}{c}=1,$$

которое называется уравнением плоскости в отрезках.

Пример 6.16. Написать уравнение плоскости $$3x - 6y +2z - 12 = 0$$ в отрезках и построить эту плоскость.

Найдём длины отрезков: $$a=-{\frac{D}{A}}=-{\frac{-12}{3}}=4$, $b=-{\frac{D}{B}}=-{\frac{-12}{-6}}=-2$, $\text{с}=-{\frac{D}{C}}=-{\frac{-12}{3}}=6$$.

Запишем уравнение плоскости в отрезках:

$$\frac{x}{4}+\frac{y}{-2}+\frac{z}{6}=1.$$

Решение примера показано на рис. 6.15 и в листинге 6.17.

	
clf; cla;
a =4;b=_2;c =6;
set( gcf, ’Position’, [ 50, 50, 400, 400 ] );
axis ( [ 0, a, 0, b, 0, c ] );
X= 0 : 0.2 : a;Y=b : 0.2 : 0;
[ x y]= meshgrid(X,Y);	
z=c-c /a * x-c /b * y;
hfig=surf ( x, y, z );
set( hfig, ’FaceColor’, ’none’, ’EdgeColor’, ’k’ )
% Изображение векторов a, b и c
line( [ 0, a ], [ 0, 0 ], [ 0, 0 ], ’LineWidth’, 5, ’Color’, ’k’ );
line( [ 0, 0 ], [ 0, b ], [ 0, 0 ], ’LineWidth’, 5, ’Color’, ’k’ );
line( [ 0, 0 ], [ 0, 0 ], [ 0, c ], ’LineWidth’, 5, ’Color’, ’k’ );
% Подписи
text( a / 2, 0, 1, ’a’, ’FontSize’, 20 );
text( 0, b / 2, 1, ’b’, ’FontSize’, 20 );
text( 0.2, 0, c /2, ’c’, ’FontSize’, 20 );
% Заголовок
title( ’a=4, b=-2, c=6’, ’FontSize’, 14 )
xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
set( gca, ’Position’, [ .1, .1, .8, .8 ] );
set( gca, ’View’, [ 25 22 ] )
(рис 6.15) Плоскость, заданная отрезками

Рассмотрим особые случаи положения плоскости относительно системы координат:

  • Уравнение $$Ax + By + Cz = 0, (D = 0)$$ представляет плоскость, проходящую через начало координат.
  • Уравнение $$Ax + By + D = 0, (C = 0)$$ представляет плоскость параллельную оси OZ, уравнение $$Ax + CZ + D = 0, (B = 0)$$ — плоскость, параллельную оси OY, уравнение $$By + CZ + D = 0, (A = 0)$$ — плоскость, параллельную оси OX.
  • Уравнение $$Ax + D = 0, (B = 0, C = 0)$$ представляет плоскость параллельную координатной плоскости YOZ, уравнение $$By + D = 0, (A = 0, C = 0)$$ — плоскость, параллельную плоскости XOZ, уравнение $$CZ + D = 0, (A = 0, B = 0)$$ — плоскость, параллельную плоскости XOY.
  • Уравнения $$X = 0, Y = 0, Z = 0$$ представляют собой плоскости YOZ, XOZ и XOY.
  • Пример 6.17. Построить плоскости $$x + y - 1 = 0, x - z + 1 = 0, y + z + 2 = 0, x - y + 2 = 0, 2x + 3 = 0, 3y - 2 = 0$$.

    Ход решения примера описан в листинге 6.18. Графическое решение показано на рис. 6.16.

    	
    function p=plos1 (A, B, C,D)
    	M=[A, B,C ]; % Параметры плоскости
    	d = [ 0.1, 0.1, 0.1 ];
    	if A==0 M( 1 ) =1; end;
    	if B==0 M( 2 ) =1; end;
    	if C==0 M( 3 ) =1; end;
    	if A<0 d ( 1 ) = -0.1; end;
    	if B<0 d ( 2 ) = -0.1; end;
    	if C<0 d ( 3 ) = -0.1; end;
    	X=0:d ( 1 ) :M( 1 );
    	Y=0:d ( 2 ) :M( 2 );
    	Z=0:d ( 3 ) :M( 3 );
    	% Построение плоскости
    	if C!=0 % Плоскость не параллельна OZ
    	% Уравнение плоскости преобразовано к функции двух переменных z(x,y)
    		[ x, y]= meshgrid(X,Y);
    		b0= - D/C; b1= - A/C; b2= - B/C;
    		z=b0+b1 _ x+b2 _ y; f1=surf ( x, y, z ); colormap gray
    	else
    		if B!=0 % Плоскость не параллельна OY
    	% Уравнение плоскости преобразовано к функции двух переменных y(x,z)
    				[ x, z ]= meshgrid(X, Z);
    				b0= - D/B; b1= - A/B; b2= - C/B;
    				y=b0+b1 * x+b2 * z; f1=surf ( x, y, z ); colormap gray
    			else % Плоскость не параллельна OX
    	% Уравнение плоскости преобразовано к функции двух переменных x(y,z)
    				[ y, z ]= meshgrid(Y, Z);
    				b0= - D/A; b1= - B/A; b2= - C/A;
    				x=b0+b1 * y+b2 * z; f1=surf( x, y, z ); colormap gray
    			end;
    	end;
    	grid on;
    	xlabel ( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    	set( gca, ’xtick’, [ 0 :M( 1 ) ] ); set( gca, ’ytick’, [ 0 :M( 2 ) ] );
    	set( gca, ’ztick’, [ 0 :M( 3 ) ] ); set( gca, ’box’, ’on’ );
    	p=f1;
    	end; % конец функции
    % Изображение плоскостей заданных в примере 6.17
    clf; cla; subplot ( 3, 2, 1 );
    A1=1;B1=1;C1=0;D1=-1; % Плоскость x+y-1=0
    plos1 (A1, B1, C1, D1);
    title ( ’x+y-1=0, (C=0)’ );
    subplot ( 3, 2, 2 );
    A2=1;B2=0;C2=_1;D2=1; % Плоскость x-z+1=0
    plos1 (A2, B2, C2, D2);
    title ( ’x-z+1=0, (B=0)’ );
    subplot ( 3, 2, 3 );
    A3=0;B3=1;C3=1;D3=2; % Плоскость y+z+2=0
    plos1 (A3, B3, C3, D3);
    title ( ’y+z+2=0, (A=0)’ );
    set ( gca, ’View’, [ 1 3 0 3 0 ] );
    subplot ( 3, 2, 4 );
    A4=1;B4=-1;C4=1;D4=0; % Плоскость x-y+z-2=0
    plos1 (A4, B4, C4, D4);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’x-y+z=0,D=0’ );
    subplot ( 3, 2, 5 );
    A5=2;B5=0;C5=0;D5=3; % Плоскость 2x+3=0
    plos1 (A5, B5, C5, D5);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’2x+3=0, (B=0,C=0)’ )
    subplot ( 3, 2, 6 );
    A6=0;B6=3;C6=0;D6=_2; % Плоскость 3y-2=0
    plos1 (A6, B6, C6, D6);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’3y-2=0,(A=0,C=0)’ );
    

    Расстояние от точки $$M_1(x_1, y_1, z-1)$$ до плоскости $$Ax + By + Cz + D = 0$$ равно абсолютному значению величины

    $$d=\frac{|Ax_1+By_2+Cz_3+D|}{\sqrt{A^{2}+B^{2}+C^{2}}}.$$

    Пример 6.18. Найти расстояние от точки M1 (3, 9, 1) до плоскости $$x - 2y + 2z + 3 = 0$$.

    Решение показано в листинге 6.19.

    	
    % Исходные данные
    A=1;B=-2;C=2;D=-3;M= [ 3, 9, 1 ];N=[A;B;C ];
    % Расстояние от точки М(3,9,1) до плоскости x-2y+2z-3=0
    d=abs (M *N+D) /norm(N)
    d = 5.3333
    
    (рис 6.16) Особые случаи положения плоскости относительно системы координат

    Две плоскости $$A_1x+B_1y+C_1z+D_1=0$ и $A_2x+B_2y+C_2z+D_2=0$$ образуют четыре двугранных угла равных попарно. Один из них всегда равен углу между нормальными векторами $$\vec{N}_{1}\{A_{1,}B_{1,}C_{1}\}$$. Вычисляют любой из двугранных углов по формуле

    $$\cos (\phi )=\pm{\frac{A_{1}A_{2}+B_{1}B_{2}+C_{1}C_{2}}{\sqrt{A_{1}^{2}+B_{1}^{2}+C_{1}^{2}}\sqrt{A_{2}^{2}+B_{2}^{2}+C_{2}^{2}}}},$$

    причём, выбирая "+" получаем $$\cos (\angle \vec{N}_{1}\vec{N}_{2})$$, выбирая "–" получаем $$\cos (180-\angle \vec{N}_{1}\vec{N}_{2})$$.

    Пример 6.19. Найти угол между плоскостями $$x-y+\sqrt{2}z+2=0$$ и $$x+y+\sqrt{2}z-3=0$$.

    Решение показано в листинге 6.20.

    	
    % Исходные данные
    N1=[1, -1, sqrt( 2 ) ]; N2=[1,1, sqrt( 2 ) ];
    % Угол между плоскостями
    fi =acos( dot (N1, N2) /norm(N1) /norm(N2) );
    fi_1= round( f i * 180/ pi )
    fi_2=180-fi_1
    % Решение
    fi_1 = 60
    fi_2 = 120
    

    Два уравнения $$A_1x+B_1y+C_1z+D_1=0$$ и $$A_2x+B_2y+C_2z+D_2=0$$ представляют прямую линию, если коэффициенты $$A_1, B_1, C_1$$ не пропорциональны коэффициентам $$A_2, B_2, C_2$$ (то есть плоскости не параллельны). Если коэффициенты $$A_1, B_1, C_1$$ пропорциональны коэффициентам $$A_2, B_2, C_2$$, но свободные члены не подчинены той же пропорции $$\frac{A_2}{A_1}=\frac{B_2}{B_1}=\frac{C_2}{C_1}\neq \frac{D_2}{D_1}$$, то заданные уравнения не представляют никакого геометрического образа. Если все четыре величины пропорциональны $$\frac{A_2}{A_1}=\frac{B_2}{B_1}=\frac{C_2}{C_1}=\frac{D_2}{D_1}$$, то заданные уравнения представляют одну и ту же плоскость.

    Пример 6.20. Построить прямые линии, заданные уравнениями:

    a) $$2x - y = 0 и x + y - 1 = 0$$;

    b) $$x - y + z - 1 = 0 и 2x - 2y + 2z - 2 = 0$$;

    c) $$2x - 7y + 12z - 4 = 0 и 4x - 14y + 24z - 12 = 0$$.

    Решение показано в листинге 6.21. Для построения плоскости применялась функция $$plos1(A, B, C, D)$$, описанная в примере 6.17.

    	
    function flag=l i n e _ (N1, N2)
    	if N1 ( 1 )==0
    		k1 =0;
    	else
    		k1=N2 ( 1 ) /N1 ( 1 );
    	end;
    	if N1 ( 2 )==0
    		k2 =0;
    	else
    		k2=N2 ( 2 ) /N1 ( 2 );
    	end;
    	if N1 ( 3 )==0
    		k3 =0;
    	else
    		k3=N2 ( 3 ) /N1 ( 3 );
    	end;
    	if N1 ( 4 )==0
    		k4 =0;
    	else
    		k4=N2 ( 4 ) /N1 ( 4 );
    	end;
    	if ( k1 ! = k2 ) | ( k2 != k3 )
    		flag =0
    		clf; cla;
    		plos1 (N1 ( 1 ),N1 ( 2 ),N1 ( 3 ),N1 ( 4 ) );
    		hold on
    		plos1 (N2 ( 1 ),N2 ( 2 ),N2 ( 3 ),N2 ( 4 ) );
    	elseif ( k1 == k2 )  ( k2 == k3 )  ( k3 == k4 )
    		flag =1;
    		clf; cla;
    		plos1 (N1 ( 1 ),N1 ( 2 ),N1 ( 3 ),N1 ( 4 ) );
    	elseif ( k1 == k2 )  ( k2 == k3 )  ( k3!= k4 )
    		flag =2;
    		disp ( ’Геометрическая фигура не определена!’ )
    	end;
    end;
    % Случай a)
    A1=2;B1=-1;C1=0;D1=0;A2=1;B2=1;C2=0;D2=-1;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    title ( ’2x-y=0, x+y-1=0’ );
    set ( gca, ’View’, [ 110 30 ] );
    % Случай b)
    A1=1;B1=_1;C1=1;D1=_1;A2=2;B2=_2;C2=2;D2=_2;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    title ( ’x-y+z-1=0, 2x-2y+2z-2=0’ );
    set ( gca, ’View’, [ 60 30 ] );
    % Случай c)
    A1=2;B1=-7;C1=12;D1=-4;A2=4;B2=-14;C2=24;D2=-12;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    % Результат работы в случае с)
    Геометрическая фигура не определена!
    

    Всякий вектор $$\vec{a}\{l,m,n\}$$, лежащий на прямой (или параллельный ей), называется направляющим вектором этой прямой. Координаты $$\{l, m, n\}$$ называются направляющими коэффициентами прямой. За направляющий вектор прямой $$A_{1}x+B_{1}y+C_{1}z+D_{1}=0, A_{2}x+B_{2}y+C_{2}z+D_{2}=0$$ можно принять векторное произведение $$\vec{N}_{1}\times \vec{N}_{2}$$, где $$\vec{N}_{1}=\{A_{1,}B_{1,}C_{1}\},\vec{N}_{2}=\{A_{2,}B_{2,}C_{2}\}$$ — нормальные векторы плоскостей, образующих прямую.

    Пример 6.21. Найти направляющие коэффициенты прямой $$2x - 2y - z + 8 = 0 и x + 2y - 2z + 1 = 0$$ (листинг 6.24).

    	
    N1=[2, -2, -1];N2= [ 1, 2, -2 ];
    % Расчёт координат векторного произведения		
    M=[N1; N2 ];
    M1=M( 1 : 2, 2 : 3 );M2=[M( :, 1 ),M( :, 3 ) ]; M3=M( 1 : 2, 1 : 2 );
    a ( 1 )=det (M1); a ( 2 )= _det (M2); a ( 3 ) =( det (M3) );
    a
    % Векторное произведение
    a = 6  3  6
    
    (рис 6.17) Геометрическая интерпретация примера 6.20, случай a) (рис 6.18) Геометрическая интерпретация примера 6.20, случай b)

    Прямая $$L$$, проходящая через точку $$M_0(x_0,y_0,z_0)$$ и имеющая направляющий вектор $$\vec{a}\{l,m,n\}$$ представляется уравнениями $$\frac{x-x_{0}}{l}=\frac{y-y_{0}}{m}=\frac{z-z_{0}}{n}$$. Эти уравнения выражают коллинеарность векторов $$\overrightarrow{{M_{0}M_{1}}}\{x-x_{0,}y-y_{0,}z-z_{0}\},\vec{a}\{l,m,n\}$$ и называются каноническими уравнениями прямой.

    Уравнения $$x = x_0 + lt, y = y_0 + mt, z = z_0 + nt$$ называют параметрическими уравнениями прямой. Здесь величина $$t$$ является параметром и принимает различные значения.

    Пример 6.22. Записать параметрическое уравнение прямой, проходящей через две точки $$A(5, -3, 2)$$ и $$B(3, 1, -2)$$.

    Если в качестве направляющего вектора выбрать вектор $$\overrightarrow{AB}=\{3-5,1-(-3),-2-2\}=\{-2,4,-4\}$$, то каноническое уравнение будет иметь вид $$\frac{x-5}{-2}=\frac{y+3}{4}=\frac{z-2}{-4}$$, следовательно параметрическое уравнение запишем так $$x = 5 + 2t, y = -3 + 4t, z = 2 - 4t$$.

    Команды, которые применялись для графического решения примера (рис. 6.19) показаны в листинге 6.23.

    	
    clf; cla;
    set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    set( gca, ’Position’, [ . 1, . 1, . 8, . 8 ] );
    xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    axis( [ 3, 5, - 3, 2, -2, 3 ] );
    grid on;
    % Исходные данные
    A= [ 5, - 3, 2 ];B= [ 3, 1, - 2 ];
    t = 0 : 0.1 : 1;
    x=5-2* t; y= -3+4* t; z=2-4* t;
    % Изображение прямой
    line( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Изображение точек
    line( [A( 1 ),A( 1 ) ], [ A( 2 ),A( 2 ) ], [ A( 3 ),A( 3 ) ], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’o’, ’markersize’, 1 0 );
    line ( [ B( 1 ),B( 1 ) ], [ B( 2 ),B( 2 ) ], [ B( 3 ),B( 3 ) ], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’o’, ’markersize’, 1 0 );		
    % Подписи
    text(A( 1 ),A( 2 ) +0.3,A( 3 ) +0.5, ’A’, ’FontSize’, 20 );
    text(B( 1 ),B( 2 ) +0.3,B( 3 ) +0.3, ’B’, ’FontSize’, 20 );
    set( gca, ’View’, [ 120 50 ] );
    
    (рис 6.19) Прямая, проходящая через две точки

    Если известны направляющие векторы двух прямых $$\vec{a}\{l,m,n\}$$ и $$\vec{b}\{l',m',n'\}$$, то угол между этими прямыми можно вычислить по формуле

    $$\cos (\phi )=\pm {\frac{ll'+mm'+nn'}{\sqrt{l^{2}+m^{2}+n^{2}}\sqrt{l'^{2}+m'^{2}+'^{2}}}}.$$

    Пример 6.23. Найти угол между прямыми $$x = t, y = 2t, z = 3t$$ и $$x = -1 + 2t, y = 1 + t, z = -1 + 4t$$ (истинг 6.24л, рис. 6.20).

    	
    a = [ 1, 2, 3 ]; b = [ 2, 1, 4 ]; % Исходные данные
    fi =acos ( dot ( a, b ) /norm( a ) /norm( b ) );
    fi_1= round ( f i _ 180/ pi )
    clf; cla;
    set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    set( gca, ’Position’, [ .1, .1, .8, .8 ] );
    set( gca, ’box’, ’off’ );
    xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    axis( [ -1, 1, 0, 2, -1, 4 ] );
    grid on;
    t = 0 : 0.1 : 1;
    x=-1+2* t; y=1+t; z= -1+4* t;
    % Изображение прямой
    line ( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Подписи
    text( -0.8,1, -1, ’b’, ’FontSize’, 20 );
    x=t; y=2* t; z=3* t;
    % Изображение прямой
    line( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Подписи
    text( 0.2, 0, 0, ’a’, ’FontSize’, 20 );
    set( gca, ’View’, [ 30 30 ] )
    % Результат
    fi_1 = 21
    
    (рис 6.20) Угол между прямыми

    Прямая $$x = x_0 + lt, y = y_0 + mt, z = z_0 + nt$$ и плоскость$$ Ax + By + Cz + D = 0$$ могут иметь одну общую точку, могут не иметь общих точек (прямая параллельна плоскости) и иметь бесконечное множество общих точек (прямая лежит на плоскости).

    Общую точку (если такая существует) плоскости и прямой можно вычислить, если подставить уравнение прямой в уравнение плоскости и найти значение параметра $$t$$.

    Пример 6.24. Найти точку пересечения прямой $$x = -5 + 3t, y = 3 - t, z = -3 + 2t$$ с плоскостью $$2x + 3y + 3z - 8 = 0$$.

    Выполним расчёты в технике символьных вычислений (листинг 6.25).

    	
    symbols
    % Определение символьных переменных
    x = sym( "x" );
    y = sym( "y" );
    z = sym( "z" );
    t = sym( "t" );
    % Параметрическое уравнение прямой
    x = -5+3*t;
    y = 3-t;
    z = -3+2*t;
    % Уравнение плоскости
    f = 2 * x+3*y+3*z -8
    % Вычисление значения параметра t
    t = symfsolve( f, 0 )
    % Определение точки пересечения прямой и плоскости
    x = -5+3*t
    y = 3-t
    z = -3+2*t
    % Результаты вычислений
    % Уравнение плоскости, выраженное через параметр t
    f = -18.0+(9.0) * t
    % Значение параметра t
    t = 2.0000
    % Точка пересечения прямой и плоскости
    x = 1.00000
    y = 1.00000
    z = 1.00000
    
    Страницы:

    6.1 Векторная алгебра

    В геометрии вектором называется всякий направленный отрезок. Учение о действиях над векторами называется векторной алгеброй.

    Вектор, началом которого служит точка А, а концом точка В, обозначается $$\overrightarrow{AB}$$ или $$\vec{a}$$. Если начало и конец вектора совпадают, то отрезок превращается в точку и теряет направление, такой отрезок называют нуль-вектором.

    Если вектор задан точками $$A(x_1, y_1)$$ и $$B(x_2, y_2)$$, то его координаты: $$\overrightarrow{AB}=\{(x_2-x_1), (y_2-y_1)\}=\{X,Y\}$$. Длина вектора называется также его модулем, обозначается $$|\overrightarrow{AB}|$$ или $$|\vec{a}|$$ и вычисляется по формуле:

    $$|\vec{a}|=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}=\sqrt{X^2+Y^2}$$

    Формулы

    $$M_x=\frac{x_1+x_2}{2},M_y=\frac{y_1+y_2}{2}$$

    служат для вычисления координат середины отрезка $$\overrightarrow{AB}$$.

    Разделить отрезок $$\overrightarrow{AB}$$ в заданном отношении λ можно так: $$L_{x}=\frac{x_{1}+\lambda x_{2}}{1+\lambda},L_{y}=\frac{y_{1}+\lambda y_{2}}{1+\lambda }$$, здесь $$L_x$$ и $$L_y$$ — координаты точки L, делящей отрезок в отношении $$AL:LB=l_{1}:l_{2}=\lambda$$.

    Напомним, что векторы в Octave задаются путём поэлементного ввода:

    	
    >>> a =[1 0 3] % Вектор-строка
    a = 1 0 3
    >>> b = [0; 1; 4] % Вектор-столбец
    b =
    0
    1
    4
    

    Пример 6.1. Построить вектор $$|\vec{a}| = \{5, 7\}$$.

    Решение примера показано на рис. 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.2. Построить векторы, заданные координатами начала и конца:

    $$\begin{array}{ccc} \vec{a}=\{(2,3),(4,6)\}, \vec{b}=\{(9,7),(6,5)\}, \vec{c}=\{(1,8),(4,8)\},\\ \vec{d}=\{(6,7),(6,9)\}, \vec{k}=\{(8,4),(8,1)\}, \vec{p}=\{(7,3),(5,3)\}. \end{array}$$

    Решение примера показано в листинге 6.2 и на рис. 6.2. Обратите внимание, что для изображения вектора была создана специальная функция $$vector(A, B)$$. Эта функция изображает направленный отрезок $$|\overrightarrow{AB}|$$ в декартовой системе координат и возвращает координаты его середины. В данном случае координаты середины отрезка нужны для нанесения соответствующей надписи, обозначающей вектор на рисунке.

    (рис 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) Геометрическое решение примера 6.2

    Два ненулевых вектора $$\vec{a}$$ и $$\vec{b}$$ равны, если они равнонаправлены и имеют один и тот же модуль. Все нулевые векторы равны. Во всех остальных случаях векторы не равны. Два вектора имеющие равные модули и противоположные направления, называются противоположными . Векторы лежащие на параллельных прямых называются коллинеарными.

    Пример 6.3. Сравнить векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$, $$\overrightarrow{ON}$$, $$\overrightarrow{OM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ заданные координатами начала и конца: $$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)$$.

    Текст файла-сценария представлен в листинге 6.3. При решении примера была создана функция $$dlina(X, Y)$$, которая вычисляет длину отрезка XY, заданного координатами точек $$X(x_1, x_2)$$ и $$Y(y_1, y_2)$$. Для изображения векторов использовалась функция $$vector(A, B)$$, описанная в примере 6.2.

    Решение примера показано в конце листинга 6.3 и на рис. 6.3 . По полученным числовым результатам и геометрической интерпретации примера можно сделать вывод, что векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$ равны. Векторы $$\overrightarrow{ON}$$ и $$\overrightarrow{OM}$$ не равны, хотя у них и одинаковые длины, но направления различны. Векторы $$\overrightarrow{ON}$$ и $$\overrightarrow{KL}$$ неравны по той же причине, а векторы $$\overrightarrow{OM}$$ и $$\overrightarrow{KL}$$ равны. Векторы $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ — противоположные, так как имеют одинаковый модуль и противоположные направления.

    	
    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.4. Проверить коллинеарны ли векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$,$$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$. Координаты точек: $$A(4, 2), B(2, 3), C(3, 2), D(7, 0), M(2, 1), N(6, 1), K(1, 2), L(7, 2), P(3, 3), R(5, 3), U(1, 4), V(5, 4)$$.

    Текст файла-сценария представлен в листинге 6.4. При решении примера была создана функция $$kollin(a, b)$$, которая определяет коллинеарны ли векторы $$\vec{a}=\{x_{1}, y_{1}\}$$ и $$\vec{b}=\{x_{2}, y_{2}\}$$. Результатом работы функции является коэффициент пропорциональности векторов. Если векторы коллинеарны, то их соответствующие координаты пропорциональны: $$\pm\lambda =\frac{x_{2}}{x_{1}}=\frac{y_{2}}{y_{1}}$$. Знак коэффициента пропорциональности говорит о направлении векторов: "+" — в одну сторону, "_" — в разные. Для изображения векторов использовалась функция $$vector(A, B)$$, описанная в листинге 6.2 к примеру 6.2.

    (рис 6.3) Изображение векторов примера 6.3

    Решение примера показано в конце листинга 6.4 и на рис. 6.4. По полученным числовым результатам и геометрической интерпретации примера можно сделать вывод, что векторы $$\overrightarrow{AB}$$ и $$\overrightarrow{CD}$$ коллинеарны, но направлены в разные стороны. Векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$ не являются коллинеарными. Векторы $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ — коллинеарны и имеют одно направление.

    	
    function[lam]= kollin(a, b)
    	if (a(2)==0)  (b(2)==0)
    		lam=a(1)/b(1);
    	elseif (a(1)==0)  (b(1)==0)
    		lam=a(2)/b(2);
    	elseif a(1)/b(1)==a(2)/b(2)
    		lam=a(1)/b(1);
    	else
    		lam=Inf;
    	end;
    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’);
    A= [3, 3];B= [1, 4];C= [2, 2];D= [6, 0];M= [2, 6];N= [6, 6];
    K= [1, 7]; L= [7, 8];P= [7, 3];R= [9, 3];U= [5, 4];V= [9, 4];
    AB_CD=kollin(B-A, D-C)
    MN_KL=kollin(N-M, L-K)
    PR_UV=kollin(R-P, V-U)
    vector(A,B);% Построение вектора AB
    A_=text(A(1),A(2)+0.3, ’A’); set(A_, ’FontSize’, 20)
    B_=text(B(1),B(2)+0.3, ’B’); set(B_, ’FontSize’, 20)
    vector(C,D); % Построение вектора CD
    C_=text(C(1),C(2)+0.3, ’C’); set(C_, ’FontSize’, 20)
    D_=text(D(1),D(2)+0.3, ’D’); set(D_, ’FontSize’, 20)
    vector(N,M); % Построение вектора NM
    N_=text(N(1),N(2)+0.3, ’N’); set(N_, ’FontSize’, 20)
    M_=text(M(1),M(2)+0.3, ’M’); set(M_, ’FontSize’, 20)
    vector(K, L); % Построение вектора KL
    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)
    vector(P,R); % Построение вектора PR
    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)
    vector(U,V); % Построение вектора UV
    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)
    % Результаты — коэффициенты пропорциональности векторов
    AB_CD = -0.50000
    MN_KL = Inf
    PR_UV = 0.50000
    

    Геометрической проекций вектора $$\overrightarrow{AB}$$ на ось OX называется вектор $$\overrightarrow{A^{'}B^{'}}$$, начало которого $$A^{'}$$ есть проекция точки $$A$$ на ось OX, а конец $$B^{'}$$ — проекция точки $$B$$ на ту же ось. Обозначается: $$\overrightarrow{A^{'}B^{'}}=\text{Пр}_{OX}\overrightarrow{AB}$$. Алгебраической проекций вектора $$\overrightarrow{AB}$$ на ось OX называется длина вектора $$\overrightarrow{A^{'}B^{'}}$$, взятая со знаком "+", если направление вектора $$\overrightarrow{AB}$$ совпадает с направлением оси OX, или со знаком "-" в противном случае.

    (рис 6.4) Геометрическая интерпретация примера 6.4

    Пример 6.5. Найти проекции векторов $$\overrightarrow{AB}$$ и $$\overrightarrow{PR}$$ на ось OX. Координаты точек, задающих векторы: $$A(1, 2), B(3, 5), P (9, 2), R(6, 2)$$.

    Текст файла-сценария и значения алгебраических проекций векторов представлены в листинге 6.5. При решении примера была создана функция $$pr\_OX(X)$$, которая вычисляет длину проекции вектора на ось OX. Аргументом функции является массив абсцисс $$X(x_1, x_2)$$ заданного вектора. Для изображения векторов и их проекций использовалась функция $$vector(A, B)$$, описанная в примере 6.2. Геометрические проекции показаны на рис. 6.5.

    	
    function pr=pr_OX(X) % Длина проекции вектора на ось ОХ
    	pr=X(2)-X(1);
    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’);
    A= [1, 2];B= [3, 5];P= [9, 2];R= [6, 2];
    % Длины проекций
    prAB=pr_OX([A(1),B(1)])
    prPR=pr_OX([P(1),R(1)])		
    vector(A,B);% Построение вектора AB
    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)
    % Построение проекции вектора АВ на ось ОХ
    mAB=vector([A(1), 0], [B(1), 0]);
    text(mAB(1),mAB(2)+0.5, ’prAB’, ’FontSize’, 18);
    vector(P,R); % Построение вектора PR
    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)
    % Построение проекции вектора PR на ось ОХ
    mPR=vector([P(1), 0], [R(1), 0]);
    text(mPR(1),mPR(2)+0.3, ’prPR’, ’FontSize’, 18);
    % Вычисление проекций
    prAB = 2
    prPR = -3
    
    (рис 6.5) Проекции векторов на ось OX

    Любые векторы можно привести к общему началу, то есть построить векторы равные данным и имеющие общее начало в некоторой точке О.

    Над векторами производят различные действия: сложение, вычитание, умножение.

    При сложении\ (вычитании ) векторов их координаты складываются (вычитаются): $$\vec{a}\pm\vec{b}=\{(a_{1}\pm b_{1}),(a_{2}\pm b_{2})\}$$.

    При умножении\ (делении ) вектора на число все координаты умножаются (делятся) на это число: $$\lambda \vec{a}=\{\lambda a_{1,}\lambda a_{2}\}$, $\frac{\vec{a}}{\lambda}=\{\frac{a_{1}}{\lambda },\frac{a_{2}}{\lambda }\}$$.

    (рис 6.6) Геометрическое представление суммы векторов

    Пример 6.6. Найти сумму векторов $$\vec{a}=\{1,4\}$$ и $$\vec{b}=\{5,3\}$$.

    Если векторы $$\vec{a}$$ и $$\vec{b}$$ не коллинеарны, то геометрически вектор $$\vec{c}=\vec{a}+\vec{b}$$ является диагональю параллелограмма построенного на векторах $$\vec{a}$$ и $$\vec{b}$$ (правило параллелограмма).

    Листинг 6.7 содержит команды Octave, с помощью которых был решён пример и результаты их работы. Функция $$vector(A, B)$$, описана в примере 6.2. Геометрическое решение примера показано на рис. 6.6.

    	
    clf; cla;
    set(gcf, ’Position’, [20, 20, 400, 400]);
    set(gcf, ’numbertitle’, ’off’)
    set(gcf, ’name’, ’Vector c=a+b’)
    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, 4]; b = [5, 3];
    c =[a(1)+b(1), a(2)+b(2)]% Сумма векторов
    ma=vector([0, 0], a); % Построение вектора a
    text (ma(1)+0.3,ma(2)-0.3, ’a’, ’FontSize’, 20);
    mb=vector([0, 0], b); % Построение вектора b
    text (mb(1)+0.3,mb(2)-0.3, ’b’, ’FontSize’, 20);
    mc=vector([0, 0], c); % Построение вектора c=a+b
    text (mc(1)+0.3,mc(2)-0.3, ’c’, ’FontSize’, 20);		
    line([a(1), c(1)], [a(2), c(2)], ’LineWidth’, 1, ’Color’, ’k’);
    line([b(1), c(1)], [b(2), c(2)], ’LineWidth’, 1, ’Color’, ’k’);
    % Результаты работы программы. Координаты вектора c=a+b:
    c = 67
    
    (рис 6.7) Геометрическое представление действий над векторами

    Пример 6.7. Выполнить действия над векторами $$\vec{c}=3\vec{a}-2\vec{b}$$, где $$\vec{a}=\{1,2\}$$ и $$\vec{b}=\{3,1\}$$.

    Геометрически вычесть из вектора $$\vec{a}$$ вектор $$\vec{b}$$, значит найти такой вектор $$\vec{x}$$ для которого $$\vec{x}+\vec{b}=\vec{a}$$. Иначе говоря, если на векторах $$\vec{x}$$ и $$\vec{b}$$ построить треугольник, то $$\vec{a}$$ — его третья сторона (правило треугольника).

    Листинг 6.7 содержит команды Octave и результаты работы файла-сценария. Функция $$vector(A, B)$$, описана в задаче 6.2. Решение примера показано на рис. 6.7.

    	
    clf; cla;
    set(gcf, ’Position’, [20, 20, 400, 400]);
    set(gcf, ’numbertitle’, ’off’)
    set(gcf, ’name’, ’Vector c=4a-3b’)
    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, 1];
    c =[4*a(1)-3*b(1),4*a(2)-3*b(2)] % Действия над векторами
    for i =1:4 % Построение вектора 4a
    ma=vector([0, 0], i*a);
    end;
    text(ma(1)+0.3,ma(2)-0.3, ’4a’, ’FontSize’, 20);
    for i =1:3 % Построение вектора 3b
    mb=vector([0, 0], i*b);
    end;
    text(mb(1)+0.3,mb(2)-0.3, ’3b’, ’FontSize’, 20);
    % Построение вектора c=4a-3b
    mc=vector([3*b(1),3*b(2)], [4*a(1),4*a(2)]);
    text(mc(1)+0.3,mc(2)+0.3, ’c=4a-3b’, ’FontSize’, 20);
    % Результаты работы программы — координаты отрезка c=4a-3b
    c = -55
    

    Пример 6.8. Найти углы образуемые осями координат с вектором $$\vec{a}=\{2,-2,-1\}$$.

    Углы, образуемые положительными направлениями осей с вектором ~a можно рассчитать по формулам $$a_i$$ — проекция вектора на соответствующую ось. (Прим. редактора). $$\cos (\alpha)=\frac{a_{1}}{|\vec{a}|}$, $\cos (\beta )=\frac{a_{2}}{|\vec{a}|}$, $\cos (\gamma )=\frac{a_{3}}{|\vec{a}|}$$.

    Листинг 6.8 содержит команды Octave и результаты работы файла-сценария.

    	
    function[U]= ugol(X) % Углы, образуемые осями координат с вектором Х
    m=sqrt(X(1)^2+X(2)^2+X(3)^2);
    U=acos(X/m);
    end;
    function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
    gr(1)= round(rad*180/pi); % Градусы
    gr(2)= round((rad*180/pi-gr(1))*60); % Минуты
    end;
    u=ugol([2, -2, -1]) % Вычисление углов в радианах
    % Углы в градусах и минутах
    alf=rad_gr(u(1))
    bet=rad_gr(u(2))
    gam=rad_gr(u(3))
    % Результаты работы — углы в радианах
    u = 0.84107 2.30052 1.91063
    % Углы в градусах и минутах
    alf = 48 11
    bet = 132 -11
    gam = 109 28
    

    Скалярным произведением вектора $$\vec{a}$$ на вектор $$\vec{b}$$ называется произведение их модулей и косинуса угла между ними: $$\overrightarrow{ab}=|\vec{a}|\cdot |\vec{b}|\cos (\widehat {{a,b}})$$. Если $$\vec{a}=\{a_{1,}a_{2,}a_{3}\}$$ и $$\vec{b}=\{b_{1,}b_{2,}b_{3}\}$$, то $$\overrightarrow{ab}=a_{1}b_{1}+a_{2}b_{2}+a_{3}b_{3}$$.

    Пример 6.9. Найти угол между векторами $$\vec{a}=\{-2,1,2\}$$ и $$\vec{b}=\{-2,-2,1\}:\cos (\widehat {{a,b}})=\frac{\overrightarrow{ab}}{|\vec{a}|\cdot |\vec{b}|}$$.

    Текст файла-сценария и результат его работы представлены в листинге 6.9

    	
    function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
    gr(1)= round(rad*180/pi); % Градусы
    gr(2)= round((rad*180/pi_gr(1))*60); % Минуты
    end;
    a = [-2, 1, 2]; b=[-2, -2, 1];
    da=sqrt(a(1)^2+a(2)^2+a(3)^2);
    db=sqrt(b(1)^2+b(2)^2+b(3)^2);
    ab=sum(a. *b);
    alf=acos(ab/(da*db))
    rad_gr(alf)
    % Результат — угол в радианах
    alf = 1.1102
    % Угол в градусах
    ans = 64 -23
    

    Пример 6.10. Проверить, являются ли векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$, $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ взаимно перпендикулярными. Координаты точек: $$M(2, 1), N(6, 1), K(1, 2), L(7, 2), P (3, 3), R(5, 3), U(1, 4), V(5, 4)$$.

    Если $$\vec{a}=\{a_{1,}a_{2}\}$$ и $$\vec{b}=\{b_{1,}b_{2}\}$$, то их скалярное произведение равно нулю: $$\overrightarrow{ab}=a_{1}b_{1}+a_{2}b_{2}=0$$. На рис. 6.8 видно, что векторы $$\overrightarrow{NM}$$ и $$\overrightarrow{KL}$$ перпендикулярны, а $$\overrightarrow{PR}$$ и $$\overrightarrow{UV}$$ нет. Аналитические вычисления подтверждают это (листинг 6.10).

    	
    % Вычисление скалярного произведения векторов a и b
    function[ab]= scal(a, b)
    ab=a(1)*b(1)+a(2)*b(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’);
    M= [2, 6];N= [6, 6];K= [4, 4]; L = [4, 8];
    P= [7, 3];R= [9, 3];U= [5, 4];V= [9, 4];
    MN_KL=scal(N-M, L-K)
    PR_UV=scal(R-P, V-U)
    vector(N,M); % Построение вектора NM
    N_=text(N(1),N(2)+0.3, ’N’); set(N_, ’FontSize’, 20)
    M_=text(M(1),M(2)+0.3, ’M’); set(M_, ’FontSize’, 20)
    vector(K,L); % Построение вектора KL
    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); % Построение вектора PR
    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)
    vector(U,V);% Построение вектора UV
    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)
    % Результат работы программы
    MN_KL = 0
    PR_UV = 8
    
    (рис 6.8) Графическое решение примера 6.10

    Векторным произведением вектора $$\vec{a}$$ на не коллинеарный с ним вектор $$\vec{b}$$ называется вектор $$\vec{c}$$, модуль которого численно равен площади параллелограмма построенного на векторах $$\vec{a}$$ и $$\vec{b}$$: $$\vec{a}\times \vec{b}=|\vec{a}|\cdot |\vec{b}|\sin (\widehat {{a,b}})$$. Направление вектора $$\vec{c}$$ перпендикулярно плоскости параллелограмма. Если векторы $$\vec{a}=\{x_{1,}y_{1,}z_{1}\}$$ и $$\vec{b}=\{x_{1,}y_{2,}z_{2}\}$$, то $$\vec{a}\times\vec{b}=\left\{\left|\begin{smallmatrix}y_{1}z_{1}\\y_{2}z_{2}\end{smallmatrix}\right|,\left|\begin{smallmatrix}z_{1}x_{1}\\z_{2}x_{2}\end{smallmatrix}\right|,\left|\begin{smallmatrix}x_{1}y_{1}\\x_{2}y_{2}\end{smallmatrix}\right|\right\}$$.

    (рис 6.9) Геометрическая интерпретация векторного произведения

    Пример 6.11. Найти векторное произведение векторов $$\vec{a}=\{1,4\}$$ и $$\vec{b}=\{5,3\}$$. Вычислить угол между векторами.

    Графическое решение показано на рис. 6.9. Листинг 6.11 содержит текст программы и результаты её работы.

    	
    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, ’zlim’, [0, 10]);
    set(gca, ’xtick’, [0 : 10]); set(gca, ’ytick’, [0 : 10]);
    set(gca, ’ztick’, [0 : 10]);
    set(gca, ’View’, [30 30], ’box’, ’on’);
    xlabel(’x’); ylabel(’y’); zlabel(’z’);
    axis([0, 10, 0, 10, 0, 10]);
    grid on;
    function D=dlin(x) % Длина вектора
    	D=(x(1)^2+x(2)^2+x(3)^2)^(1/2);
    end;
    function gr=rad_gr(rad) % Перевод радиан в градусы и минуты
    	gr(1)= round(rad*180/pi); % Градусы
    	gr(2)= round((rad*180/pi_gr(1))*60); % Минуты
    end;
    % Исходные данные
    x1 =4; y1 =2; z1 =0; x2 =1; y2 =3; z2 =0; a=[x1, y1, z1]; b=[x2, y2, z2];
    % Расчёт координат векторного произведения
    M=[a; b]; M1=M(1:2, 2:3);M2=[M(:, 1),M(:, 3)]; M3=M(1:2, 1:2);
    c(1)=det(M1); c(2)=-det(M2); c(3)=(det(M3));
    % Расчёт угла между векторами a и b
    da=dlin(a); db=dlin(b); dc=dlin(c);
    alf=asin(dc/(da*db));
    % Изображение векторов a,b,c
    line([0, a(1)], [0, a(2)], [0, a(3)], ’LineWidth’, 5, ’Color’, ’k’);
    line([0, b(1)], [0, b(2)], [0, b(3)], ’LineWidth’, 5, ’Color’, ’k’);
    line([0, c(1)], [0, c(2)], [0, c(3)], ’LineWidth’, 5, ’Color’, ’k’);
    % Изображение стрелок на векторах
    line([c(1), c(1)], [c(2), c(2)], [c(3), c(3)], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’^’, ’markersize’, 16);
    line([b(1), b(1)], [b(2), b(2)], [b(3), b(3)], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’<’, ’markersize’, 10);
    line([a(1), a(1)], [a(2), a(2)], [a(3), a(3)], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’<’, ’markersize’, 10);
    % Расчёт координат вершины параллелограмма
    k1=y1/x1; k2=y2/x2; d(1) =(y1-y2+k1*x2-k2*x1)/(k1-k2);
    d(2)=k1*d(1)+y2-k1*x2; d(3) =0;
    % Стороны параллелограмма
    line([a(1),d(1)],[a(2),d(2)],[a(3),d(3)], ’LineWidth’, 2, ’Color’, ’k’);
    line([b(1),d(1)],[b(2),d(2)],[b(3),d(3)], ’LineWidth’, 2, ’Color’, ’k’);
    c % Координаты векторного произведения
    alfa=rad_gr(alf) % Угол между векторами a и b
    % Результаты работы программы — координаты векторного произведения
    c = 0 -0 10
    % Угол между векторами
    alfa = 45 -0
    

    Три вектора называют компланарными, если они, будучи приведены к общему началу, лежат в одной плоскости. Смешанным или векторно-скалярным произведением трёх векторов $$\vec{a}$$,$$\vec{b}$$ и $$\vec{c}$$ называется скалярное произведение вектора $$\vec{a}$$ на векторное произведение $$\vec{b}\times\vec{c}$$, то есть число $$\overrightarrow{abc}=\vec{a}\cdot (\vec{b}\times\vec{c})=(\vec{b}\times \vec{c})\cdot \vec{a}$$. Если векторы $$\vec{a}=\{x_{1,}y_{1,}z_{1}\}$$, $$\vec{b}=\{x_{1,}y_{2,}z_{2}\}$$ и $$\vec{\text{с}}=\{x_{3,}y_{3,}z_{3}\}$$ даны своими координатами, то смешанное произведение вычисляют по формуле:

    $$\overrightarrow{abc}= \displaystyle\left\arrowvert{ \begin{array}{ccc} x_{1}y_{1}z_{1}\\ x_{2}y_{2}z_{2}\\ x_{3}y_{3}z_{3} \end{array} }\right\arrowvert.$$

    Необходимым и достаточным условием компланарности векторов $$\vec{a}$$, $$\vec{b}$$ и $$\vec{c}$$ является равенство нулю их смешанного произведения $$\overrightarrow{abc}=0$$.

    Пример 6.12. Проверить компланарность векторов (листинг 6.12):

    $$\begin{aligned} \text{а) } \vec{a}=\{-2,-1,-3\}, \vec{b}=\{-1,4,6\} \text{ и } \vec{c}=\{1,5,9\};\\ \text{б) } \vec{a}=\{1,2,3\}, \vec{b}=\{-1,3,4\} \text{ и } \vec{c}=\{2,5,2\}. \end{aligned}$$
    	
    function d=komp(A, B,C)
    	M=[A;B;C ];
    	d=det (M);
    	if d==0
    		disp(’Векторы компланарны’);
    	else
    		disp(’Векторы не компланарны’);
    	end;
    end;
    a =[-2, -1, -3];b = [-1, 4, 6]; c = [1, 5, 9]; d1=komp(a, b, c)
    a = [ 1, 2, 3 ]; b = [ -1, 3, 4 ]; c = [ 2, 5, 2 ]; d2=komp( a, b, c )
    % Результат работы программы
    Векторы компланарны
    d1 = 0
    Векторы не компланарны
    d2 = -27
    

    6.2 Аналитическая геометрия

    Плоскость, проходящая через точку $$M_{0}(x_{0}, y_{0}, z_{0})$$ и перпендикулярная к вектору $$\vec{N}\{A,B,C\}$$ представляется уравнением $$A(x-x_{0})+B(y-y_{0})+C(z-z_{0})=0$$ или $$Ax+By+Cz+D=0$$.

    Вектор $$\vec{N}\{A,B,C\}$$ называется нормальным вектором плоскости.

    Пример 6.13. Записать уравнение и построить плоскость, проходящую через точку $$M_0 (2, 0, 4)$$ и перпендикулярную вектору $$\vec{N}\{3,0,-3\}$$.

    Исходя из условия примера уравнение плоскости имеет вид $$3(x-2)+0(y-1)-3(z-4)=0\Rightarrow 3x-6-3z+12=0\Rightarrow 3x-3z+6=0$$.

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

    $$Ax+By+Cz+D=0\Rightarrow z(x,y)=-{\frac{A}{C}}x-\frac{B}{C}y-\frac{D}{C},\\ z(x,y)=b_{0}+b_{1}x+b_{2}y,b_{0}=-{\frac{A}{C}},b_{1}=\frac{-{B}}{C},b_{2}=\frac{-{D}}{C}.$$ (рис 6.10) Изображение плоскости и её направляющего вектора

    Решение примера представлено в листинге 6.13 и на рис. 6.10

    	
    clf; cla;
    set(gcf, ’Position’, [ 20, 20, 400, 400 ] );
    axis ( [ 0, 1 0, 0, 1 0, 0, 1 0 ] )
    A=3;B=0;C=_3;D=6;N=[A, B,C ]; % Параметры плоскости
    b0= - D/C; b1= - A/C; b2= - B/C; % Параметры уравнения плоскости, преобразо% ванного к функции двух переменных
    								% Построение плоскости
    xk=5;yk=5;
    X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
    [ x, y]= meshgrid(X,Y);
    z=b0+b1*x+b2 * y;
    surf( x, y, z ), colormap gray
    grid on; xlabel ( ’x’, ’FontSize’, 2 0 );
    ylabel( ’y’, ’FontSize’, 2 0 ); zlabel( ’z’, ’FontSize’, 2 0 );
    set( gca, ’FontSize’, 1 2 ); set ( gca, ’box’, ’on’ );
    % Построение направляющего вектора
    line( [ xk, 0 ], [ 0, 0 ], [ b0, yk+b0 ], ’LineWidth’, 5, ’Color’, ’k’ );
    line( [ 0, 0 ], [ 0, 0 ], [ yk+b0, yk+b0 ], ’LineWidth’, 5, ’Color’, ’k’, ’
    	marker’, ’v’, ’markersize’, 1 6 );
    text(0+0.3,0+0.3, yk+b0 _1, ’N’, ’FontSize’, 2 0 );
    title( ’3x-3z+6=0’, ’FontSize’, 2 0 ) % Заголовок
    

    Если плоскость проходит через заданную точку $$M_{1}(x_{1,}y_{1,}z_{1})$$ и параллельна плоскости $$Ax + By + Cz + D = 0$$, то её уравнение записывают так $$A(x-x_{1})+B(y-y_{1})+C(z-z_{1})=0$$.

    (рис 6.11) Параллельные плоскости

    Пример 6.14. Записать уравнение и построить плоскость, проходящую через точку $$M_0 (1, 3, 5)$$ параллельно плоскости $$3x - 3z + 6 = 0$$.

    Уравнение плоскости имеет вид: $$3(x-1)-3(z-5)=0\Rightarrow 3x-3-3z+15=0\Rightarrow 3x-3z+12=0$$.

    Решение примера показано на рис. 6.11 и в листинге 6.14.

    	
    function p=plos(A, B, C,D)
    	% Параметры уравнения плоскости, преобразованного
    	b0= - D/C; b1= - A/C; b2= - B/C; % к функции двух переменных
    	% Построение плоскости
    	xk=5;yk=5;
    	X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
    	[ x, y]= meshgrid(X,Y);
    	z=b0+b1 * x+b2 * y;
    	surf( x, y, z ), colormap gray
    	grid on;
    	p=0;
    end;
    clf; cla; set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    axis( [ 0, 10, 0, 10, 0, 10 ] )
    A1=3;B1=0;C1=_3;D1=6; % Параметры плоскости
    % Построение плоскостей
    plos(A1, B1, C1, D1)
    hold on
    A2=3;B2=0;C2=_3;D2=12;
    p=plos(A2, B2, C2, D2)
    xlabel( ’x’, ’FontSize’, 2 0 ); ylabel( ’y’, ’FontSize’, 2 0 );
    zlabel( ’z’, ’FontSize’, 2 0 );
    set( gca, ’FontSize’, 1 2 ); set( gca, ’box’, ’on’ );
    M= [ 1, 3, 5 ]; % Изображение точки
    line( [M( 1 ),M( 1 ) ], [M( 2 ),M( 2 ) ], [M( 3 ),M( 3 ) ], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’o’, ’markersize’, 1 6 );
    text(M( 1 ) _0.5,M( 2 ) +0.5,M( 3 ) +1, ’M(1,3,5)’, ’FontSize’, 2 0 );
    title( ’3x-3z+6=0,3x-3z+12=0’, ’FontSize’, 2 0 )
    

    Если три точки $$M_{0}(x_{0}, y_{0}, z_{0}),M_{1}(x_{1}, y_{1}, z_{1})$$ и $$M_{2}(x_{2}, y_{2}, z_{2})$$ не лежат на одной прямой, то уравнение плоскости, проходящей через них, представляется уравнением:

    $$\left\arrowvert\begin{matrix}x-x_{0}y-y_{0}z-z_{0}\\x_{1}-x_{0}y_{1}-y_{0}z_{1}-z_{0}\\x_{2}-x_{0}y_{2}-y_{0}z_{2}-z_{0}\end{matrix}\right\arrowvert=0.$$

    Пример 6.15. Записать уравнение и построить плоскость, проходящую через точки $$M_0(1, 2, 3), M_1(2, 1, 2)$$ и $$M_2(3, 3, 1)$$.

    Заданные точки не лежат на одной прямой, так как векторы $$\overrightarrow{{M_{0}M_{1}}}$$ и $$\overrightarrow{{M_{0}M_{2}}}$$ не коллинеарны. ли. 6.12 и рис. 6.13 иллюстрируют это утверждение. Изображение на рис. 6.12 получено в результате работы программы показанной в листинге 6.15. Рис. 6.13 получен из ррис. 6.12ис путём поворота Аналитически поворот можно осуществить с помощью функции view, например, view(37.5,30); вернуть рисунок в исходное состояние можно командой view(2) (прим. редактора ). в графическом окне.

    	
    clf; cla;
    set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    set( gca, ’Position’, [ . 1, . 1, . 8, . 8 ] );
    set( gca, ’xlim’,[0,3]); set ( gca, ’ylim’,[0,3]); set ( gca, ’zlim’,[0,3]);
    set( gca, ’xtick’,[0:3]); set ( gca, ’ytick’,[0:3]); set ( gca, ’ztick’,[0:3]);
    set( gca, ’box’, ’on’ ); xlabel ( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    axis( [ 0, 3, 0, 3, 0, 3 ] )
    grid on;
    M0= [ 1, 2, 3 ];M1= [ 2, 1, 2 ];M2= [ 3, 3, 1 ]; % Исходные данные
    % Изображение векторов M0M1 и M0M2
    line ([M1(1),M0(1)],[M1(2),M0(2)],[M1(3),M0(3)],’LineWidth’,5,’Color’,’k’);
    line ([M2(1),M0(1)],[M2(2),M0(2)],[M2(3),M0(3)],’LineWidth’,5,’Color’,’k’);
    % Изображение стрелок на векторах
    line ([M1(1),M1(1)],[M1(2),M1(2)],[M1(3),M1(3)], ’LineWidth’, 5, ’Color’, ’k
    	’, ’marker’, ’>’, ’markersize’, 10 );		
    line ([M2(1),M2(1)],[M2(2),M2(2)],[M2(3),M2(3)], ’LineWidth’, 5, ’Color’, ’k
    	’, ’marker’, ’<’, ’markersize’, 10 );
    line ([M0(1),M0(1)],[M0(2),M0(2)],[M0(3),M0(3)], ’LineWidth’, 5, ’Color’, ’k
    	’, ’marker’, ’o’, ’markersize’, 10 );
    % Подписи
    text(M0( 1 ),M0( 2 ) +0.3,M0( 3 ), ’M0’, ’FontSize’, 2 0 );
    text(M1( 1 ),M1( 2 ) +0.3,M1( 3 ), ’M1’, ’FontSize’, 2 0 );
    text(M2( 1 ),M2( 2 ) +0.3,M2( 3 ), ’M2’, ’FontSize’, 2 0 );
    
    (рис 6.12) Иллюстрация к примеру 6.15 (векторы на плоскости) (рис 6.13) Иллюстрация примеру 6.15 (векторы в пространстве) (рис 6.14) Плоскость, проходящая через три точки

    Плоскость представлена уравнением:

    $$\left\arrowvert\begin{matrix}x-1y-2z-3\\1-1-1\\21-2\end{matrix}\right\arrowvert =0\Rightarrow x+z-4=0.$$

    Графическое изображение плоскости показано на рис. 6.14. Текст программы в листинге 6.16.

    	
    clf; cla;
    set ( gcf, ’Position’, [ 20, 20, 400, 400] ); axis ( [ 0, 10, 0, 10, 0, 10 ] )
    A=1;B=0;C=1;D=-4;N=[A, B,C ]; % Параметры плоскости
    % Параметры уравнения плоскости, преобразованного
    % к функции двух переменных
    b0= - D/C; b1= - A/C; b2= - B/C;
    % Построение плоскости
    xk=3;yk=3;X= 0 : 0.5 : xk;Y= 0 : 0.5 : yk;
    [ x, y]= meshgrid(X,Y);
    z=b0+b1*x+b2 * y;
    surf ( x, y, z ), colormap gray
    grid on;
    xlabel ( ’x’, ’FontSize’, 20 ); ylabel ( ’y’, ’FontSize’, 20 );
    zlabel ( ’z’, ’FontSize’, 20 );
    set ( gca, ’FontSize’, 12 ); set ( gca, ’box’, ’on’ );
    % Построение направляющего вектора
    line ( [ xk, 0 ], [ 0, 0 ], [ b0, b0_yk ], ’LineWidth’, 5, ’Color’, ’k’ );
    line ( [ xk, xk ], [ 0, 0 ], [ b0, b0 ], ’LineWidth’, 5, ’Color’, ’k’, ’marker’,
    	’v’, ’markersize’, 16 );
    text (0+0.3,0+0.3, b0-yk, ’N’, ’FontSize’, 20 );
    % Исходные данные
    M0= [ 1, 2, 3 ];M1= [ 2, 1, 2 ];M2= [ 3, 3, 1 ];
    % Нанесение точек на график
    line ( [M1( 1 ),M1( 1 ) ], [ M1( 2 ),M1( 2 ) ], [ M1( 3 ),M1( 3 ) ], ’LineWidth’, 5, ’
    	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
    line ( [M2( 1 ),M2( 1 ) ], [ M2( 2 ),M2( 2 ) ], [ M2( 3 ),M2( 3 ) ], ’LineWidth’, 5, ’
    	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
    line ( [M0( 1 ),M0( 1 ) ], [ M0( 2 ),M0( 2 ) ], [ M0( 3 ),M0( 3 ) ], ’LineWidth’, 5, ’
    	Color’, ’k’, ’marker’, ’o’, ’markersize’, 10 );
    % Подписи
    text (M0( 1 ) -0.3,M0( 2 ) -0.3,M0( 3 ), ’M0’, ’FontSize’, 20 );
    text (M1( 1 ) -0.3,M1( 2 ) -0.3,M1( 3 ), ’M1’, ’FontSize’, 20 );
    text (M2( 1 ) -0.3,M2( 2 ) -0.3,M2( 3 ), ’M2’, ’FontSize’, 20 );
    % Заголовок
    title ( ’x+z-4=0’, ’FontSize’, 20 )
    

    Если плоскость $$Ax + By + Cz + D = 0$$ не параллельна оси OX $$(A\neq 0)$$, то она отсекает на этой оси отрезок $$a=-{\frac{D}{A}}$$. Аналогично отрезки на осях OY, OZ будут $$b=-{\frac{D}{B}},(B\neq 0)$$ и $$\text{с}=-{\frac{D}{C}},(C\neq 0)$$. Таким образом, плоскость отсекающую на осях отрезки $$a, b$$ и $$c$$ можно представить уравнением

    $$\frac{x}{a}+\frac{y}{b}+\frac{z}{c}=1,$$

    которое называется уравнением плоскости в отрезках.

    Пример 6.16. Написать уравнение плоскости $$3x - 6y +2z - 12 = 0$$ в отрезках и построить эту плоскость.

    Найдём длины отрезков: $$a=-{\frac{D}{A}}=-{\frac{-12}{3}}=4$, $b=-{\frac{D}{B}}=-{\frac{-12}{-6}}=-2$, $\text{с}=-{\frac{D}{C}}=-{\frac{-12}{3}}=6$$.

    Запишем уравнение плоскости в отрезках:

    $$\frac{x}{4}+\frac{y}{-2}+\frac{z}{6}=1.$$

    Решение примера показано на рис. 6.15 и в листинге 6.17.

    	
    clf; cla;
    a =4;b=_2;c =6;
    set( gcf, ’Position’, [ 50, 50, 400, 400 ] );
    axis ( [ 0, a, 0, b, 0, c ] );
    X= 0 : 0.2 : a;Y=b : 0.2 : 0;
    [ x y]= meshgrid(X,Y);	
    z=c-c /a * x-c /b * y;
    hfig=surf ( x, y, z );
    set( hfig, ’FaceColor’, ’none’, ’EdgeColor’, ’k’ )
    % Изображение векторов a, b и c
    line( [ 0, a ], [ 0, 0 ], [ 0, 0 ], ’LineWidth’, 5, ’Color’, ’k’ );
    line( [ 0, 0 ], [ 0, b ], [ 0, 0 ], ’LineWidth’, 5, ’Color’, ’k’ );
    line( [ 0, 0 ], [ 0, 0 ], [ 0, c ], ’LineWidth’, 5, ’Color’, ’k’ );
    % Подписи
    text( a / 2, 0, 1, ’a’, ’FontSize’, 20 );
    text( 0, b / 2, 1, ’b’, ’FontSize’, 20 );
    text( 0.2, 0, c /2, ’c’, ’FontSize’, 20 );
    % Заголовок
    title( ’a=4, b=-2, c=6’, ’FontSize’, 14 )
    xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    set( gca, ’Position’, [ .1, .1, .8, .8 ] );
    set( gca, ’View’, [ 25 22 ] )
    
    (рис 6.15) Плоскость, заданная отрезками

    Рассмотрим особые случаи положения плоскости относительно системы координат:

  • Уравнение $$Ax + By + Cz = 0, (D = 0)$$ представляет плоскость, проходящую через начало координат.
  • Уравнение $$Ax + By + D = 0, (C = 0)$$ представляет плоскость параллельную оси OZ, уравнение $$Ax + CZ + D = 0, (B = 0)$$ — плоскость, параллельную оси OY, уравнение $$By + CZ + D = 0, (A = 0)$$ — плоскость, параллельную оси OX.
  • Уравнение $$Ax + D = 0, (B = 0, C = 0)$$ представляет плоскость параллельную координатной плоскости YOZ, уравнение $$By + D = 0, (A = 0, C = 0)$$ — плоскость, параллельную плоскости XOZ, уравнение $$CZ + D = 0, (A = 0, B = 0)$$ — плоскость, параллельную плоскости XOY.
  • Уравнения $$X = 0, Y = 0, Z = 0$$ представляют собой плоскости YOZ, XOZ и XOY.
  • Пример 6.17. Построить плоскости $$x + y - 1 = 0, x - z + 1 = 0, y + z + 2 = 0, x - y + 2 = 0, 2x + 3 = 0, 3y - 2 = 0$$.

    Ход решения примера описан в листинге 6.18. Графическое решение показано на рис. 6.16.

    	
    function p=plos1 (A, B, C,D)
    	M=[A, B,C ]; % Параметры плоскости
    	d = [ 0.1, 0.1, 0.1 ];
    	if A==0 M( 1 ) =1; end;
    	if B==0 M( 2 ) =1; end;
    	if C==0 M( 3 ) =1; end;
    	if A<0 d ( 1 ) = -0.1; end;
    	if B<0 d ( 2 ) = -0.1; end;
    	if C<0 d ( 3 ) = -0.1; end;
    	X=0:d ( 1 ) :M( 1 );
    	Y=0:d ( 2 ) :M( 2 );
    	Z=0:d ( 3 ) :M( 3 );
    	% Построение плоскости
    	if C!=0 % Плоскость не параллельна OZ
    	% Уравнение плоскости преобразовано к функции двух переменных z(x,y)
    		[ x, y]= meshgrid(X,Y);
    		b0= - D/C; b1= - A/C; b2= - B/C;
    		z=b0+b1 _ x+b2 _ y; f1=surf ( x, y, z ); colormap gray
    	else
    		if B!=0 % Плоскость не параллельна OY
    	% Уравнение плоскости преобразовано к функции двух переменных y(x,z)
    				[ x, z ]= meshgrid(X, Z);
    				b0= - D/B; b1= - A/B; b2= - C/B;
    				y=b0+b1 * x+b2 * z; f1=surf ( x, y, z ); colormap gray
    			else % Плоскость не параллельна OX
    	% Уравнение плоскости преобразовано к функции двух переменных x(y,z)
    				[ y, z ]= meshgrid(Y, Z);
    				b0= - D/A; b1= - B/A; b2= - C/A;
    				x=b0+b1 * y+b2 * z; f1=surf( x, y, z ); colormap gray
    			end;
    	end;
    	grid on;
    	xlabel ( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    	set( gca, ’xtick’, [ 0 :M( 1 ) ] ); set( gca, ’ytick’, [ 0 :M( 2 ) ] );
    	set( gca, ’ztick’, [ 0 :M( 3 ) ] ); set( gca, ’box’, ’on’ );
    	p=f1;
    	end; % конец функции
    % Изображение плоскостей заданных в примере 6.17
    clf; cla; subplot ( 3, 2, 1 );
    A1=1;B1=1;C1=0;D1=-1; % Плоскость x+y-1=0
    plos1 (A1, B1, C1, D1);
    title ( ’x+y-1=0, (C=0)’ );
    subplot ( 3, 2, 2 );
    A2=1;B2=0;C2=_1;D2=1; % Плоскость x-z+1=0
    plos1 (A2, B2, C2, D2);
    title ( ’x-z+1=0, (B=0)’ );
    subplot ( 3, 2, 3 );
    A3=0;B3=1;C3=1;D3=2; % Плоскость y+z+2=0
    plos1 (A3, B3, C3, D3);
    title ( ’y+z+2=0, (A=0)’ );
    set ( gca, ’View’, [ 1 3 0 3 0 ] );
    subplot ( 3, 2, 4 );
    A4=1;B4=-1;C4=1;D4=0; % Плоскость x-y+z-2=0
    plos1 (A4, B4, C4, D4);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’x-y+z=0,D=0’ );
    subplot ( 3, 2, 5 );
    A5=2;B5=0;C5=0;D5=3; % Плоскость 2x+3=0
    plos1 (A5, B5, C5, D5);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’2x+3=0, (B=0,C=0)’ )
    subplot ( 3, 2, 6 );
    A6=0;B6=3;C6=0;D6=_2; % Плоскость 3y-2=0
    plos1 (A6, B6, C6, D6);
    set ( gca, ’View’, [ 4 0 3 0 ] );
    title ( ’3y-2=0,(A=0,C=0)’ );
    

    Расстояние от точки $$M_1(x_1, y_1, z-1)$$ до плоскости $$Ax + By + Cz + D = 0$$ равно абсолютному значению величины

    $$d=\frac{|Ax_1+By_2+Cz_3+D|}{\sqrt{A^{2}+B^{2}+C^{2}}}.$$

    Пример 6.18. Найти расстояние от точки M1 (3, 9, 1) до плоскости $$x - 2y + 2z + 3 = 0$$.

    Решение показано в листинге 6.19.

    	
    % Исходные данные
    A=1;B=-2;C=2;D=-3;M= [ 3, 9, 1 ];N=[A;B;C ];
    % Расстояние от точки М(3,9,1) до плоскости x-2y+2z-3=0
    d=abs (M *N+D) /norm(N)
    d = 5.3333
    
    (рис 6.16) Особые случаи положения плоскости относительно системы координат

    Две плоскости $$A_1x+B_1y+C_1z+D_1=0$ и $A_2x+B_2y+C_2z+D_2=0$$ образуют четыре двугранных угла равных попарно. Один из них всегда равен углу между нормальными векторами $$\vec{N}_{1}\{A_{1,}B_{1,}C_{1}\}$$. Вычисляют любой из двугранных углов по формуле

    $$\cos (\phi )=\pm{\frac{A_{1}A_{2}+B_{1}B_{2}+C_{1}C_{2}}{\sqrt{A_{1}^{2}+B_{1}^{2}+C_{1}^{2}}\sqrt{A_{2}^{2}+B_{2}^{2}+C_{2}^{2}}}},$$

    причём, выбирая "+" получаем $$\cos (\angle \vec{N}_{1}\vec{N}_{2})$$, выбирая "–" получаем $$\cos (180-\angle \vec{N}_{1}\vec{N}_{2})$$.

    Пример 6.19. Найти угол между плоскостями $$x-y+\sqrt{2}z+2=0$$ и $$x+y+\sqrt{2}z-3=0$$.

    Решение показано в листинге 6.20.

    	
    % Исходные данные
    N1=[1, -1, sqrt( 2 ) ]; N2=[1,1, sqrt( 2 ) ];
    % Угол между плоскостями
    fi =acos( dot (N1, N2) /norm(N1) /norm(N2) );
    fi_1= round( f i * 180/ pi )
    fi_2=180-fi_1
    % Решение
    fi_1 = 60
    fi_2 = 120
    

    Два уравнения $$A_1x+B_1y+C_1z+D_1=0$$ и $$A_2x+B_2y+C_2z+D_2=0$$ представляют прямую линию, если коэффициенты $$A_1, B_1, C_1$$ не пропорциональны коэффициентам $$A_2, B_2, C_2$$ (то есть плоскости не параллельны). Если коэффициенты $$A_1, B_1, C_1$$ пропорциональны коэффициентам $$A_2, B_2, C_2$$, но свободные члены не подчинены той же пропорции $$\frac{A_2}{A_1}=\frac{B_2}{B_1}=\frac{C_2}{C_1}\neq \frac{D_2}{D_1}$$, то заданные уравнения не представляют никакого геометрического образа. Если все четыре величины пропорциональны $$\frac{A_2}{A_1}=\frac{B_2}{B_1}=\frac{C_2}{C_1}=\frac{D_2}{D_1}$$, то заданные уравнения представляют одну и ту же плоскость.

    Пример 6.20. Построить прямые линии, заданные уравнениями:

    a) $$2x - y = 0 и x + y - 1 = 0$$;

    b) $$x - y + z - 1 = 0 и 2x - 2y + 2z - 2 = 0$$;

    c) $$2x - 7y + 12z - 4 = 0 и 4x - 14y + 24z - 12 = 0$$.

    Решение показано в листинге 6.21. Для построения плоскости применялась функция $$plos1(A, B, C, D)$$, описанная в примере 6.17.

    	
    function flag=l i n e _ (N1, N2)
    	if N1 ( 1 )==0
    		k1 =0;
    	else
    		k1=N2 ( 1 ) /N1 ( 1 );
    	end;
    	if N1 ( 2 )==0
    		k2 =0;
    	else
    		k2=N2 ( 2 ) /N1 ( 2 );
    	end;
    	if N1 ( 3 )==0
    		k3 =0;
    	else
    		k3=N2 ( 3 ) /N1 ( 3 );
    	end;
    	if N1 ( 4 )==0
    		k4 =0;
    	else
    		k4=N2 ( 4 ) /N1 ( 4 );
    	end;
    	if ( k1 ! = k2 ) | ( k2 != k3 )
    		flag =0
    		clf; cla;
    		plos1 (N1 ( 1 ),N1 ( 2 ),N1 ( 3 ),N1 ( 4 ) );
    		hold on
    		plos1 (N2 ( 1 ),N2 ( 2 ),N2 ( 3 ),N2 ( 4 ) );
    	elseif ( k1 == k2 )  ( k2 == k3 )  ( k3 == k4 )
    		flag =1;
    		clf; cla;
    		plos1 (N1 ( 1 ),N1 ( 2 ),N1 ( 3 ),N1 ( 4 ) );
    	elseif ( k1 == k2 )  ( k2 == k3 )  ( k3!= k4 )
    		flag =2;
    		disp ( ’Геометрическая фигура не определена!’ )
    	end;
    end;
    % Случай a)
    A1=2;B1=-1;C1=0;D1=0;A2=1;B2=1;C2=0;D2=-1;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    title ( ’2x-y=0, x+y-1=0’ );
    set ( gca, ’View’, [ 110 30 ] );
    % Случай b)
    A1=1;B1=_1;C1=1;D1=_1;A2=2;B2=_2;C2=2;D2=_2;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    title ( ’x-y+z-1=0, 2x-2y+2z-2=0’ );
    set ( gca, ’View’, [ 60 30 ] );
    % Случай c)
    A1=2;B1=-7;C1=12;D1=-4;A2=4;B2=-14;C2=24;D2=-12;
    n1=[A1, B1, C1, D1 ]; n2=[A2, B2, C2, D2 ]; line _ ( n1, n2 )
    % Результат работы в случае с)
    Геометрическая фигура не определена!
    

    Всякий вектор $$\vec{a}\{l,m,n\}$$, лежащий на прямой (или параллельный ей), называется направляющим вектором этой прямой. Координаты $$\{l, m, n\}$$ называются направляющими коэффициентами прямой. За направляющий вектор прямой $$A_{1}x+B_{1}y+C_{1}z+D_{1}=0, A_{2}x+B_{2}y+C_{2}z+D_{2}=0$$ можно принять векторное произведение $$\vec{N}_{1}\times \vec{N}_{2}$$, где $$\vec{N}_{1}=\{A_{1,}B_{1,}C_{1}\},\vec{N}_{2}=\{A_{2,}B_{2,}C_{2}\}$$ — нормальные векторы плоскостей, образующих прямую.

    Пример 6.21. Найти направляющие коэффициенты прямой $$2x - 2y - z + 8 = 0 и x + 2y - 2z + 1 = 0$$ (листинг 6.24).

    	
    N1=[2, -2, -1];N2= [ 1, 2, -2 ];
    % Расчёт координат векторного произведения		
    M=[N1; N2 ];
    M1=M( 1 : 2, 2 : 3 );M2=[M( :, 1 ),M( :, 3 ) ]; M3=M( 1 : 2, 1 : 2 );
    a ( 1 )=det (M1); a ( 2 )= _det (M2); a ( 3 ) =( det (M3) );
    a
    % Векторное произведение
    a = 6  3  6
    
    (рис 6.17) Геометрическая интерпретация примера 6.20, случай a) (рис 6.18) Геометрическая интерпретация примера 6.20, случай b)

    Прямая $$L$$, проходящая через точку $$M_0(x_0,y_0,z_0)$$ и имеющая направляющий вектор $$\vec{a}\{l,m,n\}$$ представляется уравнениями $$\frac{x-x_{0}}{l}=\frac{y-y_{0}}{m}=\frac{z-z_{0}}{n}$$. Эти уравнения выражают коллинеарность векторов $$\overrightarrow{{M_{0}M_{1}}}\{x-x_{0,}y-y_{0,}z-z_{0}\},\vec{a}\{l,m,n\}$$ и называются каноническими уравнениями прямой.

    Уравнения $$x = x_0 + lt, y = y_0 + mt, z = z_0 + nt$$ называют параметрическими уравнениями прямой. Здесь величина $$t$$ является параметром и принимает различные значения.

    Пример 6.22. Записать параметрическое уравнение прямой, проходящей через две точки $$A(5, -3, 2)$$ и $$B(3, 1, -2)$$.

    Если в качестве направляющего вектора выбрать вектор $$\overrightarrow{AB}=\{3-5,1-(-3),-2-2\}=\{-2,4,-4\}$$, то каноническое уравнение будет иметь вид $$\frac{x-5}{-2}=\frac{y+3}{4}=\frac{z-2}{-4}$$, следовательно параметрическое уравнение запишем так $$x = 5 + 2t, y = -3 + 4t, z = 2 - 4t$$.

    Команды, которые применялись для графического решения примера (рис. 6.19) показаны в листинге 6.23.

    	
    clf; cla;
    set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    set( gca, ’Position’, [ . 1, . 1, . 8, . 8 ] );
    xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    axis( [ 3, 5, - 3, 2, -2, 3 ] );
    grid on;
    % Исходные данные
    A= [ 5, - 3, 2 ];B= [ 3, 1, - 2 ];
    t = 0 : 0.1 : 1;
    x=5-2* t; y= -3+4* t; z=2-4* t;
    % Изображение прямой
    line( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Изображение точек
    line( [A( 1 ),A( 1 ) ], [ A( 2 ),A( 2 ) ], [ A( 3 ),A( 3 ) ], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’o’, ’markersize’, 1 0 );
    line ( [ B( 1 ),B( 1 ) ], [ B( 2 ),B( 2 ) ], [ B( 3 ),B( 3 ) ], ’LineWidth’, 5, ’Color’
    	, ’k’, ’marker’, ’o’, ’markersize’, 1 0 );		
    % Подписи
    text(A( 1 ),A( 2 ) +0.3,A( 3 ) +0.5, ’A’, ’FontSize’, 20 );
    text(B( 1 ),B( 2 ) +0.3,B( 3 ) +0.3, ’B’, ’FontSize’, 20 );
    set( gca, ’View’, [ 120 50 ] );
    
    (рис 6.19) Прямая, проходящая через две точки

    Если известны направляющие векторы двух прямых $$\vec{a}\{l,m,n\}$$ и $$\vec{b}\{l',m',n'\}$$, то угол между этими прямыми можно вычислить по формуле

    $$\cos (\phi )=\pm {\frac{ll'+mm'+nn'}{\sqrt{l^{2}+m^{2}+n^{2}}\sqrt{l'^{2}+m'^{2}+'^{2}}}}.$$

    Пример 6.23. Найти угол между прямыми $$x = t, y = 2t, z = 3t$$ и $$x = -1 + 2t, y = 1 + t, z = -1 + 4t$$ (истинг 6.24л, рис. 6.20).

    	
    a = [ 1, 2, 3 ]; b = [ 2, 1, 4 ]; % Исходные данные
    fi =acos ( dot ( a, b ) /norm( a ) /norm( b ) );
    fi_1= round ( f i _ 180/ pi )
    clf; cla;
    set( gcf, ’Position’, [ 20, 20, 400, 400 ] );
    set( gca, ’Position’, [ .1, .1, .8, .8 ] );
    set( gca, ’box’, ’off’ );
    xlabel( ’x’ ); ylabel ( ’y’ ); zlabel ( ’z’ );
    axis( [ -1, 1, 0, 2, -1, 4 ] );
    grid on;
    t = 0 : 0.1 : 1;
    x=-1+2* t; y=1+t; z= -1+4* t;
    % Изображение прямой
    line ( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Подписи
    text( -0.8,1, -1, ’b’, ’FontSize’, 20 );
    x=t; y=2* t; z=3* t;
    % Изображение прямой
    line( x, y, z, ’LineWidth’, 5, ’Color’, ’k’ );
    % Подписи
    text( 0.2, 0, 0, ’a’, ’FontSize’, 20 );
    set( gca, ’View’, [ 30 30 ] )
    % Результат
    fi_1 = 21
    
    (рис 6.20) Угол между прямыми

    Прямая $$x = x_0 + lt, y = y_0 + mt, z = z_0 + nt$$ и плоскость$$ Ax + By + Cz + D = 0$$ могут иметь одну общую точку, могут не иметь общих точек (прямая параллельна плоскости) и иметь бесконечное множество общих точек (прямая лежит на плоскости).

    Общую точку (если такая существует) плоскости и прямой можно вычислить, если подставить уравнение прямой в уравнение плоскости и найти значение параметра $$t$$.

    Пример 6.24. Найти точку пересечения прямой $$x = -5 + 3t, y = 3 - t, z = -3 + 2t$$ с плоскостью $$2x + 3y + 3z - 8 = 0$$.

    Выполним расчёты в технике символьных вычислений (листинг 6.25).

    	
    symbols
    % Определение символьных переменных
    x = sym( "x" );
    y = sym( "y" );
    z = sym( "z" );
    t = sym( "t" );
    % Параметрическое уравнение прямой
    x = -5+3*t;
    y = 3-t;
    z = -3+2*t;
    % Уравнение плоскости
    f = 2 * x+3*y+3*z -8
    % Вычисление значения параметра t
    t = symfsolve( f, 0 )
    % Определение точки пересечения прямой и плоскости
    x = -5+3*t
    y = 3-t
    z = -3+2*t
    % Результаты вычислений
    % Уравнение плоскости, выраженное через параметр t
    f = -18.0+(9.0) * t
    % Значение параметра t
    t = 2.0000
    % Точка пересечения прямой и плоскости
    x = 1.00000
    y = 1.00000
    z = 1.00000
    
    Вернуться к учебному плану