首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用用户自定义函数Sympy解线性微分方程组

利用用户自定义函数Sympy解线性微分方程组
EN

Stack Overflow用户
提问于 2019-03-31 15:45:53
回答 1查看 329关注 0票数 3
代码语言:javascript
复制
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

它工作得很好。然而,

代码语言:javascript
复制
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: unhashable type:'dict‘。它在ics上有问题,但我不知道为什么以及如何修改solve_ode_ivp才能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-31 16:02:01

在第一个版本中输入ics= {x:5 , y: 0}时,您指定可选参数ics将此字典作为值,在第二个版本中,您将其作为第二个参数(不是ics)发送。

您可以将其更改为:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55438838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档