首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“ImmutableDenseNDimArray”对象没有属性“could_extract_minus_sign”

“ImmutableDenseNDimArray”对象没有属性“could_extract_minus_sign”
EN

Stack Overflow用户
提问于 2020-01-09 01:19:48
回答 1查看 1.4K关注 0票数 0

您好,我正在尝试运行此代码,但出现以下错误消息:'ImmutableDenseNDimArray‘对象没有属性'could_extract_minus_sign’

请帮帮忙,我以前从来没有用过渐变

代码语言:javascript
复制
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)

经过一些修改后,它正在工作:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-09 09:14:27

您描述的错误与您给出的代码并不匹配,因此您可能有一些不同定义的变量。

您提供的代码不会运行,因为您没有定义phi。你需要做的是

代码语言:javascript
复制
phi = Symbol('phi')

您还需要简化表达式以使solve在其上工作。请注意,它只有复杂的解决方案

代码语言:javascript
复制
>>> 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似乎证实了这一点。如果你期待一个真正的解决方案,你应该仔细检查你的表达式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59650858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档