vecfield


Namevecfield JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/SorbetKipit/jubilant-barnacle/tree/main
SummaryModule for working with vector and scalar fields
upload_time2024-05-12 00:43:05
maintainerNone
docs_urlNone
authorSorbetKipit
requires_python>=3.11
licenseNone
keywords python vectorifeld scalarfield
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Модуль для работы с векторными полями. Разработал в качестве школьного проекта.

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"
}
        
Elapsed time: 0.59035s