FEMM 5

Модули и функции · встроенный MicroPython FEMM 5

numpy.linalg

Средства линейной алгебры встроенного численного ядра FEMM предназначены для работы с вещественными и комплексными матрицами.

Условия работы

numpy.linalg.solveРешает A x = b.

numpy.linalg.solve

numpy.linalg.solve(a, b)

Решает A x = b.

Аргументы

Аргументы вызова numpy.linalg.solve
ИмяНазначение и допустимые значения
aНевырожденная квадратная матрица n×n.
bВектор длины n либо матрица правых частей формы (n,nrhs).

Возвращаемое значение

ndarray решения формы (n,) для вектора b или (n,nrhs) для матрицы b; тип вещественный, если оба входа вещественные.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.inv
ИмяНазначение и допустимые значения
aНевырожденная квадратная матрица n×n.

Возвращаемое значение

Обратная матрица ndarray n×n.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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)

Вычисляет определитель матрицы.

Аргументы

Аргументы вызова numpy.linalg.det
ИмяНазначение и допустимые значения
aКвадратная матрица n×n.

Возвращаемое значение

float для вещественной матрицы, complex для комплексной.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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)

Вычисляет собственные значения и правые собственные векторы общего квадратного оператора.

Аргументы

Аргументы вызова numpy.linalg.eig
ИмяНазначение и допустимые значения
aКвадратная вещественная либо комплексная матрица n×n.

Возвращаемое значение

Кортеж (w,V): w — complex ndarray собственных значений; столбец V[:,k] — собственный вектор w[k].

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.eigvals
ИмяНазначение и допустимые значения
aКвадратная вещественная либо комплексная матрица n×n.

Возвращаемое значение

Одномерный complex ndarray собственных значений.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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-разложение. У комплексной матрицы ортогональность понимается с сопряжением.

Аргументы

Аргументы вызова numpy.linalg.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 отсутствует.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.svd
ИмяНазначение и допустимые значения
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 содержит сопряжённые строки правых сингулярных векторов.

Пример

MicroPython FEMM 5
"Пример 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)

Вычисляет псевдообратную матрицу через встроенное комплексное ядро.

Аргументы

Аргументы вызова numpy.linalg.pinv
ИмяНазначение и допустимые значения
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 не объявлен.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.cond
ИмяНазначение и допустимые значения
aМатрица, для которой оценивается устойчивость решения.

Возвращаемое значение

Вещественное число обусловленности.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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)) по всем элементам. Для вектора это евклидова норма, для матрицы — норма Фробениуса.

Аргументы

Аргументы вызова numpy.linalg.norm
ИмяНазначение и допустимые значения
aВещественный или комплексный массив.

Возвращаемое значение

Неотрицательный float.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.matrix_rank
ИмяНазначение и допустимые значения
aИсследуемая матрица.

Возвращаемое значение

int — численный ранг.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
  • Порог отсечения сингулярных чисел: max(m,n)222 × 10⁻¹⁸s_max. Пользовательский tol/rcond не объявлен.

Пример

MicroPython FEMM 5
"Пример 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.

Аргументы

Аргументы вызова numpy.linalg.rank
ИмяНазначение и допустимые значения
aИсследуемая матрица.

Возвращаемое значение

int — численный ранг.

Особенности вызова

  • Вещественный вход сохраняет вещественный результат у solve/inv/det/qr/svd/pinv; eig/eigvals возвращают complex dtype.
  • Порог отсечения сингулярных чисел: max(m,n)222 × 10⁻¹⁸s_max. Пользовательский tol/rcond не объявлен.

Пример

MicroPython FEMM 5
"Пример 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 и полном столбцовом ранге; в остальных случаях массив пуст.

Аргументы

Аргументы вызова numpy.linalg.lstsq
ИмяНазначение и допустимые значения
aМатрица m×n.
bОдномерный вектор длины m.
rcondПоддерживается только None; иное значение вызывает NotImplementedError.

Возвращаемое значение

Кортеж (x,residuals,rank,s): решение, массив суммы квадратов невязок, численный ранг и сингулярные числа.

Особенности вызова

  • Обёртка строит комплексные внутренние массивы, поэтому x может иметь complex dtype даже для вещественных исходных данных.

Пример

MicroPython FEMM 5
"Пример 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. Положительная определённость проверяется численным алгоритмом.

Аргументы

Аргументы вызова numpy.linalg.cholesky
ИмяНазначение и допустимые значения
aВещественная симметричная положительно определённая матрица n×n.

Возвращаемое значение

Вещественный ndarray L — нижний треугольный множитель n×n.

Особенности вызова

  • Этот метод непосредственно использует вещественную реализацию ulab; комплексные массивы не поддержаны.

Пример

MicroPython FEMM 5
"Пример 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.

Имена в установленной сборке

Перечень получен во встроенном интерпретаторе. Он включает функции, классы и константы. Ссылки ведут к контрактам; для прямого доступа ulab учитывайте условия этого раздела.