Решение Sympy приводит к ошибке, что один элемент неоднозначен - PullRequest
0 голосов
/ 26 апреля 2019

Как следует из названия, sympy solve возвращает ошибку, которую я не знаю, как решить.

Мой код

from sympy.solvers import solve
import numpy as np
z = 10
h = 0.1
r = 10
He = 10

aa = 1+(h*r)
bb = -1
mm = np.zeros([He,He])
m = np.zeros([He+1])

for i in range(He):
    mm[i,i] = aa
    if i is 0:
        m[i] = -bb * z
    if i > 0:
        mm[i,i-1] = bb

ln = solve(mm,m)

Я получаю сообщение об ошибке:

  The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Спасибо за ваши ответы:)

1 Ответ

1 голос
/ 26 апреля 2019

Ваш код не совсем понятен без объяснения того, что он должен делать, я вижу 2 проблемы:

First sympy - библиотека для символической математики с бесконечной точностью. Он использует свой собственный Symbol для определения переменных, а sympy.solvers.solve запрашивает уравнение и список символов (уравнение должно зависеть от этих символов). Смотрите документ для этого: здесь

Другая точка mm имеет форму (10, 10), а m - вектор длины 11. Какое уравнение вы хотите решить?

Мое решение вашей проблемы - ЕСЛИ вы хотите решить уравнение наподобие mm @ X = m, тогда используйте np.linalg.solve(mm, m), но для этого вам нужны правильные формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...