Python: Решение системы уравнений (коэффициенты - это массивы)

Я могу решить системное уравнение (используя NumPY) следующим образом:

>>> a = np.array([[3,1], [1,2]])
>>> b = np.array([9,8])
>>> y = np.linalg.solve(a, b)
>>> y
array([ 2.,  3.])

Но, если я получил что-то вроде этого:

>>> x = np.linspace(1,10)
>>> a = np.array([[3*x,1-x], [1/x,2]])
>>> b = np.array([x**2,8*x])
>>> y = np.linalg.solve(a, b)

Это не работает, где коэффициенты матрицы являются массивами, и я хочу вычислить решение массива "y" для каждого элемента массива "x". Кроме того, я не могу рассчитать

>>> det(a)

Вопрос в том, как это сделать?

1 ответ

Проверьте страницу документов. Если вы хотите решить несколько систем линейных уравнений, вы можете отправить в нескольких массивах, но они должны иметь форму (N,M,M), Это будет считаться стопкой NMxM массивы. Цитата со страницы документации ниже,

Некоторые из перечисленных выше подпрограмм линейной алгебры способны вычислять результаты для нескольких матриц одновременно, если они объединены в один массив. Это указано в документации через спецификации входных параметров, такие как: (..., M, M) array_like. Это означает, что, например, если задан входной массив a.shape == (N, M, M), он интерпретируется как "стек" из N матриц, каждая из которых имеет размер M-by-M. Аналогичная спецификация применяется к возвращаемым значениям, например, определитель имеет det: (...) и в этом случае будет возвращать массив формы det(a).shape == (N,). Это обобщает операции линейной алгебры над многомерными массивами: последние 1 или 2 измерения многомерного массива интерпретируются как векторы или матрицы, в зависимости от ситуации для каждой операции.

Когда я запускаю твой код, я получаю,

>>> a.shape
(2, 2)

>>> b.shape
(2, 50)

Не знаю точно, какую проблему вы пытаетесь решить, но вам нужно переосмыслить свои данные. Ты хочешь a иметь форму (N,M,M) а также b иметь форму (N,M), Затем вы получите массив формы (N,M) (т.е. N векторы решения).

Другие вопросы по тегам