這是我第一次使用 sympy,我不知道我做錯了什么。請問你能幫幫我嗎?這是我的代碼:from __future__ import divisionfrom 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 / 2d1 = integrate(m1, x1) + c1y1 = integrate(d1, x1) + c2"TRECHO BC"m2 = a * 2 * l + a * x2 - 2 * q * l(x2 + l)d2 = integrate(m2, x2) + c3y2 = integrate(d2, x2) + c4"TRECHO CD"m3 = a(3 * l + x3) - 2 * q * l(2 * l + x3) - q * x3 ** 3 / 6 * ld3 = integrate(m3, x3) + c5y3 = 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) + c7y4 = 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 * x5d5 = integrate(m5, x5) + c9y5 = 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) + c11y6 = 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) + c13y7 = integrate(d7, x7) + c14print( "{},\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:對不起我的英語不好
1 回答

Qyouu
TA貢獻1786條經驗 獲得超11個贊
如果 l() 打算作為一個函數,它應該在某處聲明。如果您愿意,在 SymPy 中您可以擁有函數而無需提供其內部細節,例如l = Function('l')(x)
. 文檔中的更多詳細信息。
相反,如果l(...)
只是一個乘法(正如您的符號聲明和在l
其他地方用作標量所建議的那樣),則*
需要顯式編寫乘法 ( )。
請注意,為了使 SymPy 以最佳方式工作,在聲明符號時,指定它們的類型會有所幫助。例如symbols(".....", real=True)
. 此外,指定某個變量是否始終為正會有所幫助,尤其是在涉及對數或 sqrt 時。有關可能的假設類型的更多詳細信息,請參閱文檔。
順便說一句,如果您喜歡更寬松的語法,可以省略乘法符號并^
可以轉換為**
,那么sympify()
orparse_expr()
函數可能會很有趣。
添加回答
舉報
0/150
提交
取消