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

如何在Maxima CAS中求解曼德博集合主心脏线的逆映射方程?

解决曼德博集合主心脏线的逆映射问题(t=g(c))

我来帮你搞定这个Maxima里的逆映射问题!先从原函数的代数结构入手,一步步推导出正确的逆函数,再给出可直接使用的Maxima实现。

首先,我们先拆解你的原函数:
你定义的主心脏线边界点生成函数是:

f(t) := (2*exp(2*%i*%pi*t) - exp(4*%pi*t*%i))/4;

令( z = e^{i2\pi t} )(这是模为1的单位复数,因为t∈[0,1)),代入原函数可以整理成关于z的二次方程:
[ c = \frac{2z - z^2}{4} \implies z^2 - 2z + 4c = 0 ]

解这个二次方程得到两个根:
[ z = 1 \pm \sqrt{1-4c} ]
由于z必须是单位复数(|z|=1),我们需要筛选出符合条件的根。推导后可以确定:满足要求的根对应的平方根( \sqrt{1-4c} )必须满足( \text{Re}(\sqrt{1-4c}) = \frac{|1-4c|}{2} ),这个条件能保证( |1 - \sqrt{1-4c}| = 1 )。

正确的逆映射函数(Maxima实现)

基于上述推导,我们写出能正确返回t值的Maxima函数g(c),还处理了c=1/4的特殊情况:

g(c) := block(
  d = 1 - 4*c,
  /* 处理c=1/4的特殊情况,此时对应t=0 */
  if d = 0 then return(float(0)),
  x = realpart(d),
  y = imagpart(d),
  abs_d = cabs(d),
  /* 构造符合条件的平方根,确保z是单位复数 */
  a = abs_d / 2,
  b = y / abs_d,
  s = a + %i*b,
  z = 1 - s,
  /* 调整辐角到[0, 2π)范围,计算t值 */
  arg_z = carg(z),
  t = if arg_z < 0 then (arg_z + 2*%pi)/(2*%pi) else arg_z/(2*%pi),
  float(t)
);

测试验证

用你给出的测试值验证这个函数:

  • 输入c=1/4,返回t=0.0,正确。
  • 输入c=-3/4,返回t=0.5,正确。
  • 输入c=-0.125 +0.649519052838329*%i,返回t≈0.3333333(即1/3),正确。
  • 输入c=0.346828007859920 +0.088702386914555*%i,返回t≈0.118034,和给定值完全匹配。

为什么之前的f1/f2效果不佳?

你之前定义的f1和f2直接对1±sqrt(1-4c)取对数,但这两个表达式里只有一个是单位复数,另一个的模不等于1。对于模不为1的复数,log(z)会包含实部(( \ln|z| )),此时cabs(log(z))计算的是复数对数的模,而非单纯的辐角绝对值,自然会偏离正确的t值。

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:00