Векторы и аналитическая геометрия
Задача 11.3. Векторное уравнение линииПолучите векторное уравнение прямой линии, проходящей через две заданные точки – A и B.
- Выберите точки A и B и примените это векторное уравнение, чтобы получить параметрическое уравнение линии.
- Создайте 3D-график этой линии.
Решение
Векторное уравнение линии – это уравнение, которое удовлетворяется в любой точке этой линии. Оно записывается через положение векторов точек A и B. Параметрическое уравнение получается из векторного уравнения для единичных векторов с коэффициентами.
- restart; with(Physics:-Vectors):
Setup(mathematicalnotation = true);
1. Получим векторное уравнение линии. Для этого будем полагать, что и
– это векторы, направленные на точки A и B. Тогда векторное изображение искомой линии параллельно разности векторов:
- A_ – B_;
Пусть – положение любой точки этой линии. Тогда вектор
тоже параллелен линии, а также и разности
, следовательно:
- Eq := (r_ – A_) &x % = 0;
– векторное уравнение линии, проходящей через A и B. Положение вектора любой точки этой линии удовлетворяет уравнению.
2. Для составления параметрического представления этой линии выберите конкретные точки A и B, т. е. задайте значения компонентов и
. Например:
- A_ := 2*_i – 3*_j + 4* _k;
- B_ := -4* _i + 2*_j – _k;
Независимо от значений и
, для положения вектора точки на прямой всегда имеем:
- r_ := x*_i + y*_j +z*_k;
Тогда векторное уравнение для этих определенных точек A и B имеет вид:
- Eq;
В силу независимости единичных векторов [] это векторное уравнение, т. е. это три уравнения, составленные из коэффициентов при единичных векторах:
- map(`=`, [coeffs(lhs(Eq), [_i, _j, _k])], 0);
Получается система трех уравнений относительно неизвестных x, y, z, которая по построению есть уравнение линии, поэтому две переменные выражаются через третью, которая и есть параметр параметрического уравнения, получающегося из решения системы.
- solve(%, [x, y, z]);
Такой вид имеют значения x и y при заданном значении z.
3. Чтобы нарисовать это параметрическое представление, вначале создадим соответствующие входные величины, выбирая первым параметр кривой (см. справку plots[spacecurve]).
- select(evalb, %[1]);
К примеру, для z от –4 до 4 входные величины команды spacecurve:
- input := [op(map(rhs,%%[1]))], lhs(%[1]) = -4..4;
Чтобы картинка была лучше, добавим опции:
- opts := axes = boxed, scaling = constrained, orientation = [-130, 70], labels = [x,y,z];
- plots[spacecurve](input, opts);

- Выведите векторное уравнение плоскости, проходящей через три точки – A, B, C.
- Выберите конкретные точки A, B, C и постройте эту плоскость.
Решение
Векторное уравнение плоскости есть уравнение, которое удовлетворяется для вектора каждой ее точки.
- restart; with(Physics:-Vectors):
Setup(mathematicalnotation = true);
1. Пусть ,
и
– векторы точек A, B, C, и
– положение вектора произвольной точки этой плоскости. Разности
и
– это векторы, параллельные изображаемой плоскости, и, кроме того, разность между
и любым вектором
,
или
– это вектор, параллельный плоскости. Уравнение плоскости можно получить, взяв векторное произведение разностей, содержащих
,
и
, чтобы получить вектор, перпендикулярный плоскости, а именно:
- G_ := (A_ – B_) &x (A_ – C_);
,
а затем приравнять нулю скалярное произведение между и любой из включающих
параллельных плоскости разностей. Векторное уравнение этой плоскости:
- Eq := (r_ – A_) . G_ = 0;
2. Нарисовать плоскость можно, задав конкретные точки A, B и C, т. е. – векторы ,
и
. Например:
- A_ := 2*_i – 3*_j + _k*4;
- B_ := 5* _i + 4*_j – 7*_k;
- C_ := 30/4* A_ + 90/7*B_;
Для всегда имеет место:
- r_ := x*_i + y*_j +z*_k;
Тогда векторное уравнение для этих определенных точек A, B и C:
- Eq;
Чтобы проверить, содержит ли представляемая этим уравнением поверхность точки A, B и C, подставим значения их координат и посмотрим, удовлетворяется ли уравнение. Координаты точек:
- A, B, C := seq([seq(coeff(v, ui), ui=[_i, _j, _k])],
v = [A_, B_, C_]);
Уравнение удовлетворяется.
- forPin [A, B, C] do
eval(Eq, [x = P[1], y = P[2], z = P[3]]);
od;
То, что поверхность является плоскостью, ясно из линейности Eq для всех x, y и z. Чтобы нарисовать плоскость, применим команду implicitplot3d (пример есть в Задаче 5.4 о вращении матриц).
- opts := axes = boxed, scaling = constrained,
orientation = [125, 65], style = surface;
- plots[implicitplot3d](Eq, x=-2..2, y=-2..2, z=-2..2, opts);

