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

为什么Manim中应用复变换时出现不符合预期的异常表现?

异常原因

你遇到的表现不符合理论预期是两个Manim内置图形的特性导致的:

  • 你创建的Line是有限长度线段,不是理论上的无限直线:你定义的线段仅覆盖x=2、y∈[0,5]的范围,做倒数变换后自然只能得到过原点的圆的一段弧,不会显示完整的圆
  • 你创建的Circle是离散采样的矢量图形:这个过原点的圆做倒数变换时,原点附近的采样点经过1/z计算后会得到数值极大的坐标,直接超出画布显示范围,自然看不到完整的直线效果

修复方案

有两个优化方向可以复现理论效果:

  1. 把有限线段替换为足够长的线段,模拟无限直线的效果
  2. 过原点的圆的倒数变换不要直接对Circle对象操作,改用参数方程直接生成变换后的直线,或者采样时避开原点附近的区间

修正后的参考代码如下:

from manim import *

class ComplexFix(Scene):
    def construct(self):
        d = ComplexPlane()
        self.play(Create(d))
        
        # 用足够长的线段模拟x=2的无限直线
        line = Line(start=[2, -100, 0], end=[2, 100, 0], stroke_width=3, color=RED)
        self.add(line)
        # 长线段做倒数变换,会显示接近完整的过原点的圆
        self.play(line.animate.apply_complex_function(lambda z:1/z), run_time=5)
        
        self.wait()
        # 直接用参数方程生成过原点的圆(圆心(1,0)半径1)的倒数变换结果,即直线x=0.5
        transformed_circle = ParametricFunction(
            lambda t: np.array([0.5, 100*(t-0.5), 0]),
            t_range = [0, 1],
            color = BLUE,
            stroke_width = 3
        )
        self.play(Create(transformed_circle), run_time=3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 05:36:07