Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';不可变的DensendiMarray';对象没有属性';可以提取负号';_Python_Sympy - Fatal编程技术网

Python ';不可变的DensendiMarray';对象没有属性';可以提取负号';

Python ';不可变的DensendiMarray';对象没有属性';可以提取负号';,python,sympy,Python,Sympy,您好,我正在尝试运行此代码,但出现此错误消息:“ImmutableDenseNDimArray”对象没有“cand_extract_减号”属性 请帮帮我,我以前从未用过sympy 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

您好,我正在尝试运行此代码,但出现此错误消息:“ImmutableDenseNDimArray”对象没有“cand_extract_减号”属性

请帮帮我,我以前从未用过sympy

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

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

您提供的代码没有运行,因为您没有定义
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的一项研究似乎证实了这一点。如果您希望得到一个真正的解决方案,那么应该仔细检查您的表达式

我想在使用
sympy
时,您需要定义“phi”,忽略
math
numpy
导入(除非您知道如何使用它们)。您可能需要阅读更多的
symphy
教程。但为什么我需要定义phi?在我的“解算”中,我在寻找φ可以用来解我的方程的值。你不必给φ一个数值,但你仍然需要将它定义为一个sympy.symbol。退一步,做一些更基本的
sympy
阅读。我无法重现你的错误。但当我在网上搜索时,我发现了一个更早的问题。一个大问题是你没有提供回溯。是的,谢谢@asmurer,我应该在这个方程和另一个方程之间找到一个真正的解(mgsin(phi)+k*x=0,其中phi和x是未知的)。我的表达应该是正确的。溶液必须符合一个条件(tan(phi)=L/x)。在那之后,我必须找到更好的k值。我仍在寻找如何做到这一点。它现在正在工作,我改变了表达的一些部分