Симпи решить линейную систему уравнений - PullRequest
0 голосов
/ 27 марта 2020

Я создал линейную систему уравнений для a для l oop с использованием символов sympy и сохранил все уравнения в массиве numpy. В настоящий момент я использую sympy.linear_eq_to_matrix, чтобы «преобразовать» уравнения в матрицу и затем решить. Но этот процесс с использованием sympy.linear_eq_to_matrix занимает много времени, когда у меня много переменных. Итак, чтобы избежать sympy.linear_eq_to_matrix, что является лучшей альтернативой? Могу ли я решить систему без прохода через sympy.linear_eq_to_matrix? Я просто пишу простой сценарий.

## I've imported all libs.
comp = 5
h = 0.1
nodes = int(((comp/h)+3))
a = np.array(sp.symbols("w0:"+str(nodes**2)))
w = np.reshape(a, (nodes,nodes))
equations = np.array([])

## In this interval I've some for loop to apply boundary conditions.

for i in range(2, (nodes-2)):
 for j in range(2, (nodes-2)):
  eq = Eq(5*(w[i,j]) + w[i,j-2]), 0.1) ## This equation is more complex, I reduced.
  equations = np.append(equations, eq)

hg = np.array([]) ## hg = just some variables to solve.
for i in range(2, (nodes-2)):
 for j in range(2, (nodes-2)):
  hg = np.append(hg, w[i,j])

system, equality =sp.linear_eq_to_matrix(equations, hg) ## THE PROBLEMATIC PART
system_array = np.array(system).astype(np.float64)
system_equality = np.array(equality).astype(np.float64)

ans = np.linalg.solve(system_array, system_equality)
print("\nAnswer")
print(ans)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...