Наиболее базисное c линейное уравнение алгебры в python - PullRequest
0 голосов
/ 08 февраля 2020

Допустим, у меня есть следующая система уравнений:

x  + y = 3
5x - y = 3

Здесь x=1 и y=2. Используя scipy или какой-либо другой решатель линейной алгебры, какой самый базовый способ сделать это? Например, что-то вроде:

A = np.array([1,1],[5,-1])
A'inverse = [3,3] # how to do this?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Из предложения использовать np.linalg от aminrd:

import numpy as np
A = np.array(([1,1],[5,-1]))    # initialize 2x2 matrix
B = np.array([3,3])             # initialize the (x,y) column vector 
A_inv = np.linalg.inv(A)        # get A'
np.matmul(A_inv,B)              # Ax = B --> x = A'B
# array([1., 2.])

Здесь мы можем видеть ответ X=1, Y=2, что мы и ожидали.

0 голосов
/ 08 февраля 2020

Вы можете использовать линейную часть алгебры Numpy:

import numpy as np

A = np.array(([1,1],[5,-1]))

# Calculating inverse of A 
B = np.linalg.inv(A)
# array([[ 0.16666667,  0.16666667],
#       [ 0.83333333, -0.16666667]])

# Calculating matrix multiplication of B and A: Expecting Identical Matrix
np.matmul(B,A)
# Very close to 0 and 1
# array([[ 1.00000000e+00,  2.77555756e-17],
#       [-5.55111512e-17,  1.00000000e+00]])

# Converting to integer
np.int32( np.matmul(B,A) ) 
# array([[1, 0],
#       [0, 1]], dtype=int32)

...