如何求解Böttcher型函数方程?Maxima CAS求解报错咨询
问题描述
研究复平面迭代Böttcher坐标(泡泡浴朱利亚集相关问题)时,遇到如下函数方程:
B(2z^4 + 4z^6 + 9z^8 + 20z^{10} + 44z^{12} + 96z^{14}) = (B(z))^4
Maxima求解报错情况
尝试使用Maxima CAS求解该方程,输入代码及返回报错信息如下:
(%i2) e: B(2*z^4 + 4*z^6 + 9*z^8 + 20*z^10 + 44*z^12 + 96*z^14) = (B(z))^4; 14 12 10 8 6 4 4 (%o2) B(96 z + 44 z + 20 z + 9 z + 4 z + 2 z ) = B (z) (%i3) funcsolve (e,B(z)); expt: undefined: 0 to a negative exponent. #0: rform(%r=[0,0]) #1: funcsol(%a=B(96*z^14+44*z^12+20*z^10+9*z^8+4*z^6+2*z^4) = B(z)^4,%f=B(z),l%=[]) #2: funcsolve(%a=B(96*z^14+44*z^12+20*z^10+9*z^8+4*z^6+2*z^4) = B(z)^4,%f=B(z)) #3: funcsolve(_l=[B(96*z^14+44*z^12+20*z^10+9*z^8+4*z^6+2*z^4) = B(z)^4,B(z)]) -- an error. To debug this try: debugmode(true);
参考同场景下更简单的Basilica朱利亚集相关求解示例,对应函数定义、求解代码及报错信息如下:
define(f(z),z^2-1) (%o3) f(z):=z^2-1 (%i4) f2:factor(f(f(z))) (%o4) z^2*(z^2-2) (%i5) e:B(f2) = B(z)^2 (%o5) B(z^2*(z^2-2)) = B(z)^2 (%i6) s:funcsolve(e,B(z)) expt: undefined: 0 to a negative exponent. #0: rform(%r=[0,0]) #1: funcsol(%a=B(z^2*(z^2-2)) = B(z)^2,%f=B(z),l%=[]) #2: funcsolve(%a=B(z^2*(z^2-2)) = B(z)^2,%f=B(z)) #3: funcsolve(_l=[B(z^2*(z^2-2)) = B(z)^2,B(z)]) -- an error. To debug this try: debugmode(true);
需要确认该类函数方程的正确求解方式,以及是否存在其他适用的求解软件或专门求解方法。
解答
报错原因
Maxima的funcsolve是通用型简单函数方程求解器,默认在z=0点做解析展开匹配,完全不适配Böttcher坐标这类定义在多项式无穷远邻域、共轭于幂映射的解:
- 给出的两个方程对应的映射在z=0点都是超吸引不动点,Böttcher坐标在z=0附近不存在正则解析展开,求解器递归匹配时会触发0的负指数运算,直接报错。
- 这类方程几乎不存在初等闭式解,用通用函数方程求解器从原理上就走不通。
专门求解方法
Böttcher坐标是复动力系统中多项式映射在无穷远邻域(或超吸引不动点邻域)的标准共轭映射,求解统一用形式幂级数逐阶递推法,步骤如下:
- 归一化映射首项:Böttcher方程的标准形式为
B(f(z)) = (B(z))^d,其中d是映射f在展开中心的次数。对于超吸引不动点在0的情况,先做变量缩放把f的最低次项系数归一为1;对于无穷远邻域的Böttcher坐标,做变量代换w=1/z把无穷远点转到w=0点,再归一首项。 - 给定归一化条件:邻域内Böttcher坐标有固定渐近行为,比如0点超吸引邻域内满足
B(z) ~ z(z→0),无穷远邻域满足B(z) ~ z(z→∞),据此可以写出B的形式幂级数展开首项。 - 逐阶匹配系数:把形式幂级数代入方程,令两边同次幂系数相等,从低次到高次逐次解线性方程,就能得到任意阶数的幂级数展开系数,这是该领域的标准计算方法,不存在原理性障碍。
适用工具
- 不要使用通用CAS内置的
funcsolve类通用函数求解命令,这类工具没有针对复动力系统共轭方程做适配,从原理上就无法求解这类问题。 - 可以直接用Python的
mpmath、SymPy库自行实现上述幂级数递推逻辑,代码量很小,计算任意阶系数的效率很高。 - SageMath内置了复动力系统模块,直接封装了多项式Böttcher坐标的展开计算功能,不需要手动写递推逻辑。
- 专门的复动力系统可视化计算软件如Dynamics Explorer,也原生支持Böttcher坐标的计算与对应朱利亚集的绘制。
注:测试的Basilica朱利亚集示例报错,本质也是因为直接在z=0点调用求解器,而该映射的Böttcher坐标定义在填充朱利亚集外部,需要在无穷远点展开而非原点展开。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

