python - 如何猜测 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]
解决方案
推荐阅读
- c# - 不能将两个右停靠面板放在另一个之上,有没有其他选择
- angular - 如何使用 ionic3 过滤数组中的嵌套数据
- laravel - 如何在共享主机中安装 Redis
- php - 未在 php 索引和标题中读取 CSS 文件
- javascript - nodejs中不同方式使用mysql数据输出
- matlab - 如何从不同的 .mat 文件加载表和保存表并为每个文件创建新的表维度
- javascript - 悬停在父元素上但不在子元素上
- pandas - Knn 赋予距离上的特定特征更多的权重
- angular - Angular 7 从 web api 返回一个 json 对象并在页面上访问
- java - 在 Java 中将编码为 UTF-8 的字符串转换为 TIS620(泰语编码)。有哪些方法可以做到这一点,是否有任何数据丢失?