2014-09-21 119 views
3

我想指定微分方程的边界条件。使用sympy微分方程的边界条件

*y"= 900(y - 1 + 2x) ; y(0)=5, y(2)=10* 

from sympy import * 
x=symbols('x') 
y, g = symbols('y g', cls=Function) 
diffeq = (Eq(y(x).diff(x, x) - 900*y(x) + 900, 1800*x),y(0):5,y(2)=10) 
A=dsolve(diffeq, y(x)) 
print A 

但它显示错误

diffeq = (Eq(y(x).diff(x, x) - 900*y(x) + 900, 1800*x),y(0):5,y(2)=10) 
                 ^
SyntaxError: invalid syntax 

请帮助。

回答

1

边界条件作为字典传递给dsolve,通过ics命名参数。

这样:

from sympy import * 
x=symbols('x') 
f=symbols('f', cls=Function) 
dsolve(Eq(f(x).diff(x,x), 900*(f(x)-1+2*x)), f(x), ics={f(0):5, f(2):10}) 

您可以将最后一行粘贴到sympy live,以验证它的工作原理。答案是:

F(X)= C1 * E^-30x + C2 * E^30倍 - 2 + 1

+6

但它仍然显示了常量,指定边界条件的C1和C2 inspite。 – 2014-09-26 06:42:10

+0

也许这是一个sympy错误?您需要在文档中阅读更多内容。在任何情况下,解决方法都很简单:在边界处进行替换,然后传递给线性系统求解器以获取常量。 – 2014-09-26 13:05:06

+1

@KubaOber你能解释一下吗? – 2017-09-16 16:25:43