Вывести векторное уравнение плоскости, тангенциальной к сфере радиуса а.
Решение
Векторное уравнение этой плоскости удовлетворяется для вектора каждой ее точки.
- restart; with(Physics:-Vectors):
Setup(mathematicalnotation = true);
Обозначим:
– положение вектора любой точки плоскости,
– вектор центра сферы,
– вектор точки B, в которой плоскость тангенциальна сфере.
Тогда разность – это вектор на плоскости, а разность
– это вектор, проведенный из центра сферы в точку контакта сферы и тангенциальной ей плоскости, т. е. вектор должен быть перпендикулярен плоскости. Следовательно, эти два вектора перпендикулярны и их скалярное произведение = 0.
- Eq := (r_ – B_) . (B_ – A_) = 0;
Это уже почти векторное уравнение тангенциальной плоскости, но пока еще не записанное через координаты сферы. Поскольку – это вектор из центра сферы в точку контакта сферы и плоскости, его норма – это радиус сферы, т. е:
- key := Norm(B_ – A_) = a;
Разложим оба выражения так, чтобы их совместно использовать:
- expand(Eq);
- map(u -> u^2, key);
- expand(%);
Упростим одно относительно другого, оценивая (см. справку по simplify/siderels).
- simplify(%%%, {%}, {Norm(B_)});
Группируя члены в этом выражении, его можно переписать более компактно:
В качестве упражнения выберите три конкретных значения положений A, B и радиуса сферы, подставьте их в это уравнение и нарисуйте вместе сферу и тангенциальую плоскость (см. справку по команде plots[display] или пример в главе Комплексные числа и функции).
Определите бесконечно малый (инфинитезимальный) элемент объема сферы в сферических координатах.
Решение
Пусть векторное уравнение имеет вид с параметрами u, v и w исходного 3D-объекта. В данном случае таким объектом является сфера радиуса r. Элемент объема получается из уравнения так:
- restart; with(Physics:-Vectors):
Setup(mathematicalnotation = true);
Чтобы элемент объема записать в сферических координатах (r, θ, φ), их надо выбрать в качестве параметров u, v, w. Нам нужен явный вид (используется %diff, инертная форма diff, см. справку).
- answer := %diff(r_,r) . (%diff(r_,theta) &x %diff(r_,phi));
Первым шагом будет запись векторного уравнения для сферы радиуса r, т. е. уравнение, которое удовлетворяется для вектора
любой точки сферы. В сферических координатах при выборе начала координат в центре сферы это векторное уравнение имеет самый простой вид:
- r_ = R_(r, phi, theta);
- r_ := r * _r;
,
где направлен в любую точку сферы, r – это радиальная координата, а
– радиальный единичный вектор. Теперь надо вычислить частные производные, введенные выше, и при этом учесть, что
завист от φ и θ. Чтобы сделать зависимость от
явной, изменим базис в векторном уравнении на декартов базис (
) с постоянными единичными векторами, тогда частные производные можно взять явно:
- r_ := ChangeBasis(r_, 1);
Ответ:
- answer;
- value(%);
Следовательно, искомый элемент объема
