У объекта 'ImmutableDenseNDimArray' нет атрибута 'can_extract_minus_sign' - PullRequest
0 голосов
/ 08 января 2020

Здравствуйте. Я пытаюсь запустить этот код, но появляется следующее сообщение об ошибке: «Объект ImmutableDenseNDimArray» не имеет атрибута. 1005 * После некоторых модификаций работает:

import sympy as sp

L = 1
m = 1
g = 9.81
k = 2


phi = sp.Symbol('phi')
x = sp.Symbol('x')

expr1 = 2.5*L*m*g*(sp.sin(phi)) + m*g*(sp.cos(phi))*(0.5*L+x)
expr2 = m*g*sp.sin(phi) + k*x
b = sp.solve([sp.simplify(expr1), sp.simplify(expr2)] , [phi , x])
print(b)  #une expression réelle

1 Ответ

1 голос
/ 09 января 2020

Ошибка, которую вы описали, на самом деле не совпадает с кодом, который вы дали, поэтому, скорее всего, некоторые переменные определены по-разному.

Код, который вы дали, не запускается, потому что вы не определили phi. Вам нужно сделать

phi = Symbol('phi')

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

>>> phi = Symbol('phi')
>>> expr = 2.5*L*m*g*(sp.sin(phi)) + m*g*(sp.cos(phi))*(0.5*L+(L/(sp.tan(phi))))
>>> solve(simplify(expr), phi)
[-0.160875277198321 - 0.71616371255285*I, -0.160875277198321 + 0.71616371255285*I, 2.98071737639147 - 0.71616371255285*I, 2.98071737639147 + 0.71616371255285*I]

Насколько я могу судить, у него нет реального решения. сюжет в Wolfram Alpha, кажется, подтверждает это. Если вы ожидаете реального решения, вы должны дважды проверить свое выражение.

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