Диктовка знаков терминов в SymPy "linear_eq_to_matrix" - PullRequest
1 голос
/ 13 апреля 2020

Я использую SymPy (в блокноте Juptyer), чтобы выполнить некоторые базовые c вычисления с системой уравнений. Я использую sympy.linear_eq_to_matrix, чтобы превратить их в матричную форму.

Я пытаюсь использовать эти функции в образовательном контексте, и хотя результат sympy.linear_eq_to_matrix верен, он делает нетипичный выбор в отношении того, какое количество положительное или отрицательное.

Например, я пытаюсь прийти к матричному уравнению F = Ku, где F и u равны 1 на n векторов, а K представляет собой матрицу n на n. Студенты, как правило, сталкиваются с этим уравнением в форме символов c, где все величины в F и u отображаются в виде положительных слагаемых, в то время как матрица K несет соответствующие знаки, чтобы сделать уравнения действительными. Когда я звоню sympy.linear_eq_to_matrix, он часто возвращает F со смешанными знаками или u со смешанными знаками. Можно ли сделать так, чтобы слагаемые в F и u были положительными?

В качестве простого примера вы можете посмотреть на две последние строки следующего блокнота: https://github.com/dpholmes/DirectStiffnessMethod/blob/master/planarBeams.ipynb (FWIW знаки также «перепутаны» в переменной Lmat, которая ранее была названа в тетради.

Просто повторюсь, решения правильны , но не в «учебнике» для учащихся. студенты столкнутся. Это также имеет некоторые практические недостатки, так как студенты часто предоставляют / вводят значения u или F., чтобы решить проблему, и перевернутые знаки, вероятно, будут сбивать с толку.

1 Ответ

0 голосов
/ 13 апреля 2020

Текущая версия SymPy соответствует признакам:

>>> linear_eq_to_matrix(-(L**3*a4+L**2*a3+L*a2+a1),(a1,a2,a3,a4))
(Matrix([[-1, -L, -L**2, -L**3]]), Matrix([[0]]))
>>> linear_eq_to_matrix(L**3*a4+L**2*a3+L*a2+a1,(a1,a2,a3,a4))
(Matrix([[1, L, L**2, L**3]]), Matrix([[0]]))

Какую версию вы используете?

>>> import sympy
>>> sympy.__version__
'1.6.dev'
...