您好,我正在尝试运行此代码,但出现以下错误消息:'ImmutableDenseNDimArray‘对象没有属性'could_extract_minus_sign’
请帮帮忙,我以前从来没有用过渐变
from math import *
import numpy as np
import sympy as sp
L = 1
m = 1
g = 9.81
k = 2
a = sp.solve(2.5*L*m*g*(sp.sin(phi)) + m*g*(sp.cos(phi))*(0.5*L+(L/(sp.tan(phi)))), phi)
print(a)经过一些修改后,它正在工作:
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发布于 2020-01-09 09:14:27
您描述的错误与您给出的代码并不匹配,因此您可能有一些不同定义的变量。
您提供的代码不会运行,因为您没有定义phi。你需要做的是
phi = Symbol('phi')您还需要简化表达式以使solve在其上工作。请注意,它只有复杂的解决方案
>>> 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的一位plot似乎证实了这一点。如果你期待一个真正的解决方案,你应该仔细检查你的表达式。
https://stackoverflow.com/questions/59650858
复制相似问题