You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何求解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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:27:18