如何评估 SymPy 在初始条件下给出的常数?
How to evaluate the constants SymPy gives with initial condition?
如何从 SymPy 给我的微分方程的解中计算常数 C1 和 C2?有初始条件f(0)=0和f(pi/2)=3.
>>> from sympy import *
>>> f = Function('f')
>>> x = Symbol('x')
>>> dsolve(f(x).diff(x,2)+f(x),f(x))
f(x) == C1*sin(x) + C2*cos(x)
我尝试了一些 ics
方法,但没有用。示例:
>>> dsolve(f(x).diff(x,2)+f(x),f(x), ics={f(0):0, f(pi/2):3})
f(x) == C1*sin(x) + C2*cos(x)
顺便说一下:C2 = 0 和 C1 = 3。
有一个 pull request 实现 initial/boundary 条件,它已合并并应在 SymPy 1.2 中发布。同时,可以这样求解常量:
sol = dsolve(f(x).diff(x,2)+f(x),f(x)).rhs
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3])
final_answer = sol.subs(constants)
代码returns final_answer
为3.0*sin(x)
.
备注
solve
可能 return 一个解决方案列表,在这种情况下,必须替换 constants[0]
,等等。强制它 return 任何列表大小写(为了保持一致性),使用 dict=True
:
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3], dict=True)
final_answer = sol.subs(constants[0])
如果方程包含参数,solve
可能会或可能不会求解您想要的变量(C1 和 C2)。这可以通过以下方式确保:
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3], symbols('C1 C2'))
再次,dict=True
将强制输出列表格式。
如何从 SymPy 给我的微分方程的解中计算常数 C1 和 C2?有初始条件f(0)=0和f(pi/2)=3.
>>> from sympy import *
>>> f = Function('f')
>>> x = Symbol('x')
>>> dsolve(f(x).diff(x,2)+f(x),f(x))
f(x) == C1*sin(x) + C2*cos(x)
我尝试了一些 ics
方法,但没有用。示例:
>>> dsolve(f(x).diff(x,2)+f(x),f(x), ics={f(0):0, f(pi/2):3})
f(x) == C1*sin(x) + C2*cos(x)
顺便说一下:C2 = 0 和 C1 = 3。
有一个 pull request 实现 initial/boundary 条件,它已合并并应在 SymPy 1.2 中发布。同时,可以这样求解常量:
sol = dsolve(f(x).diff(x,2)+f(x),f(x)).rhs
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3])
final_answer = sol.subs(constants)
代码returns final_answer
为3.0*sin(x)
.
备注
solve
可能 return 一个解决方案列表,在这种情况下,必须替换 constants[0]
,等等。强制它 return 任何列表大小写(为了保持一致性),使用 dict=True
:
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3], dict=True)
final_answer = sol.subs(constants[0])
如果方程包含参数,solve
可能会或可能不会求解您想要的变量(C1 和 C2)。这可以通过以下方式确保:
constants = solve([sol.subs(x,0), sol.subs(x, math.pi/2) - 3], symbols('C1 C2'))
再次,dict=True
将强制输出列表格式。