Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 582 / 64 | Длительность: 20:55:00
Лекция 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.6. Нахождение суммы векторов (пример 6.6).
Геометрическое представление действий над векторами

Рис. 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.7. Действия над векторами (пример 6.7).

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

Углы, образуемые положительными направлениями осей с вектором ~a можно рассчитать по формулам1a_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
Листинг 6.8. Нахождение угла между вектором и осями (пример 6.8).

Скалярным произведением вектора \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.9. Нахождение угла между векторами (пример 6.9).
Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?