Пакет Physics

 

Версия для печати

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

Задача 11.3. Векторное уравнение линии

Получите векторное уравнение прямой линии, проходящей через две заданные точки – A и B.

  1. Выберите точки A и B и примените это векторное уравнение, чтобы получить параметрическое уравнение линии.
  2. Создайте 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);

Задача 11.4. Векторное уравнение плоскости
  1. Выведите векторное уравнение плоскости, проходящей через три точки – A, B, C.
  2. Выберите конкретные точки 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);

Задача 11.5. Векторное уравнение плоскости, тангенциальной к сфере радиуса а

Вывести векторное уравнение плоскости, тангенциальной к сфере радиуса а.

Решение
Векторное уравнение этой плоскости удовлетворяется для вектора каждой ее точки.

  • 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] или пример в главе Комплексные числа и функции).

Задача 11.6. Элемент объема сферы

Определите бесконечно малый (инфинитезимальный) элемент объема сферы в сферических координатах.

Решение
Пусть векторное уравнение имеет вид с параметрами 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(%);

Следовательно, искомый элемент объема