【问题标题】:Using subs on a List在列表中使用 subs
【发布时间】:2017-07-12 23:46:28
【问题描述】:

大家好,我正在运行一个解决一些方程的小型 python 程序,当我获得第一个结果时,问题就出现了,为 D 求解第一个方程,我有 D 取决于 A 和 C,然后我使用 subs on下一个方程与前一个结果,但 sympy 不允许我这样做,所以我怎样才能操纵这个结果并使 subs 成为可能。

提前致谢。

import sympy as sp

g, a, A, C, D, K, x = sp.symbols("g a A C D K x")

X=(A*sp.cos(g*x/a))+(sp.sin(g*x/a))+(C*sp.exp(-g*x/a))+(D*sp.exp(-g*(a-x)/a))

dx1=sp.diff(X,x,1)

dx2=sp.diff(X,x,2)

eq1= sp.Eq(X.subs(x,0),0)
eq2= sp.Eq(dx2.subs(x,0)/dx1.subs(x,0),K)
eq3= sp.Eq(X.subs(x,a),0)
eq4= sp.Eq(dx2.subs(x,a)/dx1.subs(x,a),-K)

D1=sp.solve(eq1,D)
eq33=D1.subs(D,D1)
C33=sp.solve(eq33,C)
Df=D1.subs(C,C33)
eq22=sp.subs(eq2,[C,D],[C33,D11]);
A22=solve(eq22,A)
pretty(A22)

【问题讨论】:

  • 哦,对不起,这是一个错误,它的 D1
  • 有一个编辑功能,用它来清理你的代码。 D11 是什么?你想用; 完成什么?习惯c编程? ;-)

标签: python list sympy


【解决方案1】:
import sympy as sp

g, a, A, C, D, K, x = sp.symbols("g a A C D K x")

X=(A*sp.cos(g*x/a))+(sp.sin(g*x/a))+(C*sp.exp(-g*x/a))+(D*sp.exp(-g*(a-x)/a))

dx1=sp.diff(X,x,1)

dx2=sp.diff(X,x,2)

eq1= sp.Eq(X.subs(x,0),0)
eq2= sp.Eq(dx2.subs(x,0)/dx1.subs(x,0),K)
eq3= sp.Eq(X.subs(x,a),0)
eq4= sp.Eq(dx2.subs(x,a)/dx1.subs(x,a),-K)

D1=sp.solve(eq1,D)
eq33=D1[0].subs(D,D1)
C33=sp.solve(eq33,C)
Df=D1[0].subs(C,C33[0])
eq22=eq2.subs((C,D),(C33[0],D1[0]))
A22=sp.solve(eq22,A)
sp.pprint(A22)

这应该可行。您可以通过简单地为该列表的第一个对象调用D1[0] 从列表中获取一个对象。请注意,D1 中可能有多个解决方案,因此可能有多个条目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2015-09-08
    相关资源
    最近更新 更多