首页 > 解决方案 > 如何猜测 Mathieu 方程的数值解

问题描述

我试图预测 mathieu 方程 y"+(lambda - 2qcos(2x))y = 0 的精确解。我已经能够使用数值逼近得到方程的五个特征值,我想为每个特征值找到一个猜测确切的解决方案。如果有人帮助,我会很高兴。谢谢。下面是第四个特征值的代码之一

from scipy.integrate import solve_bvp import numpy as np import matplotlib.pyplot as plt

Mathieu 方程的定义

q = 5.0


def func(x,u,p):
    lambd = p[0] 

    # y'' + (lambda - 2qcos(2x))y = 0 

    ODE = [u[1],-(lambd - 2.0*q*np.cos(2.0*x))*u[0]]
    return np.array(ODE)

边界条件的定义(BC)

def bc(ua,ub,p):
    return np.array([ua[0]-1., ua[1], ub[1]])

mathieu 方程的一个猜测解

def guess(x):
    return np.cos(4*x-6) 



Nx = 100



x = np.linspace(0, np.pi, Nx)




u = np.zeros((2,x.size))



u[0] = -x                      




res = solve_bvp(func, bc, x, u, p=[16], tol=1e-7)



sol = guess(x)


print res.p[0]


x_plot = np.linspace(0, np.pi, Nx)


u_plot = res.sol(x_plot)[0]



plt.plot(x_plot, u_plot, 'r-', label='u')



plt.plot(x, sol, color = 'black', label='Guess')


plt.legend()


plt.xlabel("x")


plt.ylabel("y")


plt.title("Mathieu's Equation for Guess$= \cos(3x) \quad \lambda_4 = %g$" % res.p )




plt.grid()



plt.show()

[第四个特征值的图][2]

标签: pythonnumpy

解决方案


推荐阅读