cartesian x, y, z
> Del &x VectorField( );
(-2)ē z
> L := VectorField() &x Del;
L: = e→vectorCalculus:-`&x`(Vector[column](3,[...],datatype = anything, storage = rectangular, order = Fortran_order, attributes = [vectorfield, coords = cartesian[x, y,z]], shape = []), VectorCalculus:-Gradient(e))
> L(f(x,y,2));
> L := Del &x Del;
L := (VectorCalculus:-Curl) @ (VectorCalculus:-Gradient)
> L(f(x,y,z));
0ē x
4.11.4. Операции с кривыми
В пакете векторных операций определен ряд типовых операций с кривыми. Ниже представлено задание эллиптической кривой и вычисление в аналитической форме нормали и радиуса кривизны (файл vopcurves):
> SetCoordinates(cartesian);
cartesian
> assume(t::real);
> ell := <2*cos(t),sin(t)>;
ell := 2 cos(t)e x+ sin(t)e y
> nv := simplify(PrincipalNormal(ell,t));
> len := simplify(LinearAlgebra:-Norm(nv, 2));
> r := simplify(RadiusOfCurvature(ell));
Теперь можно представить саму кривую (эллипс) и ее эволюту (рис. 4.39):
> ev := simplify(ell + r * nv / len);
> plot([[ell[1], ell[2], t=0..2*Pi], [ev[1], ev[2], t=0..2*Pi]]);
Рис. 4.39. Графики кривой — эллипса и ее эволюты
Нетрудно заметить, что для эллипса эволюта представляет собой удлиненную астроиду.
Для вычисления кривизны кривой С используется функция Curvature(C, t) в которой параметр t может и отсутствовать:
> Curvature(, t);
> с := Curvature(t -> ):
> simplify(c(t)) assuming t::real;
> SetCoordinates('polar');
polar
> Curvature():
> simplify(%) assuming t::real;
4.11.5. Интегрирование в пакете VectorCalculus
В аспекте практических приложений векторного анализа и теории поля особый интерес представляют приложения интегрирования пакете VectorCalculus. Так, видоизмененная функция int(f, dom) задает вычисление интеграла от функции f по области dom, например (файл vecint):
> restart:with(VectorCalculus):
> int(х^2+у^2, [x,y] = Circle(<0,1>, r));
> int(sin(х)*cos(у)*tan(z), [x,y,z] = Parallelepiped(0..Pi, 0..Pi/3, 0..Pi/4));
½√3 ln(2)
Функция PathInt(f, dom) вычисляет интеграл пути для функции f с R nдо R:
> PathInt(х^2, [х,y] = Line(<0,0>, <1,2>));
> PathInt(х^2+y^2, [х,y] = Circle(<0,0>, 3/2));
> PathInt(1, [х,y] = Ellipse(х^2+y^2/2-1));
Другая функция LineInt(F, dom), где F — вектор или процедура задания векторного поля, dom — параметр, характеризующий направление интегрирования, задает вычисление линейного интеграла в пространстве R n:
> SetCoordinates(cartesian[х,y]);
cartesian x, у
> LineInt(VectorField(<���х,y>), Line(<0,1>, <2,-5>));
14
> LineInt(VectorField(), Circlet<0,0>, r));
-2 r² π
> LineInt(VectorField(), Ellipse(х^2/4+y^2/9-1));
-12π
> LineInt(VectorField(), Arc(Ellipse(х^2/4+у^2/9-1), 0, Pi/2));
-3π
Функция ArcLength(C,dom) задает вычисление длины дуги С по известному интегральному выражению для нее:
> ArcLength(, t=0..Pi) assuming r>0;
πr
> ArcLength(t -> , 0..2);
√17-¼ln(-4+√17)
> evalf(%);
4.646783762
Рекомендуется просмотреть различные варианты задания области интегрирования dom в справке по этому пакету.
4.11.6. Задание матриц специального типа
Пакет VectorCalculus позволяет для заданной функции f задавать несколько матриц специального вида, которые часто используются при решении задач теории поля:
Hessian(f, t) — создание матрицы гессиана;
Jacobian(f, v, det) — создание матрицы якобиана;
Wronskian(f, t) — создание матрицы вронскиана.
Читать дальше
Конец ознакомительного отрывка
Купить книгу