Модули и функции · встроенный MicroPython FEMM 5
numpy.linalg
Средства линейной алгебры встроенного численного ядра FEMM предназначены для работы с вещественными и комплексными матрицами.
Условия работы
- Вещественные входы могут быть вложенными списками или ndarray. Комплексные матрицы и правые части предварительно создавайте через np.array(...). Используйте небольшие согласованные матрицы и контролируйте невязку.
- Результаты зависят от обусловленности задачи. Успешный вызов не заменяет проверку единиц и физической модели.
- Вектор правой части задавайте одномерным массивом. Дополнительные параметры ord, axis, full_matrices, hermitian в этих обёртках не объявлены.
numpy.linalg.solvenumpy.linalg.invnumpy.linalg.detnumpy.linalg.eignumpy.linalg.eigvalsnumpy.linalg.qrnumpy.linalg.svdnumpy.linalg.pinvnumpy.linalg.condnumpy.linalg.normnumpy.linalg.matrix_ranknumpy.linalg.ranknumpy.linalg.lstsqnumpy.linalg.choleskynumpy.linalg.solveРешает A x = b.
numpy.linalg.solve
numpy.linalg.solve(a, b)Решает A x = b.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Невырожденная квадратная матрица n×n. |
b | Вектор длины n либо матрица правых частей формы (n,nrhs). |
Возвращаемое значение
ndarray решения формы (n,) для вектора b или (n,nrhs) для матрицы b; тип вещественный, если оба входа вещественные.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.solve.\nСреда: встроенный MicroPython FEMM 5.\nРешает A x = b.\nРезультат: ndarray решения формы (n,) для вектора b или (n,nrhs) для матрицы b; тип вещественный, если оба входа вещественные."
import numpy as np
A=np.array([[2,1],[1,3]])
b=np.array([5,7])
x=np.linalg.solve(A,b)
r=np.dot(A,x)-b
assert max([abs(v) for v in r])<1e-8
print(x)
Ожидаемый результат. Решение [1.6,1.8], невязка меньше 10 × 10⁻⁹.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.invВычисляет обратную матрицу. Для одной правой части обычно удобнее solve.
numpy.linalg.inv
numpy.linalg.inv(a)Вычисляет обратную матрицу. Для одной правой части обычно удобнее solve.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Невырожденная квадратная матрица n×n. |
Возвращаемое значение
Обратная матрица ndarray n×n.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.inv.\nСреда: встроенный MicroPython FEMM 5.\nВычисляет обратную матрицу. Для одной правой части обычно удобнее solve.\nРезультат: Обратная матрица ndarray n×n."
import numpy as np
A=np.array([[2,0],[0,4]])
B=np.linalg.inv(A)
assert abs(B[0,0]-0.5)<1e-10 and abs(B[1,1]-0.25)<1e-10
print(B)
Ожидаемый результат. Диагональная матрица diag(0.5,0.25).
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.detВычисляет определитель матрицы.
numpy.linalg.det
numpy.linalg.det(a)Вычисляет определитель матрицы.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Квадратная матрица n×n. |
Возвращаемое значение
float для вещественной матрицы, complex для комплексной.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.det.\nСреда: встроенный MicroPython FEMM 5.\nВычисляет определитель матрицы.\nРезультат: float для вещественной матрицы, complex для комплексной."
import numpy as np
v=np.linalg.det(np.array([[2,1],[1,3]]))
assert abs(v-5)<1e-9
print(v)
Ожидаемый результат. Определитель близок к 5.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.eigВычисляет собственные значения и правые собственные векторы общего квадратного оператора.
numpy.linalg.eig
numpy.linalg.eig(a)Вычисляет собственные значения и правые собственные векторы общего квадратного оператора.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Квадратная вещественная либо комплексная матрица n×n. |
Возвращаемое значение
Кортеж (w,V): w — complex ndarray собственных значений; столбец V[:,k] — собственный вектор w[k].
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.eig.\nСреда: встроенный MicroPython FEMM 5.\nВычисляет собственные значения и правые собственные векторы общего квадратного оператора.\nРезультат: Кортеж (w,V): w — complex ndarray собственных значений; столбец V[:,k] — собственный вектор w[k]."
import numpy as np
A=np.array([[0,-1],[1,0]])
w,V=np.linalg.eig(A)
assert len(w)==2
for k in range(2):
v=np.array([V[0,k],V[1,k]])
r=np.dot(A,v)-v*w[k]
assert max([abs(t) for t in r])<1e-7
print(w)
Ожидаемый результат. Два собственных значения +j и -j; невязки собственных векторов меньше 100 × 10⁻⁹.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.eigvalsВозвращает только собственные значения, вызывая то же ядро, что eig.
numpy.linalg.eigvals
numpy.linalg.eigvals(a)Возвращает только собственные значения, вызывая то же ядро, что eig.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Квадратная вещественная либо комплексная матрица n×n. |
Возвращаемое значение
Одномерный complex ndarray собственных значений.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.eigvals.\nСреда: встроенный MicroPython FEMM 5.\nВозвращает только собственные значения, вызывая то же ядро, что eig.\nРезультат: Одномерный complex ndarray собственных значений."
import numpy as np
w=np.linalg.eigvals(np.array([[0,-1],[1,0]]))
assert abs(w[0]*w[0]+1)<1e-7 and abs(w[1]*w[1]+1)<1e-7
print(w)
Ожидаемый результат. Собственные значения +j и -j в произвольном порядке.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.qrВыполняет QR-разложение. У комплексной матрицы ортогональность понимается с сопряжением.
numpy.linalg.qr
numpy.linalg.qr(a)Выполняет QR-разложение. У комплексной матрицы ортогональность понимается с сопряжением.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Матрица с линейно независимыми столбцами. |
Возвращаемое значение
Кортеж (Q,R). Вещественный вход m×n при m≥n: Q m×n, R n×n. Комплексный вход: полное разложение Q m×m, R m×n.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
- Форма результата зависит от типа входа. Для вещественного пути используйте m≥n; дополнительный аргумент mode у обёртки FEMM отсутствует.
Пример
"Пример numpy.linalg.qr.\nСреда: встроенный MicroPython FEMM 5.\nВыполняет QR-разложение. У комплексной матрицы ортогональность понимается с сопряжением.\nРезультат: Кортеж (Q,R). Вещественный вход m×n при m≥n: Q m×n, R n×n. Комплексный вход: полное разложение Q m×m, R m×n."
import numpy as np
A=np.array([[2,1],[0,3]])
Q,R=np.linalg.qr(A)
D=np.dot(Q,R)-A
assert max([abs(D[i,j]) for i in range(2) for j in range(2)])<1e-7
print(Q,R)
Ожидаемый результат. Произведение Q·R восстанавливает A с ошибкой менее 100 × 10⁻⁹.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.svdВычисляет сингулярное разложение A=U diag(s) Vh.
numpy.linalg.svd
numpy.linalg.svd(a)Вычисляет сингулярное разложение A=U diag(s) Vh.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Вещественная или комплексная матрица. |
Возвращаемое значение
Кортеж (U,s,Vh) сокращённого разложения: для A формы (m,n) и k=min(m,n) формы равны (m,k), (k,), (k,n). s вещественный и неотрицательный.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
- Сингулярные числа расположены по невозрастанию. Vh содержит сопряжённые строки правых сингулярных векторов.
Пример
"Пример numpy.linalg.svd.\nСреда: встроенный MicroPython FEMM 5.\nВычисляет сингулярное разложение A=U diag(s) Vh.\nРезультат: Кортеж (U,s,Vh) сокращённого разложения: для A формы (m,n) и k=min(m,n) формы равны (m,k), (k,), (k,n). s вещественный и неотрицательный."
import numpy as np
U,s,Vh=np.linalg.svd(np.array([[3,0],[0,2]]))
assert abs(s[0]-3)<1e-7 and abs(s[1]-2)<1e-7
print(s)
Ожидаемый результат. Сингулярные числа [3,2].
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.pinvВычисляет псевдообратную матрицу через встроенное комплексное ядро.
numpy.linalg.pinv
numpy.linalg.pinv(a)Вычисляет псевдообратную матрицу через встроенное комплексное ядро.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Матрица, в том числе прямоугольная или вырожденная. |
Возвращаемое значение
Псевдообратный ndarray формы (n,m) для исходной матрицы (m,n).
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
- Порог отсечения сингулярных чисел: max(m,n)222 × 10⁻¹⁸s_max. Пользовательский tol/rcond не объявлен.
Пример
"Пример numpy.linalg.pinv.\nСреда: встроенный MicroPython FEMM 5.\nВычисляет псевдообратную матрицу через встроенное комплексное ядро.\nРезультат: Псевдообратный ndarray формы (n,m) для исходной матрицы (m,n)."
import numpy as np
A=np.array([[2,0],[0,0]])
P=np.linalg.pinv(A)
assert abs(P[0,0]-0.5)<1e-7 and abs(P[1,1])<1e-7
print(P)
Ожидаемый результат. Псевдообратная матрица diag(0.5,0).
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.condВозвращает отношение наибольшего сингулярного числа к наименьшему. При нулевом минимальном сингулярном числе возвращается inf.
numpy.linalg.cond
numpy.linalg.cond(a)Возвращает отношение наибольшего сингулярного числа к наименьшему. При нулевом минимальном сингулярном числе возвращается inf.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Матрица, для которой оценивается устойчивость решения. |
Возвращаемое значение
Вещественное число обусловленности.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.cond.\nСреда: встроенный MicroPython FEMM 5.\nВозвращает отношение наибольшего сингулярного числа к наименьшему. При нулевом минимальном сингулярном числе возвращается inf.\nРезультат: Вещественное число обусловленности."
import numpy as np
c=np.linalg.cond(np.array([[2,0],[0,1]]))
assert abs(c-2)<1e-7
print(c)
Ожидаемый результат. Число обусловленности близко к 2.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.normВозвращает sqrt(sum(abs(a[k])**2)) по всем элементам. Для вектора это евклидова норма, для матрицы — норма Фробениуса.
numpy.linalg.norm
numpy.linalg.norm(a)Возвращает sqrt(sum(abs(a[k])**2)) по всем элементам. Для вектора это евклидова норма, для матрицы — норма Фробениуса.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Вещественный или комплексный массив. |
Возвращаемое значение
Неотрицательный float.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
Пример
"Пример numpy.linalg.norm.\nСреда: встроенный MicroPython FEMM 5.\nВозвращает sqrt(sum(abs(a[k])**2)) по всем элементам. Для вектора это евклидова норма, для матрицы — норма Фробениуса.\nРезультат: Неотрицательный float."
import numpy as np
n=np.linalg.norm(np.array([3+0j,4+0j]))
assert abs(n-5)<1e-7
print(n)
Ожидаемый результат. Евклидова норма равна 5.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.matrix_rankОпределяет численный ранг по внутреннему порогу ядра FEMM.
numpy.linalg.matrix_rank
numpy.linalg.matrix_rank(a)Определяет численный ранг по внутреннему порогу ядра FEMM.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Исследуемая матрица. |
Возвращаемое значение
int — численный ранг.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
- Порог отсечения сингулярных чисел: max(m,n)222 × 10⁻¹⁸s_max. Пользовательский tol/rcond не объявлен.
Пример
"Пример numpy.linalg.matrix_rank.\nСреда: встроенный MicroPython FEMM 5.\nОпределяет численный ранг по внутреннему порогу ядра FEMM.\nРезультат: int — численный ранг."
import numpy as np
r=np.linalg.matrix_rank(np.array([[1,2],[2,4]]))
assert r==1
print(r)
Ожидаемый результат. Ранг равен 1.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.rankКороткий псевдоним matrix_rank, сохранённый встроенной средой FEMM.
numpy.linalg.rank
numpy.linalg.rank(a)Короткий псевдоним matrix_rank, сохранённый встроенной средой FEMM.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Исследуемая матрица. |
Возвращаемое значение
int — численный ранг.
Особенности вызова
- Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
- Порог отсечения сингулярных чисел: max(m,n)222 × 10⁻¹⁸s_max. Пользовательский tol/rcond не объявлен.
Пример
"Пример numpy.linalg.rank.\nСреда: встроенный MicroPython FEMM 5.\nКороткий псевдоним matrix_rank, сохранённый встроенной средой FEMM.\nРезультат: int — численный ранг."
import numpy as np
r=np.linalg.rank(np.array([[1,2],[2,4]]))
assert r==1
print(r)
Ожидаемый результат. Ранг равен 1.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.lstsqРешает задачу наименьших квадратов как pinv(A)·b. residuals содержит один элемент только при m>n и полном столбцовом ранге; в остальных случаях массив пуст.
numpy.linalg.lstsq
numpy.linalg.lstsq(a, b, rcond=None)Решает задачу наименьших квадратов как pinv(A)·b. residuals содержит один элемент только при m>n и полном столбцовом ранге; в остальных случаях массив пуст.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Матрица m×n. |
b | Одномерный вектор длины m. |
rcond | Поддерживается только None; иное значение вызывает NotImplementedError. |
Возвращаемое значение
Кортеж (x,residuals,rank,s): решение, массив суммы квадратов невязок, численный ранг и сингулярные числа.
Особенности вызова
- Обёртка строит комплексные внутренние массивы, поэтому x может иметь complex dtype даже для вещественных исходных данных.
Пример
"Пример numpy.linalg.lstsq.\nСреда: встроенный MicroPython FEMM 5.\nРешает задачу наименьших квадратов как pinv(A)·b. residuals содержит один элемент только при m>n и полном столбцовом ранге; в остальных случаях массив пуст.\nРезультат: Кортеж (x,residuals,rank,s): решение, массив суммы квадратов невязок, численный ранг и сингулярные числа."
import numpy as np
A=np.array([[1],[1],[1]])
b=np.array([1,2,3])
x,res,r,s=np.linalg.lstsq(A,b)
assert abs(x[0]-2)<1e-7 and r==1
assert len(res)==1 and abs(res[0]-2)<1e-7
print(x,res,r,s)
Ожидаемый результат. x=[2], residuals=[2], rank=1.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.
numpy.linalg.choleskyРазлагает A=L·L.T. Положительная определённость проверяется численным алгоритмом.
numpy.linalg.cholesky
numpy.linalg.cholesky(a)Разлагает A=L·L.T. Положительная определённость проверяется численным алгоритмом.
Аргументы
| Имя | Назначение и допустимые значения |
|---|---|
a | Вещественная симметричная положительно определённая матрица n×n. |
Возвращаемое значение
Вещественный ndarray L — нижний треугольный множитель n×n.
Особенности вызова
- Этот метод непосредственно использует вещественную реализацию ulab; комплексные массивы не поддержаны.
Пример
"Пример numpy.linalg.cholesky.\nСреда: встроенный MicroPython FEMM 5.\nРазлагает A=L·L.T. Положительная определённость проверяется численным алгоритмом.\nРезультат: Вещественный ndarray L — нижний треугольный множитель n×n."
import numpy as np
A=np.array([[4,2],[2,5]])
L=np.linalg.cholesky(A)
R=np.dot(L,L.transpose())-A
assert max([abs(R[i,j]) for i in range(2) for j in range(2)])<1e-8
print(L)
Ожидаемый результат. Множитель [[2,0],[1,2]] восстанавливает исходную матрицу.
Скачать пример · Ссылка на функцию
Этот пример выполнен в установленном FEMM 5.