Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
calc:vector [2021/02/18 09:34] root |
calc:vector [2022/08/10 23:55] (текущий) root |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
<div slide> | <div slide> | ||
- | ====== Основные операции линейной алгебры в numpy ====== | ||
- | |||
- | ==== Операции над векторами ==== | ||
- | |||
- | Положим что одномерные массивы '' | ||
- | |||
- | <sxh python> | ||
- | import numpy as np | ||
- | |||
- | a = np.array([1, | ||
- | b = np.array([2, | ||
- | </ | ||
- | |||
- | ^ Операция ^ Запись ^ Результат ^ | ||
- | | Длина вектора | '' | ||
- | | Произведение вектора на скаляр | '' | ||
- | | Сумма векторов | '' | ||
- | | Скалярное произведение | '' | ||
- | | Векторное произведение | '' | ||
- | |||
- | </ | ||
- | |||
- | ==== Операции над матрицами ==== | ||
- | |||
- | Положим, | ||
- | |||
- | <sxh python> | ||
- | import numpy as np | ||
- | |||
- | a = np.array([1, | ||
- | M = np.array([[1, | ||
- | </ | ||
- | |||
- | </ | ||
- | |||
- | ^ Операция ^ Запись ^ Результат ^ | ||
- | | Определитель | '' | ||
- | | След | '' | ||
- | | Форма | '' | ||
- | | Векторно-матричное умножение | '' | ||
- | | Матричное умножение | '' | ||
- | | Обратная матрица | '' | ||
- | | Собственные числа и собственные векторы | '' | ||
- | | Транспонирование | '' | ||
- | | Нулевая матрица | '' | ||
- | | Единичная матрица | '' | ||
- | |||
- | </ | ||
- | |||
- | ==== Вращение координат ==== | ||
- | |||
- | Вращение координат удобно задавать в виде матрицы поворота с помощью модуля '' | ||
- | |||
- | <sxh python> | ||
- | from scipy.spatial.transform import Rotation | ||
- | |||
- | # | ||
- | MRot = Rotation.from_euler(' | ||
- | #Для новых версий: | ||
- | MRot = Rotation.from_euler(' | ||
- | |||
- | a = np.array([1, | ||
- | |||
- | rot_a = np.matmul(a, | ||
- | |||
- | </ | ||
- | |||
- | </ | ||
===== Функция на сетке ===== | ===== Функция на сетке ===== | ||
- | Важная особенность '' | + | Важная особенность '' |
<sxh python> | <sxh python> | ||
Строка 82: | Строка 14: | ||
p = np.linspace(5, | p = np.linspace(5, | ||
- | v = f (s,p) | + | v = f (s,p) # Функция f была применена поэлементно |
# v == array([ | # v == array([ | ||
S, P = np.meshgrid(s, | S, P = np.meshgrid(s, | ||
- | v = f (S,P) | + | v = f (S,P) # Функция f была применена для каждой пары из s и p |
# array([[ 33., 45., 57.], | # array([[ 33., 45., 57.], | ||
# [ 54., 66., 78.], | # [ 54., 66., 78.], | ||
Строка 117: | Строка 49: | ||
Объект '' | Объект '' | ||
- | '' | + | '' |
</ | </ | ||
Строка 132: | Строка 64: | ||
</ | </ | ||
+ | ==== В 2D задаче | ||
+ | |||
+ | <sxh python> | ||
+ | import numpy as np | ||
+ | from findiff import Gradient, Divergence, Laplacian | ||
+ | import matplotlib.pyplot as plt | ||
+ | |||
+ | #%% | ||
+ | |||
+ | borders = [-2*np.pi, 2*np.pi, -2*np.pi, 2*np.pi] | ||
+ | |||
+ | x = np.linspace(-2*np.pi, | ||
+ | dx = x[1]-x[0] | ||
+ | y = np.linspace(-2*np.pi, | ||
+ | dy = y[1]-y[0] | ||
+ | |||
+ | X, Y = np.meshgrid(x, | ||
+ | f = Y*np.sin(X) + np.cos(Y) | ||
+ | |||
+ | #%% | ||
+ | |||
+ | plt.imshow(f.T, | ||
+ | contours = plt.contour(X, | ||
+ | plt.clabel(contours, | ||
+ | plt.show() | ||
+ | |||
+ | #%% | ||
+ | grad = Gradient(h=[dx, | ||
+ | grad_f = grad(f) | ||
+ | |||
+ | plt.imshow(f.T , origin=' | ||
+ | plt.colorbar() | ||
+ | plt.quiver(X, | ||
+ | plt.show() | ||
+ | |||
+ | #%% | ||
+ | |||
+ | u = np.array((X**2-Y**2, | ||
+ | |||
+ | div = Divergence(h=[dx, | ||
+ | div_u = div(u) | ||
+ | |||
+ | plt.imshow(div_u.T, | ||
+ | plt.colorbar() | ||
+ | plt.quiver(X, | ||
+ | plt.show() | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Скалярная функция f и ее изолинии == | ||
+ | |||
+ | {{: | ||
+ | |||
+ | == Скалярная функция f и ее градиент == | ||
+ | |||
+ | {{: | ||
+ | |||
+ | == Векторная функция u и ее дивергенция == | ||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== В 3D задаче | ||
<sxh python> | <sxh python> | ||
import numpy as np | import numpy as np |