Векторные вычисления: grad, div, curl (rot) в разных системах координат
Способность Maple выполнять алгебраические действия означает, что он также может брать векторные производные с помощью команд Gradient, Divergence, Curl и Laplacian. Он может это делать в декартовых, цилиндрических и сферических координатах, задаваемых командой SetCoordinates. Но вначале надо вызывать специальный пакет векторных вычислений VectorCalculus.
- restart:with(VectorCalculus):
Примеры градиента в каждой из систем координат. Определяем функцию и берем ее градиент:
- SetCoordinates('cartesian'[x,y,z]);
- f1:=3*x^2+y*sqrt(z);
- Gradient(f1);
- SetCoordinates('cylindrical'[r,theta,z]);
- f2:=cos(theta)/sqrt(r^2+z^2);
- Gradient(f2);
- SetCoordinates('spherical'[r,theta,phi]);
- f3:=sin(phi)*r^2*(3*cos(theta)^2-1);
- Gradient(f3);
Maple может вычислять дивергенцию в каждой из координатных систем. Дивергенция действует на векторное поле, поэтому вначале надо применить команду VectorField, чтобы определить для выбранной системы координат.
- SetCoordinates('cartesian'[x,y,z]);
- g1:=VectorField(
); - Divergence(g1);
- SetCoordinates('cylindrical'[r,theta,z]);
- g2:=VectorField(<r^2*cos(theta),r^2*sin(theta),z^2>);
- Divergence(g2);
- SetCoordinates('spherical'[r,theta,phi]);
- g3:=VectorField(<r^2*cos(theta),r^2*sin(theta),cos(phi)>);
- Divergence(g3,[r,theta,phi],coords=spherical);
При вычислении ротора используется то же самое векторное поле, что для дивергенции.
- SetCoordinates('cartesian'[x,y,z]);
- Curl(g1);
- SetCoordinates('cylindrical'[r,theta,z]);
- Curl(g2);
- SetCoordinates('spherical'[r,theta,phi]);
- Curl(g3);
В каждой из этих систем координат можно выполнить операцию ∇2, Laplacian. Ниже – примеры для скалярной функции, использованной выше для градиента.
- SetCoordinates('cartesian'[x,y,z]);
- Laplacian(f1);
- SetCoordinates('cylindrical'[r,theta,z]);
- Laplacian(f2);
- SetCoordinates('spherical'[r,theta,phi]);
- Laplacian(f3);
- ?Laplacian
Это замечательные возможности, но в физике проблема чаще не в вычислении векторных производных, а в обратной задаче о нахождении поля. Это намного труднее, и Maple здесь сильно не поможет.
Два уравнения Максвелла для статического электрического и магнитного полей: электростатический потенциал точечного диполя div(E) = ρ/ε0, а для магнитного поля curl(B) = μ0J. Для каждого из полей E или B найдите формулы плотности заряда ρ и плотности тока J. Учтите, что E и B – векторы, которые надо правильно определить. Например, если Bθ = kr, то B надо определять как: B:=array([0,k*r,0]).
(a) Сферические координаты: (точечный заряд).
(b) Сферические координаты: (заряд твердой сферы).
(c) Цилиндрические координаты: (линейный заряд).
(d) Цилиндрические координаты: (полый заряженный цилиндр).
(e) Цилиндрические координаты: (длинная проволока).
(f) Цилиндрические координаты: (однородный ток в проволоке).
(g) Цилиндрические координаты: .