t, C1, C2= symbols("t C1 C2")
x, y = symbols("x y", cls = Function, Function = True)
eq1 = Eq(3 * diff(x(t), t), y(t))
eq2 = Eq(diff(y(t),t), - 3 * y(t) - 15 * x(t) + 4 * 1)
soln = dsolve((eq1, eq2), ics = {x: 5, y: 0})
soln
效果很好。 但是
t, C1, C2= symbols("t C1 C2")
x, y = symbols("x y", cls = Function, Function = True)
ics = {x: 5, y: 0}
eq1 = Eq(3 * diff(x(t), t), y(t))
eq2 = Eq(diff(y(t),t), - 3 * y(t) - 15 * x(t) + 4 * 1)
def solve_ode_ivp(eq1, eq2, ics):
soln = dsolve((eq1, eq2), ics)
return soln
solve_ode_ivp(eq1, eq2, ics)
给出错误消息TypeError:不可散列的类型:'dict'。 ics有问题,但我不知道为什么以及如何修改solve_ode_ivp才能正常工作。
答案 0 :(得分:2)
在第一个版本中输入ics= {x:5 , y: 0}
时,您指定可选参数ics将以该字典作为值,在第二个版本中,您将其作为第二个参数(不是ics)发送给
您可以将其更改为此:
t, C1, C2= symbols("t C1 C2")
x, y = symbols("x y", cls = Function, Function = True)
ics = {x: 5, y: 0}
eq1 = Eq(3 * diff(x(t), t), y(t))
eq2 = Eq(diff(y(t),t), - 3 * y(t) - 15 * x(t) + 4 * 1)
def solve_ode_ivp(eq1, eq2, ics):
soln = dsolve((eq1, eq2), ics=ics)
return soln
solve_ode_ivp(eq1, eq2, ics)