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

如何正确绘制四次多项式向量场的分岔图?

解决Maxima绘制四次多项式向量场分岔图的问题

问题根源

你当前的代码存在两个核心问题:

  • 未引入分岔参数t,无法体现三个根绕原点旋转的分岔过程(你构造的p(z)=z(z² + z + e^(2πit))里的e^(2πit)完全没在代码中体现)
  • 直接使用复变量z而未拆分为实部x和虚部y,Maxima的plotdf仅处理实平面的向量场,需要明确基于实变量的分量表达式

修正后的Maxima实现步骤

  1. 定义复变量与分岔参数
    将复变量z拆分为实部x和虚部y,引入分岔参数t(范围[0,1),对应旋转一周):

    z: x + %i*y;
    t: 0.2; /* 可替换为0到1之间的任意值,观察分岔变化 */
    p: z*(z^2 + z + exp(2*%i*%pi*t));
    
  2. 提取向量场的实部和虚部分量
    对p(z)展开后分离实部和虚部,得到平面向量场的两个分量:

    r: realpart(p);
    m: imagpart(p);
    /* 展开简化表达式,避免绘图时计算卡顿 */
    r: expand(r);
    m: expand(m);
    
  3. 优化绘图参数
    调整plotdf的范围、箭头密度等参数,让分岔特征更清晰:

    plotdf([r, m], [x, y],
           xrange = [-2, 2], yrange = [-2, 2],
           fieldplot = true, /* 启用向量场箭头 */
           arrowsize = 0.5,
           grid = [20, 20], /* 控制箭头密度 */
           title = concat("t = ", float(t)));
    
  4. 生成分岔动画(可选)
    若要观察t变化时的分岔过程,可使用循环生成多帧图像或直接创建动画:

    for t_val from 0 step 0.05 thru 1 do (
      p: z*(z^2 + z + exp(2*%i*%pi*t_val)),
      r: expand(realpart(p)),
      m: expand(imagpart(p)),
      plotdf([r, m], [x, y],
             xrange = [-2, 2], yrange = [-2, 2],
             fieldplot = true,
             arrowsize = 0.5,
             title = concat("t = ", float(t_val)),
             filename = concat("bifurcation_", string(t_val), ".png"))
    );
    

关键说明

  • 当t变化时,e^(2πit)会带动f(z)=z²+z+e^(2πit)的三个根绕原点旋转,对应向量场的奇点(根的位置)也会同步旋转,这就是分岔图的核心变化
  • 建议将绘图范围限制在[-2,2]×[-2,2],因为单位根的位置在这个范围内,能清晰展示奇点和轨线的变化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:10:16