超稳定周期序列及其 μ \mu μ值方程
在《从抛物线谈起——混动动力学引论》第9节“周期窗口何处有——字提升法”中,提到了周期5的三个超稳定周期序列及其对应的 μ \mu μ值方程
超稳定周期序列 | 对应的 μ \mu μ值方程 |
---|---|
RLRRO | μ = μ + μ − μ − μ \mu = \sqrt{\mu + \sqrt{\mu - \sqrt{\mu - \sqrt{\mu}}}} μ=μ+μ−μ−μ |
RLLRO | μ = μ + μ + μ − μ \mu = \sqrt{\mu + \sqrt{\mu + \sqrt{\mu - \sqrt{\mu}}}} μ=μ+μ+μ−μ |
RLLLO | μ = μ + μ + μ + μ \mu = \sqrt{\mu + \sqrt{\mu + \sqrt{\mu + \sqrt{\mu}}}} μ=μ+μ+μ+μ |
迭代法求解
因为上述
μ
\mu
μ值方程如果作为极限数列的话,明显是收敛的,所以书中提到使用迭代法进行求解:
μ
n
+
1
=
μ
n
+
μ
n
−
μ
n
−
μ
n
\mu_{n+1} = \sqrt{\mu_n + \sqrt{\mu_n - \sqrt{\mu_n - \sqrt{\mu_n}}}}
μn+1=μn+μn−μn−μn
其Python代码实现为:
# 迭代法求解字提升法的mu值方程
import sympy as sp
from scipy.optimize import fsolve
# 声明mu值变量
mu = sp.symbols('mu')
# 字提升法得出的mu值方程,这里是周期5的超稳定周期序列之一:RLRRO
equation = sp.sqrt(mu + sp.sqrt(mu - sp.sqrt(mu - sp.sqrt(mu))))
# 将符号表达式转化为函数
func = sp.lambdify(mu, equation)
# 设置初值
x = 1
# 对初值进行迭代
for i in range(100):
x = func(x)
print(x)
# 1.6254137251233038
得出RLRRO序列对应的 μ \mu μ值约为:1.6254137251233038
数值法求解
迭代法本身也是一种数值求解方法,对于更广泛的数值求解方法(虽然大多数也是基于迭代),可以使用scipy.optimize.fsolve()
求解。
对应方程:
0
=
μ
+
μ
−
μ
−
μ
−
μ
0 = \sqrt{\mu + \sqrt{\mu - \sqrt{\mu - \sqrt{\mu}}}} - \mu
0=μ+μ−μ−μ−μ
Python求解代码:
# 数值法求解字提升法的mu值方程
import sympy as sp
import numpy as np
from scipy.optimize import fsolve
# 声明mu值变量
mu = sp.symbols('mu')
# 字提升法得出的mu值方程,这里是周期5的超稳定周期序列之一:RLRRO
equation = sp.sqrt(mu + sp.sqrt(mu - sp.sqrt(mu - sp.sqrt(mu)))) - mu
# 将符号表达式转化为函数
func = sp.lambdify(mu, equation)
# 求数值解
fsolve(func, np.array(1))
同样得出 μ \mu μ值约为:1.625414