Модуль для работы с векторными полями. Разработал в качестве школьного проекта.
VectorField(\*comps, dim = None)
` `Векторное поле может быть задано с помощью
проекций векторов в каждой точке поля на
некоторые координатные оси.
\>>> x, y, z, t, p = sympy.symbols("x y z t p")
\>>> v = VectorField(x+y, y\*\*2, z\*y)
\>>> u = VectorField(t - p, p, dim=(t, p))
:param comps: компоненты векторного поля - объекты, переводимые в sympy.Expr
:param dim: кортеж из обозначений координат векторного поля - объектов, переводимых в sympy.Expr
VectorField.\_\_repr\_\_()
Возваращает строку в формате (F1, F2, F3...),
где F1, F2, F3... - проекции векторного поля
\>>> x, y, z = sympy.symbols("x y z")
\>>> v = VectorField(x+y, y\*\*2, z\*y)
\>>> print(v)
(x + y, y\*\*2, y\*z)
VectorField.visualize(image=None, scale=True, density=11, bounds=((-10, 10), (-10, 10), (-10, 10)),
description={"width": False, "length": False, "alpha": False, "color": False},
mode="A", width=0.005, length=1, alpha=1, color="black", imagesize=(10, 10), normalize=False, show=True)
` `Визуализирует дву- или трёхмерное векторное поле с помощью matplotlib
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> v.visualize(density = 30, color = "blue", width = 0.003)
:param image: изображение (figure), на котором будет отрисовано векторное поле. По умолчанию выведет изображение отдельно
:param scale: смасштабировать векторное поле на изображение
:param density: плотность отрисовки стрелок/потоков.
:param bounds: границы отрисовки векторного поля
:param description: задаёт настройки отрисовки: динамическая ширина потоков, нормализация длин стрелок, динамическая прозрачность стрелок, динамическая раскраска.
:param mode: Режим отрисовки векторного поля. Режим отрисовки "A": представляет поле в виде стрелок в каждой точке координатной плоскости/пространства. Режим отрисовки "S": представляет поле в виде потоков (отстутсвует для трёхмерных векторных полей).
:param width: ширина стрелок или потоков.
:param length: длина стрелок.
:param alpha: прозрачность стрелок
:param color: цвет отрисовки стрелок, потоков.
:param imagesize: размеры изображения
:param normalize: нормализация длин векторов в режиме стрелок. Представляет каждый вектор в виде единичного вектора, сохраняя таким образом информацию лишь о нарпавлении вектора
` `:param show: показывать или не показывать изображение
VectorField.\_\_add\_\_(self, other):
Возвращает VectorField, каждый компонент которого
является суммой соответствующих компонент входных
векторных полей. Размерности входных векторных полей
обязаны совпадать
\>>> x, y, z = sympy.symbols("x y z")
\>>> v = VectorField(x+y, y\*\*2, z\*y)
\>>> u = VectorField(x-y, 1/y, z)
\>>> u + v
(2\*x, y\*\*2 + 1/y, y\*z + z)
VectorField.\_\_mul\_\_(self, other):
В случае если other представлен численным типом данных
возваращает VectorField, каждый компонент которого является
произведением компоненты self и данного скаляра
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x, 1)
\>>> v \* 2
(2\*x, 2)
В случае если other представлен VectorField
возвращает Expr, который представляет собой
скалярное произведение компонент self и other.
Размерности self и other обязаны совпадать
\>>> x, y, z = sympy.symbols("x y z")
\>>> v = VectorField(x+y, y\*\*2, z\*y)
\>>> u = VectorField(x-y, 1/y, z)
\>>> u \* v
y\*z\*\*2 + y + (x - y)\*(x + y)
VectorField.\_\_eq\_\_(self, other):
VectorField равен другому VectorField тогда,
когда совпадают их компоненты и размерности
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> u = VectorField(x+y, y\*\*2)
\>>> t = VectorField(x-y, 1/y)
\>>> u == v
True
\>>> u == t
False
VectorField.\_\_setitem\_\_(self, key, value):
Позволяет вручную задать компоненту векторного поля
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> v[x] = x\*y
\>>> v
(x\*y, y\*\*2)
:param key: координата компоненты векторного поля в виде sympy.Symbol
:param value: задаваемое значение компоненты векторного поля - объекта, переводимого в sympy.Expr
VectorField.\_\_getitem\_\_(self, key):
Позволяет получить компоненту векторного поля по
координате или по индексу в self.\_comps
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> v[x]
x + y
\>>> v[1]
y\*\*2
:param key: координата компоненты векторного поля либо в виде строки, либо в виде числа - индекса в self.\_comps
VectorField.\_\_iter\_\_(self):
Позволяет использовать VectorField в цикле for
при этом должны перебирается кортежи, состоящие из
двух объектов: координаты и компоненты
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> for coordinate, component in v: print(coordinate, component)
x x + y
y y\*\*2
VectorField.\_\_len\_\_(self):
Возвращает длину self.dim
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> len(v)
2
vecfield.VectorField,subs(self, \*values):
Позволяет подставить числа в векторное поле вместо координат.
Возвращает кортеж из компонент после подстановки значений
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> v.subs(1, 2)
(3, 4)
\>>> v.subs({x : y, y : x\*\*2})
(x\*\*2 + y, x\*\*4)
:param values: выражения, подставляемые в компоненты векторного поля вместо координат. Каждая координата из self.dim будет заменена на соответственное значение в values, которое может быть представлено как кортежом, так и словарём.
vecfield.VectorField,div(self):
Возвращает ScalarField, который представляет собой
дивергенцию векторного поля
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x+y, y\*\*2)
\>>> v.div()
2\*y + 1
vecfield.VectorField,curl(self):
Возвращает VectorField, который является ротором векторного поля.
\>>> x, y, z = sympy.symbols("x y z")
\>>> v = VectorField(x+y, y\*\*2, z\*y)
\>>> v.curl()
(z, 0, -1)
vecfield.VectorField,work(self, curve, bounds, numerical=False):
Возвращает криволинейный интеграл второго рода вдоль кривой.
Другими словами, возвращает работу, которую совершает сила,
представленная векторным полем, при прохождении МТ вдоль кривой.
\>>> x, y, t = sympy.symbols("x y t")
\>>> v = VectorField(0, -10)
\>>> v.work((t\*\*2-1, t), (t, 0, 4))
- 40
:param curve: кривая, заданная параметрически. Задаётся кортежом из функций от параметра - объектов, переводимых в sympy.Expr.
:param bounds: границы интегрирования по кривой. Задаётся кортежом из переменной и пределов интегрирования
:param numerical: численное решение или аналитическое
vecfield.VectorField,flux(self, region, \*bounds, numerical=True):
Возвращает поверхностный интеграл второго рода по поверхности.
Другими словами, возвращает количество жидкости, которое протечёт
через поверхность, заданной region, поле скоростей которой задано
векторным полем за единицу времени
\>>> x, y, z, t, p = sympy.symbols("x y z t p")
\>>> v = VectorField(2, 0, 0)
\>>> v.flux((1, t, p), (t, -2, 2), (p, -2, 2))
32
:param region: кривая/поверхность, заданная параметрически. Задаётся кортежом из зависящих от нескольких параметров функций - объектов, переводимых в sympy.Expr.
:param bounds: границы интегрирования по кривой/поверхности. Задаются несколькими кортежами, которые содержат переменную и пределы интегрирования.
:param numerical: численное решение или аналитическое
vecfield.VectorField,potential(self):
Возвращает потенциал векторного поля, если он имеется.
Если поле не потенциально, будет вызвано исключение.
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(-x, 0)
\>>> v.potential()
- x\*\*2/2
vecfield.VectorField,is\_potential(self):
Возвращает True, если поле потенциально,
и False в противном случае
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(-x, 0)
\>>> v.is\_potential()
True
\>>> u = VectorField(y, -x)
\>>> u.is\_potential()
False
vecfield.VectorField,is\_solenoid(self):
Возвращает True, если поле соленоидально,
и False в противном случае
\>>> x, y = sympy.symbols("x y")
\>>> v = VectorField(x, y)
\>>> v.is\_solenoid()
False
\>>> u = VectorField(y, x)
\>>> u.is\_solenoid()
True
vecfield.ScalarField.\_\_init\_\_(self, func=0, dim=None):
Скалярное поле может быть задано с помощью функции
нескольких переменных, являющихся координатами точки.
\>>> x, y, z, v, t = sympy.symbols("x y z v t")
\>>> s = ScalarField(x\*\*2 + y\*\*2 + z\*\*2)
\>>> p = ScalarField(v + t, dim=(t, v))
:param func: функция нескольких переменных, задающая скалярное поле - объект, переводимый в sympy.Expr.
:param dim: кортеж из обозначений координат скалярного поля - объектов, переводимых в sympy.Expr.
vecfield.ScalarField.\_\_repr\_\_(self):
Возваращает строку, содержащую функцию ScalarField
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> print(s)
x\*\*2 + y\*\*2
vecfield.ScalarField.visualize(self,
image=None,
scale=True,
bounds=((-10, 10), (-10, 10), None),
density=256,
levels=10,
mode="G",
color=None,
showgrid=True,
show=True,
imagesize=(10, 10)):
Визуализирует одно- или двумерное скалярное поле с помощью matplotlib
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> s.visualize()
:param image: изображение (figure), на котором будет отриосвано векторное поле
:param scale: смасштабировать скалярное поле на изображение
:param bounds: границы отрисовки скалярного поля
:param density: точность прорисовки скалярного поля
:param levels: количество эквипотенциальных поверхностей в режиме эквипотенциальных поверхностей
:param mode: режим отрисовки скалярного поля. В режиме "G" отрисовывает скалярное поле как график. В режиме "S" отрисовывает скалярное поле с помощью эквипотенциальных поверхностей. Отсутствует для одномерных скалярных полей.
:param color: цвет отрисовки графика скалярного поля. В режиме эквипотенциальных поверхностей может принимать особое значение "D". В таком случае каждый уровень будет иметь свой цвет в зависимости от значения функции на этом уровне.
:param showgrid: отрисовка сетки для координатной плоскости.
:param imagesize: размеры изображения
vecfield.ScalarField.\_\_add\_\_(self, other):
Возвращает ScalarField, функция которого является
суммой функций self и other. Размерности скалярных
полей должны совпадать
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> p = ScalarField(x - y\*\*2)
\>>> s + p
x\*\*2 + x
vecfield.ScalarField.\_\_mul\_\_(self, other):
Возвращает ScalarField, функция которого является
произвдением функции self и other. other при помещении
в sympify() обязан возвращать объект класса Expr
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x + y)
\>>> s \* 2
2\*x + 2\*y
\>>> s \* x
x\*(x + y)
vecfield.ScalarField.\_\_eq\_\_(self, other):
ScalarField равен другому ScalarField тогда
когда, когда функция первого ScalarField
равна функции второго ScalarField
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> i = ScalarField(y\*\*2 + x\*\*2)
\>>> s == i
True
\>>> p = ScalarField(x + y)
\>>> s == p
False
vecfield.ScalarField.\_\_len\_\_(self):
Возвращает длину размерности векторного поля
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> len(s)
2
vecfield.ScalarField.subs(self, \*values):
Подставляет в функцию скалярного поля значения
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> s.subs(2, 2)
8
:param values: выражения, подставляемые в компоненты скалярного поля вместо координат. Каждая координата из self.dim будет заменена на соответственное значение в values, котороме может быть представлено как кортежом, так и словарём.
vecfield.ScalarField.work(self, curve, bounds, numerical=False):
Возвращает криволинейный интеграл второго рода вдоль кривой.
Другими словами, возвращает работу, которую совершает сила,
представленная векторным полем, при прохождении МТ вдоль кривой.
\>>> x, y, t = sympy.symbols("x y t")
\>>> v = ScalarField(x+y)
\>>> v.work((t, 0), (t, 0, 2))
2
:param curve: кривая, заданная параметрически. Задаётся кортежом из функций от параметра - объектов, переводимых в sympy.Expr.
:param bounds: границы интегрирования по кривой. Задаётся кортежом из переменной и пределов интегрирования
:param numerical: численное решение или аналитическое
vecfield.ScalarField.grad(self):
Возвращает VectorField, являющийся градиентом
скалярного поля
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2/2 + y\*\*2/2)
\>>> s.grad()
(x, y)
vecfield.ScalarField.ordiff(self, \*vector):
Возвращает значение производной по направлению в
каждой точке скалярного поля
\>>> x, y = sympy.symbols("x y")
\>>> s = ScalarField(x\*\*2 + y\*\*2)
\>>> s.ordiff(3, 4)
1. 2\*x + 1.6\*y
:param vector: вектор, задающий направление производной, состоящий из объектов, переводимых в sympy.Expr.
Raw data
{
"_id": null,
"home_page": "https://github.com/SorbetKipit/jubilant-barnacle/tree/main",
"name": "vecfield",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "python vectorifeld scalarfield",
"author": "SorbetKipit",
"author_email": "ibk07@yandex.ru",
"download_url": "https://files.pythonhosted.org/packages/1b/33/5360b5f116d1c7d16cd92a562752cd2d3203e126035f0c3d030ea811a591/vecfield-1.0.3.tar.gz",
"platform": null,
"description": "\u043f\u00bb\u0457\u0420\u045a\u0420\u0455\u0420\u0491\u0421\u0453\u0420\u00bb\u0421\u040a \u0420\u0491\u0420\u00bb\u0421\u040f \u0421\u0402\u0420\u00b0\u0420\u00b1\u0420\u0455\u0421\u201a\u0421\u2039 \u0421\u0403 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0420\u0458\u0420\u0451 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\u0420\u0458\u0420\u0451. \u0420\u00a0\u0420\u00b0\u0420\u00b7\u0421\u0402\u0420\u00b0\u0420\u00b1\u0420\u0455\u0421\u201a\u0420\u00b0\u0420\u00bb \u0420\u0406 \u0420\u0454\u0420\u00b0\u0421\u2021\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u00b5 \u0421\u20ac\u0420\u0454\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u00b0.\r\n\r\nVectorField(\\*comps, dim = None)\r\n\r\n`\t`\u0420\u2019\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0458\u0420\u0455\u0420\u00b6\u0420\u00b5\u0421\u201a \u0420\u00b1\u0421\u2039\u0421\u201a\u0421\u040a \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0455 \u0421\u0403 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u0455\u0421\u2030\u0421\u040a\u0421\u040b\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u0455\u0420\u00b5\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u2116 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0406 \u0420\u0406 \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0420\u0455\u0420\u2116 \u0421\u201a\u0420\u0455\u0421\u2021\u0420\u0454\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u0405\u0420\u00b0\r\n\r\n\u0420\u0405\u0420\u00b5\u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u2039\u0420\u00b5 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u0405\u0421\u2039\u0420\u00b5 \u0420\u0455\u0421\u0403\u0420\u0451.\r\n\r\n\\>>> x, y, z, t, p = sympy.symbols(\"x y z t p\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2, z\\*y)\r\n\r\n\\>>> u = VectorField(t - p, p, dim=(t, p))\r\n\r\n:param comps: \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0421\u2039, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0420\u00b5 \u0420\u0406 sympy.Expr\r\n\r\n:param dim: \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6 \u0420\u0451\u0420\u00b7 \u0420\u0455\u0420\u00b1\u0420\u0455\u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u2116 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr\r\n\r\n\r\n\r\nVectorField.\\_\\_repr\\_\\_()\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u00b0\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u0455\u0420\u0454\u0421\u0453 \u0420\u0406 \u0421\u201e\u0420\u0455\u0421\u0402\u0420\u0458\u0420\u00b0\u0421\u201a\u0420\u00b5 (F1, F2, F3...),\r\n\r\n\u0420\u0456\u0420\u0491\u0420\u00b5 F1, F2, F3... - \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u00b5\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u0451 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y, z = sympy.symbols(\"x y z\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2, z\\*y)\r\n\r\n\\>>> print(v)\r\n\r\n(x + y, y\\*\\*2, y\\*z)\r\n\r\n\r\n\r\nVectorField.visualize(image=None, scale=True, density=11, bounds=((-10, 10), (-10, 10), (-10, 10)),\r\n\r\ndescription={\"width\": False, \"length\": False, \"alpha\": False, \"color\": False},\r\n\r\nmode=\"A\", width=0.005, length=1, alpha=1, color=\"black\", imagesize=(10, 10), normalize=False, show=True)\r\n\r\n`\t`\u0420\u2019\u0420\u0451\u0420\u00b7\u0421\u0453\u0420\u00b0\u0420\u00bb\u0420\u0451\u0420\u00b7\u0420\u0451\u0421\u0402\u0421\u0453\u0420\u00b5\u0421\u201a \u0420\u0491\u0420\u0406\u0421\u0453- \u0420\u0451\u0420\u00bb\u0420\u0451 \u0421\u201a\u0421\u0402\u0421\u2018\u0421\u2026\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0421\u0403 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u0455\u0421\u2030\u0421\u040a\u0421\u040b matplotlib\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> v.visualize(density = 30, color = \"blue\", width = 0.003)\r\n\r\n:param image: \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 (figure), \u0420\u0405\u0420\u00b0 \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0458 \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0455 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5. \u0420\u045f\u0420\u0455 \u0421\u0453\u0420\u0458\u0420\u0455\u0420\u00bb\u0421\u2021\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040b \u0420\u0406\u0421\u2039\u0420\u0406\u0420\u00b5\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0455\u0421\u201a\u0420\u0491\u0420\u00b5\u0420\u00bb\u0421\u040a\u0420\u0405\u0420\u0455\r\n\r\n:param scale: \u0421\u0403\u0420\u0458\u0420\u00b0\u0421\u0403\u0421\u20ac\u0421\u201a\u0420\u00b0\u0420\u00b1\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0405\u0420\u00b0 \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5\r\n\r\n:param density: \u0420\u0457\u0420\u00bb\u0420\u0455\u0421\u201a\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454/\u0420\u0457\u0420\u0455\u0421\u201a\u0420\u0455\u0420\u0454\u0420\u0455\u0420\u0406.\r\n\r\n:param bounds: \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u2039 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n:param description: \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a \u0420\u0405\u0420\u00b0\u0421\u0403\u0421\u201a\u0421\u0402\u0420\u0455\u0420\u2116\u0420\u0454\u0420\u0451 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451: \u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0420\u0458\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u00b0\u0421\u040f \u0421\u20ac\u0420\u0451\u0421\u0402\u0420\u0451\u0420\u0405\u0420\u00b0 \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u0455\u0420\u0454\u0420\u0455\u0420\u0406, \u0420\u0405\u0420\u0455\u0421\u0402\u0420\u0458\u0420\u00b0\u0420\u00bb\u0420\u0451\u0420\u00b7\u0420\u00b0\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0491\u0420\u00bb\u0420\u0451\u0420\u0405 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454, \u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0420\u0458\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u00b0\u0421\u040f \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u00b7\u0421\u0402\u0420\u00b0\u0421\u2021\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454, \u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0420\u0458\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u00b0\u0421\u040f \u0421\u0402\u0420\u00b0\u0421\u0403\u0420\u0454\u0421\u0402\u0420\u00b0\u0421\u0403\u0420\u0454\u0420\u00b0.\r\n\r\n:param mode: \u0420\u00a0\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f. \u0420\u00a0\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \"A\": \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454 \u0420\u0406 \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0420\u0455\u0420\u2116 \u0421\u201a\u0420\u0455\u0421\u2021\u0420\u0454\u0420\u00b5 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u0405\u0420\u0455\u0420\u2116 \u0420\u0457\u0420\u00bb\u0420\u0455\u0421\u0403\u0420\u0454\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451/\u0420\u0457\u0421\u0402\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b0\u0420\u0405\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u00b0. \u0420\u00a0\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \"S\": \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u0455\u0420\u0454\u0420\u0455\u0420\u0406 (\u0420\u0455\u0421\u201a\u0421\u0403\u0421\u201a\u0421\u0453\u0421\u201a\u0421\u0403\u0420\u0406\u0421\u0453\u0420\u00b5\u0421\u201a \u0420\u0491\u0420\u00bb\u0421\u040f \u0421\u201a\u0421\u0402\u0421\u2018\u0421\u2026\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u2116).\r\n\r\n:param width: \u0421\u20ac\u0420\u0451\u0421\u0402\u0420\u0451\u0420\u0405\u0420\u00b0 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454 \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u0455\u0420\u0454\u0420\u0455\u0420\u0406.\r\n\r\n:param length: \u0420\u0491\u0420\u00bb\u0420\u0451\u0420\u0405\u0420\u00b0 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454.\r\n\r\n:param alpha: \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u00b7\u0421\u0402\u0420\u00b0\u0421\u2021\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454\r\n\r\n:param color: \u0421\u2020\u0420\u0406\u0420\u00b5\u0421\u201a \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454, \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u0455\u0420\u0454\u0420\u0455\u0420\u0406.\r\n\r\n:param imagesize: \u0421\u0402\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0421\u2039 \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f\r\n\r\n:param normalize: \u0420\u0405\u0420\u0455\u0421\u0402\u0420\u0458\u0420\u00b0\u0420\u00bb\u0420\u0451\u0420\u00b7\u0420\u00b0\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0491\u0420\u00bb\u0420\u0451\u0420\u0405 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0406 \u0420\u0406 \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458\u0420\u00b5 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0454. \u0420\u045f\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0421\u2039\u0420\u2116 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402 \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 \u0420\u00b5\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u0451\u0421\u2021\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u00b0, \u0421\u0403\u0420\u0455\u0421\u2026\u0421\u0402\u0420\u00b0\u0420\u0405\u0421\u040f\u0421\u040f \u0421\u201a\u0420\u00b0\u0420\u0454\u0420\u0451\u0420\u0458 \u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b7\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u0405\u0421\u201e\u0420\u0455\u0421\u0402\u0420\u0458\u0420\u00b0\u0421\u2020\u0420\u0451\u0421\u040b \u0420\u00bb\u0420\u0451\u0421\u20ac\u0421\u040a \u0420\u0455 \u0420\u0405\u0420\u00b0\u0421\u0402\u0420\u0457\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u0451 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u00b0\r\n\r\n`\t`:param show: \u0420\u0457\u0420\u0455\u0420\u0454\u0420\u00b0\u0420\u00b7\u0421\u2039\u0420\u0406\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u0405\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u0454\u0420\u00b0\u0420\u00b7\u0421\u2039\u0420\u0406\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5\r\n\r\n\r\n\r\nVectorField.\\_\\_add\\_\\_(self, other):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a VectorField, \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0421\u2039\u0420\u2116 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455\r\n\r\n\u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f \u0421\u0403\u0421\u0453\u0420\u0458\u0420\u0458\u0420\u0455\u0420\u2116 \u0421\u0403\u0420\u0455\u0420\u0455\u0421\u201a\u0420\u0406\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u201a\u0420\u0406\u0421\u0453\u0421\u040b\u0421\u2030\u0420\u0451\u0421\u2026 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a \u0420\u0406\u0421\u2026\u0420\u0455\u0420\u0491\u0420\u0405\u0421\u2039\u0421\u2026\r\n\r\n\u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u2116. \u0420\u00a0\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451 \u0420\u0406\u0421\u2026\u0420\u0455\u0420\u0491\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u2116\r\n\r\n\u0420\u0455\u0420\u00b1\u0421\u040f\u0420\u00b7\u0420\u00b0\u0420\u0405\u0421\u2039 \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0457\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u201a\u0421\u040a\r\n\r\n\\>>> x, y, z = sympy.symbols(\"x y z\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2, z\\*y)\r\n\r\n\\>>> u = VectorField(x-y, 1/y, z)\r\n\r\n\\>>> u + v\r\n\r\n(2\\*x, y\\*\\*2 + 1/y, y\\*z + z)\r\n\r\n\r\n\r\nVectorField.\\_\\_mul\\_\\_(self, other):\r\n\r\n\u0420\u2019 \u0421\u0403\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u00b0\u0420\u00b5 \u0420\u00b5\u0421\u0403\u0420\u00bb\u0420\u0451 other \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405 \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0421\u2039\u0420\u0458 \u0421\u201a\u0420\u0451\u0420\u0457\u0420\u0455\u0420\u0458 \u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0421\u2039\u0421\u2026\r\n\r\n\u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u00b0\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a VectorField, \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0421\u2039\u0420\u2116 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u0455\u0420\u0451\u0420\u00b7\u0420\u0406\u0420\u00b5\u0420\u0491\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5\u0420\u0458 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 self \u0420\u0451 \u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u00b0\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x, 1)\r\n\r\n\\>>> v \\* 2\r\n\r\n(2\\*x, 2)\r\n\r\n\u0420\u2019 \u0421\u0403\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u00b0\u0420\u00b5 \u0420\u00b5\u0421\u0403\u0420\u00bb\u0420\u0451 other \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405 VectorField\r\n\r\n\u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a Expr, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u2039\u0420\u2116 \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0455\u0420\u00b1\u0420\u0455\u0420\u2116\r\n\r\n\u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u0451\u0420\u00b7\u0420\u0406\u0420\u00b5\u0420\u0491\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a self \u0420\u0451 other.\r\n\r\n\u0420\u00a0\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451 self \u0420\u0451 other \u0420\u0455\u0420\u00b1\u0421\u040f\u0420\u00b7\u0420\u00b0\u0420\u0405\u0421\u2039 \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0457\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u201a\u0421\u040a\r\n\r\n\\>>> x, y, z = sympy.symbols(\"x y z\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2, z\\*y)\r\n\r\n\\>>> u = VectorField(x-y, 1/y, z)\r\n\r\n\\>>> u \\* v\r\n\r\ny\\*z\\*\\*2 + y + (x - y)\\*(x + y)\r\n\r\n\r\n\r\nVectorField.\\_\\_eq\\_\\_(self, other):\r\n\r\nVectorField \u0421\u0402\u0420\u00b0\u0420\u0406\u0420\u00b5\u0420\u0405 \u0420\u0491\u0421\u0402\u0421\u0453\u0420\u0456\u0420\u0455\u0420\u0458\u0421\u0453 VectorField \u0421\u201a\u0420\u0455\u0420\u0456\u0420\u0491\u0420\u00b0,\r\n\r\n\u0420\u0454\u0420\u0455\u0420\u0456\u0420\u0491\u0420\u00b0 \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0457\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u040b\u0421\u201a \u0420\u0451\u0421\u2026 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0451 \u0421\u0402\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> u = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> t = VectorField(x-y, 1/y)\r\n\r\n\\>>> u == v\r\n\r\nTrue\r\n\r\n\\>>> u == t\r\n\r\nFalse\r\n\r\n\r\n\r\nVectorField.\\_\\_setitem\\_\\_(self, key, value):\r\n\r\n\u0420\u045f\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0406\u0421\u0402\u0421\u0453\u0421\u2021\u0420\u0405\u0421\u0453\u0421\u040b \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u0453 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> v[x] = x\\*y\r\n\r\n\\>>> v\r\n\r\n(x\\*y, y\\*\\*2)\r\n\r\n:param key: \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b0 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 sympy.Symbol\r\n\r\n:param value: \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0406\u0420\u00b0\u0420\u00b5\u0420\u0458\u0420\u0455\u0420\u00b5 \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u00b0, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0406 sympy.Expr\r\n\r\n\r\n\r\nVectorField.\\_\\_getitem\\_\\_(self, key):\r\n\r\n\u0420\u045f\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u0451\u0421\u201a\u0421\u040a \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u0453 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u0457\u0420\u0455\r\n\r\n\u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b5 \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u0457\u0420\u0455 \u0420\u0451\u0420\u0405\u0420\u0491\u0420\u00b5\u0420\u0454\u0421\u0403\u0421\u0453 \u0420\u0406 self.\\_comps\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> v[x]\r\n\r\nx + y\r\n\r\n\\>>> v[1]\r\n\r\ny\\*\\*2\r\n\r\n:param key: \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b0 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u00bb\u0420\u0451\u0420\u00b1\u0420\u0455 \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u0455\u0420\u0454\u0420\u0451, \u0420\u00bb\u0420\u0451\u0420\u00b1\u0420\u0455 \u0420\u0406 \u0420\u0406\u0420\u0451\u0420\u0491\u0420\u00b5 \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b0 - \u0420\u0451\u0420\u0405\u0420\u0491\u0420\u00b5\u0420\u0454\u0421\u0403\u0420\u00b0 \u0420\u0406 self.\\_comps\r\n\r\n\r\n\r\nVectorField.\\_\\_iter\\_\\_(self):\r\n\r\n\u0420\u045f\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0451\u0421\u0403\u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u00b7\u0420\u0455\u0420\u0406\u0420\u00b0\u0421\u201a\u0421\u040a VectorField \u0420\u0406 \u0421\u2020\u0420\u0451\u0420\u0454\u0420\u00bb\u0420\u00b5 for\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u0451 \u0421\u040c\u0421\u201a\u0420\u0455\u0420\u0458 \u0420\u0491\u0420\u0455\u0420\u00bb\u0420\u00b6\u0420\u0405\u0421\u2039 \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u00b1\u0420\u0451\u0421\u0402\u0420\u00b0\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0451, \u0421\u0403\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0455\u0421\u040f\u0421\u2030\u0420\u0451\u0420\u00b5 \u0420\u0451\u0420\u00b7\r\n\r\n\u0420\u0491\u0420\u0406\u0421\u0453\u0421\u2026 \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406: \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0421\u2039 \u0420\u0451 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> for coordinate, component in v: print(coordinate, component)\r\n\r\nx x + y\r\n\r\ny y\\*\\*2\r\n\r\n\r\n\r\nVectorField.\\_\\_len\\_\\_(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0491\u0420\u00bb\u0420\u0451\u0420\u0405\u0421\u0453 self.dim\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> len(v)\r\n\r\n2\r\n\r\n\r\n\r\nvecfield.VectorField,subs(self, \\*values):\r\n\r\n\u0420\u045f\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u0451\u0421\u201a\u0421\u040a \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b0 \u0420\u0406 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0406\u0420\u0458\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0455 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a.\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6 \u0420\u0451\u0420\u00b7 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a \u0420\u0457\u0420\u0455\u0421\u0403\u0420\u00bb\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0405\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u2116\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> v.subs(1, 2)\r\n\r\n(3, 4)\r\n\r\n\\>>> v.subs({x : y, y : x\\*\\*2})\r\n\r\n(x\\*\\*2 + y, x\\*\\*4)\r\n\r\n:param values: \u0420\u0406\u0421\u2039\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f, \u0420\u0457\u0420\u0455\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0420\u0458\u0421\u2039\u0420\u00b5 \u0420\u0406 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u0406\u0420\u0458\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0455 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a. \u0420\u0459\u0420\u00b0\u0420\u00b6\u0420\u0491\u0420\u00b0\u0421\u040f \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b0 \u0420\u0451\u0420\u00b7 self.dim \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u00b7\u0420\u00b0\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u00b5\u0420\u0405\u0420\u00b0 \u0420\u0405\u0420\u00b0 \u0421\u0403\u0420\u0455\u0420\u0455\u0421\u201a\u0420\u0406\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0406 values, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u00b5 \u0420\u0458\u0420\u0455\u0420\u00b6\u0420\u00b5\u0421\u201a \u0420\u00b1\u0421\u2039\u0421\u201a\u0421\u040a \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0455 \u0420\u0454\u0420\u00b0\u0420\u0454 \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458, \u0421\u201a\u0420\u00b0\u0420\u0454 \u0420\u0451 \u0421\u0403\u0420\u00bb\u0420\u0455\u0420\u0406\u0420\u00b0\u0421\u0402\u0421\u2018\u0420\u0458.\r\n\r\n\r\n\r\nvecfield.VectorField,div(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a ScalarField, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u2039\u0420\u2116 \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0455\u0420\u00b1\u0420\u0455\u0420\u2116\r\n\r\n\u0420\u0491\u0420\u0451\u0420\u0406\u0420\u00b5\u0421\u0402\u0420\u0456\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0421\u040b \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2)\r\n\r\n\\>>> v.div()\r\n\r\n2\\*y + 1\r\n\r\n\r\n\r\nvecfield.VectorField,curl(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a VectorField, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u2039\u0420\u2116 \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f \u0421\u0402\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0458 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f.\r\n\r\n\\>>> x, y, z = sympy.symbols(\"x y z\")\r\n\r\n\\>>> v = VectorField(x+y, y\\*\\*2, z\\*y)\r\n\r\n\\>>> v.curl()\r\n\r\n(z, 0, -1)\r\n\r\n\r\n\r\nvecfield.VectorField,work(self, curve, bounds, numerical=False):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u00bb\u0420\u0451\u0420\u0405\u0420\u00b5\u0420\u2116\u0420\u0405\u0421\u2039\u0420\u2116 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u00bb \u0420\u0406\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u0402\u0420\u0455\u0420\u0491\u0420\u00b0 \u0420\u0406\u0420\u0491\u0420\u0455\u0420\u00bb\u0421\u040a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116.\r\n\r\n\u0420\u201d\u0421\u0402\u0421\u0453\u0420\u0456\u0420\u0451\u0420\u0458\u0420\u0451 \u0421\u0403\u0420\u00bb\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0458\u0420\u0451, \u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0402\u0420\u00b0\u0420\u00b1\u0420\u0455\u0421\u201a\u0421\u0453, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u0453\u0421\u040b \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u20ac\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0451\u0420\u00bb\u0420\u00b0,\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0420\u0458 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u0458, \u0420\u0457\u0421\u0402\u0420\u0451 \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u2026\u0420\u0455\u0420\u00b6\u0420\u0491\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u0451 \u0420\u045a\u0420\u045e \u0420\u0406\u0420\u0491\u0420\u0455\u0420\u00bb\u0421\u040a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116.\r\n\r\n\\>>> x, y, t = sympy.symbols(\"x y t\")\r\n\r\n\\>>> v = VectorField(0, -10)\r\n\r\n\\>>> v.work((t\\*\\*2-1, t), (t, 0, 4))\r\n\r\n- 40\r\n\r\n:param curve: \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u00b0\u0421\u040f, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0451. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u00b7 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u2116 \u0420\u0455\u0421\u201a \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u00b0 - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr.\r\n\r\n:param bounds: \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u2039 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f \u0420\u0457\u0420\u0455 \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u00b7 \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u2116 \u0420\u0451 \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0406 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f\r\n\r\n:param numerical: \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u00b5 \u0421\u0402\u0420\u00b5\u0421\u20ac\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u00b0\u0420\u0405\u0420\u00b0\u0420\u00bb\u0420\u0451\u0421\u201a\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00b5\r\n\r\n\r\n\r\nvecfield.VectorField,flux(self, region, \\*bounds, numerical=True):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0405\u0421\u2039\u0420\u2116 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u00bb \u0420\u0406\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u0402\u0420\u0455\u0420\u0491\u0420\u00b0 \u0420\u0457\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451.\r\n\r\n\u0420\u201d\u0421\u0402\u0421\u0453\u0420\u0456\u0420\u0451\u0420\u0458\u0420\u0451 \u0421\u0403\u0420\u00bb\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0458\u0420\u0451, \u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0454\u0420\u0455\u0420\u00bb\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u0455 \u0420\u00b6\u0420\u0451\u0420\u0491\u0420\u0454\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u00b5 \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u201a\u0420\u00b5\u0421\u2021\u0421\u2018\u0421\u201a\r\n\r\n\u0421\u2021\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u00b7 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u2116 region, \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0421\u0403\u0420\u0454\u0420\u0455\u0421\u0402\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u00b5\u0420\u2116 \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u2116 \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0455\r\n\r\n\u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0420\u0458 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u0458 \u0420\u00b7\u0420\u00b0 \u0420\u00b5\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u0453 \u0420\u0406\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0451\r\n\r\n\\>>> x, y, z, t, p = sympy.symbols(\"x y z t p\")\r\n\r\n\\>>> v = VectorField(2, 0, 0)\r\n\r\n\\>>> v.flux((1, t, p), (t, -2, 2), (p, -2, 2))\r\n\r\n32\r\n\r\n:param region: \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u00b0\u0421\u040f/\u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0451. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u00b7 \u0420\u00b7\u0420\u00b0\u0420\u0406\u0420\u0451\u0421\u0403\u0421\u040f\u0421\u2030\u0420\u0451\u0421\u2026 \u0420\u0455\u0421\u201a \u0420\u0405\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u0454\u0420\u0451\u0421\u2026 \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u0455\u0420\u0406 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u2116 - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr.\r\n\r\n:param bounds: \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u2039 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f \u0420\u0457\u0420\u0455 \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116/\u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u040b\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0405\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u0454\u0420\u0451\u0420\u0458\u0420\u0451 \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u00b0\u0420\u0458\u0420\u0451, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u2039\u0420\u00b5 \u0421\u0403\u0420\u0455\u0420\u0491\u0420\u00b5\u0421\u0402\u0420\u00b6\u0420\u00b0\u0421\u201a \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0405\u0421\u0453\u0421\u040b \u0420\u0451 \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0420\u00b5\u0420\u00bb\u0421\u2039 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f.\r\n\r\n:param numerical: \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u00b5 \u0421\u0402\u0420\u00b5\u0421\u20ac\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u00b0\u0420\u0405\u0420\u00b0\u0420\u00bb\u0420\u0451\u0421\u201a\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00b5\r\n\r\n\r\n\r\nvecfield.VectorField,potential(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f, \u0420\u00b5\u0421\u0403\u0420\u00bb\u0420\u0451 \u0420\u0455\u0420\u0405 \u0420\u0451\u0420\u0458\u0420\u00b5\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f.\r\n\r\n\u0420\u2022\u0421\u0403\u0420\u00bb\u0420\u0451 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0405\u0420\u00b5 \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0420\u0455, \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u0406\u0421\u2039\u0420\u00b7\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0455 \u0420\u0451\u0421\u0403\u0420\u0454\u0420\u00bb\u0421\u040b\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5.\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(-x, 0)\r\n\r\n\\>>> v.potential()\r\n\r\n- x\\*\\*2/2\r\n\r\n\r\n\r\nvecfield.VectorField,is\\_potential(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a True, \u0420\u00b5\u0421\u0403\u0420\u00bb\u0420\u0451 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0420\u0455,\r\n\r\n\u0420\u0451 False \u0420\u0406 \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u201a\u0420\u0451\u0420\u0406\u0420\u0405\u0420\u0455\u0420\u0458 \u0421\u0403\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u00b0\u0420\u00b5\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(-x, 0)\r\n\r\n\\>>> v.is\\_potential()\r\n\r\nTrue\r\n\r\n\\>>> u = VectorField(y, -x)\r\n\r\n\\>>> u.is\\_potential()\r\n\r\nFalse\r\n\r\n\r\n\r\nvecfield.VectorField,is\\_solenoid(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a True, \u0420\u00b5\u0421\u0403\u0420\u00bb\u0420\u0451 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0421\u0403\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0455\u0420\u0451\u0420\u0491\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0420\u0455,\r\n\r\n\u0420\u0451 False \u0420\u0406 \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u201a\u0420\u0451\u0420\u0406\u0420\u0405\u0420\u0455\u0420\u0458 \u0421\u0403\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u00b0\u0420\u00b5\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> v = VectorField(x, y)\r\n\r\n\\>>> v.is\\_solenoid()\r\n\r\nFalse\r\n\r\n\\>>> u = VectorField(y, x)\r\n\r\n\\>>> u.is\\_solenoid()\r\n\r\nTrue\r\n\r\n\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_init\\_\\_(self, func=0, dim=None):\r\n\r\n\u0420\u040e\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0458\u0420\u0455\u0420\u00b6\u0420\u00b5\u0421\u201a \u0420\u00b1\u0421\u2039\u0421\u201a\u0421\u040a \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0455 \u0421\u0403 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u0455\u0421\u2030\u0421\u040a\u0421\u040b \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u0451\r\n\r\n\u0420\u0405\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u0454\u0420\u0451\u0421\u2026 \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0405\u0421\u2039\u0421\u2026, \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0421\u040b\u0421\u2030\u0420\u0451\u0421\u2026\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b0\u0420\u0458\u0420\u0451 \u0421\u201a\u0420\u0455\u0421\u2021\u0420\u0454\u0420\u0451.\r\n\r\n\\>>> x, y, z, v, t = sympy.symbols(\"x y z v t\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2 + z\\*\\*2)\r\n\r\n\\>>> p = ScalarField(v + t, dim=(t, v))\r\n\r\n:param func: \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0405\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00bb\u0421\u040a\u0420\u0454\u0420\u0451\u0421\u2026 \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0405\u0421\u2039\u0421\u2026, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u040b\u0421\u2030\u0420\u00b0\u0421\u040f \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0420\u2116 \u0420\u0406 sympy.Expr.\r\n\r\n:param dim: \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6 \u0420\u0451\u0420\u00b7 \u0420\u0455\u0420\u00b1\u0420\u0455\u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u2116 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr.\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_repr\\_\\_(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0420\u00b0\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0421\u201a\u0421\u0402\u0420\u0455\u0420\u0454\u0421\u0453, \u0421\u0403\u0420\u0455\u0420\u0491\u0420\u00b5\u0421\u0402\u0420\u00b6\u0420\u00b0\u0421\u2030\u0421\u0453\u0421\u040b \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040b ScalarField\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> print(s)\r\n\r\nx\\*\\*2 + y\\*\\*2\r\n\r\n\r\n\r\nvecfield.ScalarField.visualize(self,\r\n\r\nimage=None,\r\n\r\nscale=True,\r\n\r\nbounds=((-10, 10), (-10, 10), None),\r\n\r\ndensity=256,\r\n\r\nlevels=10,\r\n\r\nmode=\"G\",\r\n\r\ncolor=None,\r\n\r\nshowgrid=True,\r\n\r\nshow=True,\r\n\r\nimagesize=(10, 10)):\r\n\r\n\u0420\u2019\u0420\u0451\u0420\u00b7\u0421\u0453\u0420\u00b0\u0420\u00bb\u0420\u0451\u0420\u00b7\u0420\u0451\u0421\u0402\u0421\u0453\u0420\u00b5\u0421\u201a \u0420\u0455\u0420\u0491\u0420\u0405\u0420\u0455- \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u0491\u0420\u0406\u0421\u0453\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0421\u0403 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u0455\u0421\u2030\u0421\u040a\u0421\u040b matplotlib\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> s.visualize()\r\n\r\n:param image: \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 (figure), \u0420\u0405\u0420\u00b0 \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0458 \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0420\u0455\u0421\u0403\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0455 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\r\n\r\n:param scale: \u0421\u0403\u0420\u0458\u0420\u00b0\u0421\u0403\u0421\u20ac\u0421\u201a\u0420\u00b0\u0420\u00b1\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0421\u201a\u0421\u040a \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0405\u0420\u00b0 \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5\r\n\r\n:param bounds: \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u2039 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n:param density: \u0421\u201a\u0420\u0455\u0421\u2021\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0421\u040a \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n:param levels: \u0420\u0454\u0420\u0455\u0420\u00bb\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u0455 \u0421\u040c\u0420\u0454\u0420\u0406\u0420\u0451\u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u00b5\u0420\u2116 \u0420\u0406 \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458\u0420\u00b5 \u0421\u040c\u0420\u0454\u0420\u0406\u0420\u0451\u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u00b5\u0420\u2116\r\n\r\n:param mode: \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458 \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f. \u0420\u2019 \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458\u0420\u00b5 \"G\" \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0421\u2039\u0420\u0406\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0420\u0454\u0420\u00b0\u0420\u0454 \u0420\u0456\u0421\u0402\u0420\u00b0\u0421\u201e\u0420\u0451\u0420\u0454. \u0420\u2019 \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458\u0420\u00b5 \"S\" \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0421\u2039\u0420\u0406\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5 \u0421\u0403 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u0455\u0421\u2030\u0421\u040a\u0421\u040b \u0421\u040c\u0420\u0454\u0420\u0406\u0420\u0451\u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u00b5\u0420\u2116. \u0420\u045b\u0421\u201a\u0421\u0403\u0421\u0453\u0421\u201a\u0421\u0403\u0421\u201a\u0420\u0406\u0421\u0453\u0420\u00b5\u0421\u201a \u0420\u0491\u0420\u00bb\u0421\u040f \u0420\u0455\u0420\u0491\u0420\u0405\u0420\u0455\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u2116.\r\n\r\n:param color: \u0421\u2020\u0420\u0406\u0420\u00b5\u0421\u201a \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u0451 \u0420\u0456\u0421\u0402\u0420\u00b0\u0421\u201e\u0420\u0451\u0420\u0454\u0420\u00b0 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f. \u0420\u2019 \u0421\u0402\u0420\u00b5\u0420\u00b6\u0420\u0451\u0420\u0458\u0420\u00b5 \u0421\u040c\u0420\u0454\u0420\u0406\u0420\u0451\u0420\u0457\u0420\u0455\u0421\u201a\u0420\u00b5\u0420\u0405\u0421\u2020\u0420\u0451\u0420\u00b0\u0420\u00bb\u0421\u040a\u0420\u0405\u0421\u2039\u0421\u2026 \u0420\u0457\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u2026\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u00b5\u0420\u2116 \u0420\u0458\u0420\u0455\u0420\u00b6\u0420\u00b5\u0421\u201a \u0420\u0457\u0421\u0402\u0420\u0451\u0420\u0405\u0420\u0451\u0420\u0458\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0455\u0421\u0403\u0420\u0455\u0420\u00b1\u0420\u0455\u0420\u00b5 \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \"D\". \u0420\u2019 \u0421\u201a\u0420\u00b0\u0420\u0454\u0420\u0455\u0420\u0458 \u0421\u0403\u0420\u00bb\u0421\u0453\u0421\u2021\u0420\u00b0\u0420\u00b5 \u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0421\u2039\u0420\u2116 \u0421\u0453\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b5\u0420\u0405\u0421\u040a \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u0451\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u040a \u0421\u0403\u0420\u0406\u0420\u0455\u0420\u2116 \u0421\u2020\u0420\u0406\u0420\u00b5\u0421\u201a \u0420\u0406 \u0420\u00b7\u0420\u00b0\u0420\u0406\u0420\u0451\u0421\u0403\u0420\u0451\u0420\u0458\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451 \u0420\u0455\u0421\u201a \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u0451 \u0420\u0405\u0420\u00b0 \u0421\u040c\u0421\u201a\u0420\u0455\u0420\u0458 \u0421\u0453\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u0405\u0420\u00b5.\r\n\r\n:param showgrid: \u0420\u0455\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0454\u0420\u00b0 \u0421\u0403\u0420\u00b5\u0421\u201a\u0420\u0454\u0420\u0451 \u0420\u0491\u0420\u00bb\u0421\u040f \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u0405\u0420\u0455\u0420\u2116 \u0420\u0457\u0420\u00bb\u0420\u0455\u0421\u0403\u0420\u0454\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451.\r\n\r\n:param imagesize: \u0421\u0402\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0421\u2039 \u0420\u0451\u0420\u00b7\u0420\u0455\u0420\u00b1\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_add\\_\\_(self, other):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a ScalarField, \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f\r\n\r\n\u0421\u0403\u0421\u0453\u0420\u0458\u0420\u0458\u0420\u0455\u0420\u2116 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u2116 self \u0420\u0451 other. \u0420\u00a0\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0421\u2039\u0421\u2026\r\n\r\n\u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u2116 \u0420\u0491\u0420\u0455\u0420\u00bb\u0420\u00b6\u0420\u0405\u0421\u2039 \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u0457\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u201a\u0421\u040a\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> p = ScalarField(x - y\\*\\*2)\r\n\r\n\\>>> s + p\r\n\r\nx\\*\\*2 + x\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_mul\\_\\_(self, other):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a ScalarField, \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u040f\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u0455\u0420\u0451\u0420\u00b7\u0420\u0406\u0420\u0491\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5\u0420\u0458 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u0451 self \u0420\u0451 other. other \u0420\u0457\u0421\u0402\u0420\u0451 \u0420\u0457\u0420\u0455\u0420\u0458\u0420\u00b5\u0421\u2030\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u0451\r\n\r\n\u0420\u0406 sympify() \u0420\u0455\u0420\u00b1\u0421\u040f\u0420\u00b7\u0420\u00b0\u0420\u0405 \u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0421\u201a\u0421\u040a \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a \u0420\u0454\u0420\u00bb\u0420\u00b0\u0421\u0403\u0421\u0403\u0420\u00b0 Expr\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x + y)\r\n\r\n\\>>> s \\* 2\r\n\r\n2\\*x + 2\\*y\r\n\r\n\\>>> s \\* x\r\n\r\nx\\*(x + y)\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_eq\\_\\_(self, other):\r\n\r\nScalarField \u0421\u0402\u0420\u00b0\u0420\u0406\u0420\u00b5\u0420\u0405 \u0420\u0491\u0421\u0402\u0421\u0453\u0420\u0456\u0420\u0455\u0420\u0458\u0421\u0453 ScalarField \u0421\u201a\u0420\u0455\u0420\u0456\u0420\u0491\u0420\u00b0\r\n\r\n\u0420\u0454\u0420\u0455\u0420\u0456\u0420\u0491\u0420\u00b0, \u0420\u0454\u0420\u0455\u0420\u0456\u0420\u0491\u0420\u00b0 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040f \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u0406\u0420\u0455\u0420\u0456\u0420\u0455 ScalarField\r\n\r\n\u0421\u0402\u0420\u00b0\u0420\u0406\u0420\u0405\u0420\u00b0 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u0451 \u0420\u0406\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 ScalarField\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> i = ScalarField(y\\*\\*2 + x\\*\\*2)\r\n\r\n\\>>> s == i\r\n\r\nTrue\r\n\r\n\\>>> p = ScalarField(x + y)\r\n\r\n\\>>> s == p\r\n\r\nFalse\r\n\r\n\r\n\r\nvecfield.ScalarField.\\_\\_len\\_\\_(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0491\u0420\u00bb\u0420\u0451\u0420\u0405\u0421\u0453 \u0421\u0402\u0420\u00b0\u0420\u00b7\u0420\u0458\u0420\u00b5\u0421\u0402\u0420\u0405\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0451 \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> len(s)\r\n\r\n2\r\n\r\n\r\n\r\nvecfield.ScalarField.subs(self, \\*values):\r\n\r\n\u0420\u045f\u0420\u0455\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0421\u201a \u0420\u0406 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0421\u040b \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> s.subs(2, 2)\r\n\r\n8\r\n\r\n:param values: \u0420\u0406\u0421\u2039\u0421\u0402\u0420\u00b0\u0420\u00b6\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040f, \u0420\u0457\u0420\u0455\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0421\u040f\u0420\u00b5\u0420\u0458\u0421\u2039\u0420\u00b5 \u0420\u0406 \u0420\u0454\u0420\u0455\u0420\u0458\u0420\u0457\u0420\u0455\u0420\u0405\u0420\u00b5\u0420\u0405\u0421\u201a\u0421\u2039 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f \u0420\u0406\u0420\u0458\u0420\u00b5\u0421\u0403\u0421\u201a\u0420\u0455 \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a. \u0420\u0459\u0420\u00b0\u0420\u00b6\u0420\u0491\u0420\u00b0\u0421\u040f \u0420\u0454\u0420\u0455\u0420\u0455\u0421\u0402\u0420\u0491\u0420\u0451\u0420\u0405\u0420\u00b0\u0421\u201a\u0420\u00b0 \u0420\u0451\u0420\u00b7 self.dim \u0420\u00b1\u0421\u0453\u0420\u0491\u0420\u00b5\u0421\u201a \u0420\u00b7\u0420\u00b0\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u00b5\u0420\u0405\u0420\u00b0 \u0420\u0405\u0420\u00b0 \u0421\u0403\u0420\u0455\u0420\u0455\u0421\u201a\u0420\u0406\u0420\u00b5\u0421\u201a\u0421\u0403\u0421\u201a\u0420\u0406\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u00b5 \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0406 values, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0458\u0420\u00b5 \u0420\u0458\u0420\u0455\u0420\u00b6\u0420\u00b5\u0421\u201a \u0420\u00b1\u0421\u2039\u0421\u201a\u0421\u040a \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0455 \u0420\u0454\u0420\u00b0\u0420\u0454 \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458, \u0421\u201a\u0420\u00b0\u0420\u0454 \u0420\u0451 \u0421\u0403\u0420\u00bb\u0420\u0455\u0420\u0406\u0420\u00b0\u0421\u0402\u0421\u2018\u0420\u0458.\r\n\r\n\r\n\r\nvecfield.ScalarField.work(self, curve, bounds, numerical=False):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u00bb\u0420\u0451\u0420\u0405\u0420\u00b5\u0420\u2116\u0420\u0405\u0421\u2039\u0420\u2116 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u00bb \u0420\u0406\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0455\u0420\u0456\u0420\u0455 \u0421\u0402\u0420\u0455\u0420\u0491\u0420\u00b0 \u0420\u0406\u0420\u0491\u0420\u0455\u0420\u00bb\u0421\u040a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116.\r\n\r\n\u0420\u201d\u0421\u0402\u0421\u0453\u0420\u0456\u0420\u0451\u0420\u0458\u0420\u0451 \u0421\u0403\u0420\u00bb\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0458\u0420\u0451, \u0420\u0406\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0402\u0420\u00b0\u0420\u00b1\u0420\u0455\u0421\u201a\u0421\u0453, \u0420\u0454\u0420\u0455\u0421\u201a\u0420\u0455\u0421\u0402\u0421\u0453\u0421\u040b \u0421\u0403\u0420\u0455\u0420\u0406\u0420\u00b5\u0421\u0402\u0421\u20ac\u0420\u00b0\u0420\u00b5\u0421\u201a \u0421\u0403\u0420\u0451\u0420\u00bb\u0420\u00b0,\r\n\r\n\u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0421\u0403\u0421\u201a\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402\u0420\u0405\u0421\u2039\u0420\u0458 \u0420\u0457\u0420\u0455\u0420\u00bb\u0420\u00b5\u0420\u0458, \u0420\u0457\u0421\u0402\u0420\u0451 \u0420\u0457\u0421\u0402\u0420\u0455\u0421\u2026\u0420\u0455\u0420\u00b6\u0420\u0491\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u0451 \u0420\u045a\u0420\u045e \u0420\u0406\u0420\u0491\u0420\u0455\u0420\u00bb\u0421\u040a \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116.\r\n\r\n\\>>> x, y, t = sympy.symbols(\"x y t\")\r\n\r\n\\>>> v = ScalarField(x+y)\r\n\r\n\\>>> v.work((t, 0), (t, 0, 2))\r\n\r\n2\r\n\r\n:param curve: \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u00b0\u0421\u040f, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0420\u0405\u0420\u0405\u0420\u00b0\u0421\u040f \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0451. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u00b7 \u0421\u201e\u0421\u0453\u0420\u0405\u0420\u0454\u0421\u2020\u0420\u0451\u0420\u2116 \u0420\u0455\u0421\u201a \u0420\u0457\u0420\u00b0\u0421\u0402\u0420\u00b0\u0420\u0458\u0420\u00b5\u0421\u201a\u0421\u0402\u0420\u00b0 - \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr.\r\n\r\n:param bounds: \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u2020\u0421\u2039 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f \u0420\u0457\u0420\u0455 \u0420\u0454\u0421\u0402\u0420\u0451\u0420\u0406\u0420\u0455\u0420\u2116. \u0420\u2014\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u2018\u0421\u201a\u0421\u0403\u0421\u040f \u0420\u0454\u0420\u0455\u0421\u0402\u0421\u201a\u0420\u00b5\u0420\u00b6\u0420\u0455\u0420\u0458 \u0420\u0451\u0420\u00b7 \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0458\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u2116 \u0420\u0451 \u0420\u0457\u0421\u0402\u0420\u00b5\u0420\u0491\u0420\u00b5\u0420\u00bb\u0420\u0455\u0420\u0406 \u0420\u0451\u0420\u0405\u0421\u201a\u0420\u00b5\u0420\u0456\u0421\u0402\u0420\u0451\u0421\u0402\u0420\u0455\u0420\u0406\u0420\u00b0\u0420\u0405\u0420\u0451\u0421\u040f\r\n\r\n:param numerical: \u0421\u2021\u0420\u0451\u0421\u0403\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0405\u0420\u0455\u0420\u00b5 \u0421\u0402\u0420\u00b5\u0421\u20ac\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0451\u0420\u00bb\u0420\u0451 \u0420\u00b0\u0420\u0405\u0420\u00b0\u0420\u00bb\u0420\u0451\u0421\u201a\u0420\u0451\u0421\u2021\u0420\u00b5\u0421\u0403\u0420\u0454\u0420\u0455\u0420\u00b5\r\n\r\n\r\n\r\nvecfield.ScalarField.grad(self):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a VectorField, \u0421\u040f\u0420\u0406\u0420\u00bb\u0421\u040f\u0421\u040b\u0421\u2030\u0420\u0451\u0420\u2116\u0421\u0403\u0421\u040f \u0420\u0456\u0421\u0402\u0420\u00b0\u0420\u0491\u0420\u0451\u0420\u00b5\u0420\u0405\u0421\u201a\u0420\u0455\u0420\u0458\r\n\r\n\u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2/2 + y\\*\\*2/2)\r\n\r\n\\>>> s.grad()\r\n\r\n(x, y)\r\n\r\n\r\n\r\nvecfield.ScalarField.ordiff(self, \\*vector):\r\n\r\n\u0420\u2019\u0420\u0455\u0420\u00b7\u0420\u0406\u0421\u0402\u0420\u00b0\u0421\u2030\u0420\u00b0\u0420\u00b5\u0421\u201a \u0420\u00b7\u0420\u0405\u0420\u00b0\u0421\u2021\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u0451\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0405\u0420\u0455\u0420\u2116 \u0420\u0457\u0420\u0455 \u0420\u0405\u0420\u00b0\u0420\u0457\u0421\u0402\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0451\u0421\u040b \u0420\u0406\r\n\r\n\u0420\u0454\u0420\u00b0\u0420\u00b6\u0420\u0491\u0420\u0455\u0420\u2116 \u0421\u201a\u0420\u0455\u0421\u2021\u0420\u0454\u0420\u00b5 \u0421\u0403\u0420\u0454\u0420\u00b0\u0420\u00bb\u0421\u040f\u0421\u0402\u0420\u0405\u0420\u0455\u0420\u0456\u0420\u0455 \u0420\u0457\u0420\u0455\u0420\u00bb\u0421\u040f\r\n\r\n\\>>> x, y = sympy.symbols(\"x y\")\r\n\r\n\\>>> s = ScalarField(x\\*\\*2 + y\\*\\*2)\r\n\r\n\\>>> s.ordiff(3, 4)\r\n\r\n1. 2\\*x + 1.6\\*y\r\n\r\n:param vector: \u0420\u0406\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0421\u0402, \u0420\u00b7\u0420\u00b0\u0420\u0491\u0420\u00b0\u0421\u040b\u0421\u2030\u0420\u0451\u0420\u2116 \u0420\u0405\u0420\u00b0\u0420\u0457\u0421\u0402\u0420\u00b0\u0420\u0406\u0420\u00bb\u0420\u00b5\u0420\u0405\u0420\u0451\u0420\u00b5 \u0420\u0457\u0421\u0402\u0420\u0455\u0420\u0451\u0420\u00b7\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0405\u0420\u0455\u0420\u2116, \u0421\u0403\u0420\u0455\u0421\u0403\u0421\u201a\u0420\u0455\u0421\u040f\u0421\u2030\u0420\u0451\u0420\u2116 \u0420\u0451\u0420\u00b7 \u0420\u0455\u0420\u00b1\u0421\u0409\u0420\u00b5\u0420\u0454\u0421\u201a\u0420\u0455\u0420\u0406, \u0420\u0457\u0420\u00b5\u0421\u0402\u0420\u00b5\u0420\u0406\u0420\u0455\u0420\u0491\u0420\u0451\u0420\u0458\u0421\u2039\u0421\u2026 \u0420\u0406 sympy.Expr.\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Module for working with vector and scalar fields",
"version": "1.0.3",
"project_urls": {
"Documentation": "https://github.com/SorbetKipit/jubilant-barnacle/blob/main/README.md",
"Homepage": "https://github.com/SorbetKipit/jubilant-barnacle/tree/main"
},
"split_keywords": [
"python",
"vectorifeld",
"scalarfield"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "87a4fcbe9f41b2f3fdadac670f3d60b49c330a7a1f760e4ced1f87794afe0acf",
"md5": "341d4a5b6dd9ed9cc4cab27ac3fc409b",
"sha256": "bcbd1774d33e21f831bd18a778c0787b96ca82af09f56e34daa59cc53712298b"
},
"downloads": -1,
"filename": "vecfield-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "341d4a5b6dd9ed9cc4cab27ac3fc409b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 14653,
"upload_time": "2024-05-12T00:43:04",
"upload_time_iso_8601": "2024-05-12T00:43:04.022176Z",
"url": "https://files.pythonhosted.org/packages/87/a4/fcbe9f41b2f3fdadac670f3d60b49c330a7a1f760e4ced1f87794afe0acf/vecfield-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1b335360b5f116d1c7d16cd92a562752cd2d3203e126035f0c3d030ea811a591",
"md5": "52c7b4922142ed7405a9bb077d0b6690",
"sha256": "8283d0d5e535181dd1a2f5d8fdbb581177d6fb94b2675ea0dd23c30ac3daf692"
},
"downloads": -1,
"filename": "vecfield-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "52c7b4922142ed7405a9bb077d0b6690",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 20610,
"upload_time": "2024-05-12T00:43:05",
"upload_time_iso_8601": "2024-05-12T00:43:05.663592Z",
"url": "https://files.pythonhosted.org/packages/1b/33/5360b5f116d1c7d16cd92a562752cd2d3203e126035f0c3d030ea811a591/vecfield-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-12 00:43:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SorbetKipit",
"github_project": "jubilant-barnacle",
"github_not_found": true,
"lcname": "vecfield"
}