为了账号安全,请及时绑定邮箱和手机立即绑定

SymPy 的 dsolve 的返回值中的 r() 函数是什么意思?

SymPy 的 dsolve 的返回值中的 r() 函数是什么意思?

慕无忌1623718 2023-03-16 09:32:12
我想评估ODE的解决方案phi(+oo) 在哪里的价值phi(xi)Eq(Derivative(phi(xi), (xi, 2)), (-K + xi**2)*phi(xi))并且K是一个已知的实变量。通过dsolve,我得到了解决方案:Eq(phi(xi), -K*xi**5*r(3)/20 + C2*(K**2*xi**4/24 - K*xi**2/2 + xi**4/12 + 1) + C1*xi*(xi**4/20 + 1) + O(xi**6))r()在右侧的第一项中具有未知函数。这是我的代码:import numpy as npimport matplotlib.pyplot as pltimport sympyfrom sympy import I, pi, oosympy.init_printing()def apply_ics(sol, ics, x, known_params):    """    Apply the initial conditions (ics), given as a dictionary on    the form ics = {y(0): y0, y(x).diff(x).subs(x, 0): yp0, ...},    to the solution of the ODE with independent variable x.    The undetermined integration constants C1, C2, ... are extracted    from the free symbols of the ODE solution, excluding symbols in    the known_params list.    """    free_params = sol.free_symbols - set(known_params)    eqs = [(sol.lhs.diff(x, n) - sol.rhs.diff(x, n)).subs(x, 0).subs(ics)            for n in range(len(ics))]    sol_params = sympy.solve(eqs, free_params)    return sol.subs(sol_params)K = sympy.Symbol('K', positive = True)xi = sympy.Symbol('xi',real = True)phi = sympy.Function('phi')ode = sympy.Eq( phi(xi).diff(xi, 2), (xi**2-K)*phi(xi))ode_sol = sympy.dsolve(ode)ics = { phi(0):1, phi(xi).diff(xi).subs(xi,0): 0}phi_xi_sol = apply_ics(ode_sol, ics, xi, [K])ode_sol解决方案在哪里,phi_xi_sol是应用初始条件后的解决方案。由于r()在 NumPy 中未定义,我无法通过以下方式评估结果for g in [0.9, 0.95, 1, 1.05, 1.2]:    phi_xi = sympy.lambdify(xi, phi_xi_sol.rhs.subs({K:g}), 'numpy')有谁知道这个功能是什么r()意思,我应该如何处理它?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

从结果的形式可以看出,求解器回退到幂级数解(而不是像 WolframAlpha 那样根据抛物柱函数搜索解)。


因此,让我们设置phi(xi)=sum a[k]*xi^k导致系数方程(使用a[k]=0for k<0)


(k+2)(k+1)a[k+2] = -K*a[k] + a[k-2]


a[0] = C2  

a[1] = C1  

a[2] = -K/2*C2

a[3] = -K/6*C1

a[4] = (K^2/2 + 1)/12*C2

a[5] = (K^2/6 + 1)/20*C1

插入功率系列解决方案应该是


C2*(1-K/2*xi**2+(K**2/24+1/12)*xi**4) + C1*xi*(1-K/6*xi**2+(K/120+1/20)*xi**4) + O(xi**6)

与 sympy 解决方案相比,所有包含C1和的术语K都缺失,尤其是缺失的 3 度术语无法解释。似乎求解过程提前结束,或者某些方程变换没有正确反转。


请注意,sympy 中的 ODE 求解器例程是实验性的和基本的。此外,幂级数解仅给出 的小值的有效信息xi,无法推导出 处极限的任何精确值+oo。


查看完整回答
反对 回复 2023-03-16
?
慕神8447489

TA贡献1780条经验 获得超1个赞

sol_params是一个包含单个字典的列表。传递该字典而不是列表给出了phi_xi_sol没有的解决方案r(3)

Eq(rho(s), (-K*s**2/2 + s**2*xi**2/2 + 1)*(-6*rho(s) + 6*C2*s - C2*K*s**3 + O(s**5))/
            (3*(K*s**2 - 2)) + C2*(-K*s**3/6 + s**3*xi**2/6 + s) + O(s**5))


查看完整回答
反对 回复 2023-03-16
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信