'SYMBOL' 对象不可调用

这是我第一次使用 sympy,我不知道我做错了什么。请问你能帮帮我吗?


这是我的代码:


from __future__ import division

from sympy import *


q, l, p = symbols('q, l, p')

x1, x2, x3, x4, x5, x6, x7 = symbols('x1, x2, x3, x4, x5, x6, x7')

c1, c2, c3, c4, c5, c6, c7 = symbols('c1, c2, c3, c4, c5, c6, c7')

c8, c9, c10, c11, c12, c13, c14 = symbols('c8, c9, c10, c11, c12, c13, c14')



a = 209 * q * l / 42 - p / 3

"TRECHO AB"

m1 = a * x1 - q * x1 ** 2 / 2

d1 = integrate(m1, x1) + c1

y1 = integrate(d1, x1) + c2


"TRECHO BC"

m2 = a * 2 * l + a * x2 - 2 * q * l(x2 + l)

d2 = integrate(m2, x2) + c3

y2 = integrate(d2, x2) + c4


"TRECHO CD"

m3 = a(3 * l + x3) - 2 * q * l(2 * l + x3) - q * x3 ** 3 / 6 * l

d3 = integrate(m3, x3) + c5

y3 = integrate(d3, x3) + c6


"TRECHO DE"

m4 = a(x4 + 6 * l) - 2 * q * l(x4 + 5 * l) - (9 * q * l / 2)(x4 + l)

d4 = integrate(m4, x4) + c7

y4 = integrate(d3, x4) + c8


"TRECHO FG"

m5 = a(x5 + 7 * l) - 2 * q * l(x5 + 6 * l) - (9 * q * l / 2)(x5 + 2 * l) - p * x5

d5 = integrate(m5, x5) + c9

y5 = integrate(d5, x5) + c10


"TRECHO GH"

m6 = a(x6 + 15 * l / 2) - 2 * q * l(x6 + 13 * l / 2) - (9 * q * l / 2)(x6 + 5 * l / 2) - p(x6 + l / 2) - 2 * q * x6(

    x6 / 2)

d6 = integrate(m6, x6) + c11

y6 = integrate(d6, x6) + c12


"TRECHO HI"

m7 = a(x7 + 19 * l / 2) - 2 * q * l(x7 + 17 * l / 2) - (9 * q * l / 2)(x7 + 9 * l / 2) - p(x7 + 5 * l / 2) - 4 * q * l(

    x7 + l) - (3 * q * x7 ** 2 / 2 * l)(x7 / 3)

d7 = integrate(m7, x7) + c13

y7 = integrate(d7, x7) + c14


print(

    "{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{},\n{}".format(d1, y1, d2, y2, d3, y3, d4, y4, d5, y5,

                                                                                 d6, y6, d7, y7))

追溯:


Traceback (most recent call last):

  File "mecsolidos2.py", line 17, in <module>

    m2 = a * 2 * l + a * x2 - 2 * q * l(x2 + l)

TypeError: 'Symbol' object is not callable

这与 m3 到 m7 的错误相同:S 我试图将 m2 更改为另一个常量,将 m2 用作 m2.eval 但没有一个起作用:S 让我生气的是,对于 m1 它工作得很好


ps:对不起我的英语不好


牧羊人nacy
浏览 228回答 1
1回答

Qyouu

如果 l() 打算作为一个函数,它应该在某处声明。如果您愿意,在 SymPy 中您可以拥有函数而无需提供其内部细节,例如l = Function('l')(x).&nbsp;文档中的更多详细信息。相反,如果l(...)只是一个乘法(正如您的符号声明和在l其他地方用作标量所建议的那样),则*需要显式编写乘法 ( )。请注意,为了使 SymPy 以最佳方式工作,在声明符号时,指定它们的类型会有所帮助。例如symbols(".....", real=True).&nbsp;此外,指定某个变量是否始终为正会有所帮助,尤其是在涉及对数或 sqrt 时。有关可能的假设类型的更多详细信息,请参阅文档。顺便说一句,如果您喜欢更宽松的语法,可以省略乘法符号并^可以转换为**,那么sympify()orparse_expr()函数可能会很有趣。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python