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

使用Manim的FunctionGraph生成f(X)=-1/(x**2)无图形问题求助

问题原因与解决方案

核心问题

  • FunctionGraph默认的x取值范围是[-10, 10],但f(x) = -1/(x²)在x趋近于0时,函数值会直奔负无穷。
  • Manim默认的相机视口(y轴范围)装不下这么低的数值,导致整个图形都在可视区域外,所以生成的PNG是空白的。
  • 而f(x)=1/x虽然也有奇点,但它的函数值在正负两边都有分布,默认视口能抓到一部分,所以能正常显示。

解决办法

1. 避开x=0附近的奇点

直接限制x的取值范围,躲开x=0的区域,让函数值落在相机能看到的范围内:

from manim import *

class SimpleFunction(Scene):
    def construct(self):
        # x范围设为[-10, -0.1]和[0.1, 10],通过discontinuities标记断点
        graph = FunctionGraph(lambda x: -1/(x**2), x_range=[-10, 10, 0.01], discontinuities=[0])
        self.add(graph)

2. 手动调整相机的y轴范围

如果想保留x的全范围,就把相机的y轴范围往下调,覆盖函数的负向取值:

from manim import *

class SimpleFunction(Scene):
    def construct(self):
        graph = FunctionGraph(lambda x: -1/(x**2))
        self.add(graph)
        # 把y轴范围设为[-100, 0],这样就能看到趋近负无穷的部分图形
        self.camera.frame.set_y_range(-100, 0)

3. 两种方式结合(更美观)

既避开奇点附近的极端值,又调整y范围,让图形显示更舒服:

from manim import *

class SimpleFunction(Scene):
    def construct(self):
        graph = FunctionGraph(lambda x: -1/(x**2), x_range=[-5, 5, 0.01], discontinuities=[0])
        self.add(graph)
        self.camera.frame.set_y_range(-10, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:52:06