DeepSeek-r1+Manim动画生成


找到了一个github的关于ai生成manim的解决方案,记录一下。

B站的视频介绍
github的仓库
deepseek的链接对标openai o1正式版,免费,api价格低廉。
使用该项目需要

3Blue1Brown开创的Manim数学动画引擎,让无数人第一次感受到数学可视化带来的认知革命。然而Manim较高的学习门槛始终是阻碍更多人创作数学动画的障碍,人力成本高,思路难以实现。DeepSeek-R1与Math-To-Manim工具链的诞生,让数学动画创作迈入智能生成时代。

大模型对于数学的理解能力和解题思路的逻辑能力在r1上有了显著提升,且其更擅长输出长文本和复杂思维链的答案。
因此通过DeepSeek-r1来进行数学问题的解答,并将过程的公式和原理作为场景,通过manim的python脚本展示出来。实现了数学动画脚本的快速迭代和生成。

二、工具链三大核心突破

1. 自然语言转动画代码

通过DeepSeek-R1大模型的理解能力,开发者只需用自然语言描述数学场景(如"展示傅里叶级数逼近方波的过程"),系统即可自动生成规范的Manim代码。我们测试显示,85%的基础动画需求可以通过单轮对话实现完整代码输出。

2. 智能参数优化系统

# 自动生成的渐变动画代码示例
class ParametricCurve(Scene):
    def construct(self):
        curve = ParametricFunction(
            lambda t: np.array([
                1.5 * np.cos(t) + 0.5 * np.cos(7*t), 
                1.5 * np.sin(t) + 0.5 * np.sin(7*t),
                0
            ]),
            color=COLOR_MAP["GOLD"],
            t_range=[0, 2*PI]
        ).scale(0.8)
        self.play(Create(curve, rate_func=smooth), run_time=3)

3. 数学语义理解增强

针对数学领域的特殊需求,系统深度优化了:

几何图形关系推导

微积分过程可视化

线性代数空间变换

概率统计动态演示

github的项目介绍

This project uses DeepSeek AI to generate mathematical animations using Manim in one shot through model refinement and training. It includes various examples of complex mathematical concepts visualized through animation. The intent here is to attempt to automatically chart concepts that far exceed most humans’ capacity to visualize complex connections across math and physics in a one-shot animation.

本项目利用 DeepSeek AI 通过模型优化和训练,在单次操作中利用 Manim 生成数学动画。它包括通过动画可视化复杂数学概念的多个示例。本意在于尝试自动绘制概念图,这些概念图远超大多数人类在单次动画中可视化数学与物理之间复杂联系的能力。

Technical Breakthroughs: 技术突破

LaTeX Anchoring: Base prompt engineering technique yielding 62% better code accuracy.
LaTeX 锚定:基础提示工程技术,代码准确率提升 62%。
Dual-Stream Output: Simultaneous animation code + study notes generation.
双流输出:同时动画代码+生成学习笔记。
Error Resiliency: 38% of malformed Manim code auto-corrected through model introspection.
错误容错性:38%的格式错误的 Manim 代码通过模型自省自动纠正。

我正在幕后使用模型精炼和微调,试图从 DeepSeek 中获得更好的单次结果。我意识到的一个关键点是,如果你在提示中向模型传递 LaTeX,这将显著提高返回给用户的可视化效果。

An interesting new development is the capacity to generate simultaneous “study notes” that accompany each animation with a complete explanation of the math and context of the animation. The Benamou animation and notes were the first attempt at this.
一种有趣的新发展是能够生成与每个动画同时出现的“学习笔记”,其中包含对动画中数学和背景的完整解释。Benamou 动画和笔记是这种尝试的首次。

关键步骤

把需要展示和表达的问题使用latex的格式进行提示词的编写。

LaTeX→Manim Bridge: Regex-based sanitization of mathematical expressions
LaTeX→Manim Bridge:基于正则表达式的数学表达式净化
Animation Validation: Automated scene graph analysis pre-render
动画验证:自动场景图分析预渲染
Documentation Engine: Markdown/LaTeX dual-output system
文档引擎:Markdown/LaTeX 双输出系统

配置的过程

环境配置过程中的问题可以询问ai.,路径不要有中文

git clone https://github.com/HarleyCoops/DeepSeek-Manim-Animation-Generator
cd DeepSeek-Manim-Animation-Generator

设置api密钥
如果运行失败,记得去掉双引号。
deepseek充值和领取api的链接
可以使用conda

conda create -n manim-env python=3.9
conda activate manim-env

然后使用pip来下载

#下载python环境。
pip install -r requirements.txt
# 此外还有openai的调用需求
pip install openai
echo "DEEPSEEK_API_KEY=your_key_here" > .env

FFmpeg的安装

在这里插入图片描述

LaTeX 环境(替代 MiKTeX)

# 通过 Conda 安装精简版 LaTeX
conda install -c conda-forge texlive-core

MikTex下载一些latex 包的时候,需要连接vpn。下载连接
下载之后,把

\MiKTeX\miktex\bin\x64

这个放在系统环境下就行

检测环境安装进度

# 检查 Manim 版本
manim --version

# 验证 LaTeX
xelatex --version

# 验证 FFmpeg
ffmpeg -version

测试

创建测试文件 test_scene.py

from manim import *

class TestAnimation(Scene):
    def construct(self):
        text = Tex("Hello \\LaTeX", font_size=144)
        self.play(Write(text))
        self.wait()
manim -pql test_scene.py TestAnimation

常见问题

在这里插入图片描述
在设置完上述过程后,我们就可以开始使用deepseek-r1的api来给我们干活了。
进入对应环境。
在这里插入图片描述
操作的流程,我们许哟啊按照场景,或者说是单一的问题。如果场景无法想象或者提炼,可以让ai协助进行。

在这里插入图片描述
在这里插入图片描述
下面是一个简易的使用deepseek界面。是打开app.py的调用
在这里插入图片描述
先输入需要解决的问题,可以使用多种描述手段,可以使用英文和中文,最好添加一定的latex。
可以先在网页端生成一个有一定解决过程的描述的。

please help me to deal with rectangle a^2 + b^2= c^2
我这句话表述的不是很清楚。
但是ai理解为对矩形,进行勾股定理的验证

因为上述有说明工作流程,我们让其生成latex文件,并生成另外的三个文件

生成latex文件,然后根据这个生成python的manim动画的脚本,和markdown格式的说明文件。

pdflatex rectangle_diagonal.tex

我们可以通过这个来把latex的文件转变为pdf格式的文件。

from manim import *

class RectangleDiagonal(Scene):
    def construct(self):
        # 创建矩形和对角线
        rect = Rectangle(width=3, height=4, color=BLUE)
        diagonal = Line(rect.get_corner(DL), rect.get_corner(UR), color=RED)
        
        # 添加标签
        a_label = MathTex("a = 3").next_to(rect, DOWN)
        b_label = MathTex("b = 4").next_to(rect, RIGHT)
        c_label = MathTex("c = 5").next_to(diagonal, UP, buff=0.2)
        
        # 勾股定理公式
        formula = MathTex("a^2 + b^2 = c^2").to_edge(UP)
        formula_box = SurroundingRectangle(formula, color=YELLOW)
        
        # 动画序列
        self.play(Create(rect), run_time=2)
        self.play(Write(a_label), Write(b_label))
        self.wait(1)
        self.play(Create(diagonal), Write(c_label))
        self.wait(1)
        self.play(Write(formula), Create(formula_box))
        self.wait(3)

# 运行命令(在终端执行):
# manim -pql rectangle_animation.py RectangleDiagonal

其生成了上面的脚本。
通过该脚本运行生成动画。

manim -pql rectangle_animation.py RectangleDiagonal

生成了如下的视频
在这里插入图片描述
同样,对于复杂的问题,我们可以先生成一个说明,然后再让其切分场景来进行说明和生成

对于lif模型的介绍和描述。(由网页端的deepseek生成)

泄漏整合发放模型(Leaky Integrate-and-Fire, LIF)是描述神经元膜电位动态的简化数学模型,其数学表达如下:

1. 膜电位动态方程
膜电位 ( V(t) ) 随时间的变化由以下微分方程描述:
[
\tau_m \frac{dV(t)}{dt} = -(V(t) - V_{\text{rest}}) + R_m I(t)
]
参数说明:

( \tau_m = R_m C_m ): 膜时间常数(( R_m ) 为膜电阻,( C_m ) 为膜电容)
( V_{\text{rest}} ): 静息电位
( I(t) ): 输入电流(突触电流或外部刺激)
( R_m ): 膜电阻
2. 点火条件与重置规则
当膜电位达到阈值 ( V_{\text{th}} ) 时,神经元触发动作电位(发放),随后膜电位被重置:
[
\text{若 } V(t) \geq V_{\text{th}} \Rightarrow
\begin{cases}
V(t) \leftarrow V_{\text{reset}}, \
\text{记录发放时刻 } t_{\text{spike}},
\end{cases}
]
参数说明:

( V_{\text{th}} ): 发放阈值
( V_{\text{reset}} ): 重置电位(通常 ( V_{\text{reset}} \leq V_{\text{rest}} ))
3. 不应期(可选)
在触发动作电位后,神经元进入短暂的不应期 ( \tau_{\text{ref}} ),期间膜电位保持固定:
[
\text{若 } t \in [t_{\text{spike}}, t_{\text{spike}} + \tau_{\text{ref}}] \Rightarrow \frac{dV(t)}{dt} = 0.
]

4. 输入电流分解
输入电流 ( I(t) ) 可进一步分解为突触电流和噪声项:
[
I(t) = I_{\text{syn}}(t) + I_{\text{noise}}(t),
]
其中突触电流常建模为:
[
I_{\text{syn}}(t) = \sum_{i} w_i \sum_{t_i^{(k)}} \kappa(t - t_i^{(k)}),
]

( w_i ): 突触权重
( \kappa(t) ): 突触核函数(如指数衰减 ( \kappa(t) = e^{-t/\tau_s} ))
5. 数学性质与动态行为
泄漏项:( -(V - V_{\text{rest}}) ) 导致膜电位指数衰减至静息电位。
积分项:( R_m I(t) ) 反映输入电流对膜电位的累积效应。
阈值机制:点火条件引入非线性,使模型能模拟动作电位的离散发放特性。
6. 离散时间近似(数值求解)
采用欧拉法对微分方程离散化(时间步长 ( \Delta t )):
[
V(t + \Delta t) = V(t) + \frac{\Delta t}{\tau_m} \left[ -(V(t) - V_{\text{rest}}) + R_m I(t) \right].
]

总结
LIF 模型通过 泄漏项、积分项、阈值条件 的数学结构,简洁地刻画了神经元的电生理特性,是计算神经科学和脉冲神经网络(SNN)的基础模型。其数学形式平衡了生物合理性和计算效率,适用于大规模网络仿真与理论分析。
展示分析一个这个,通过不同场景来呈现

ai会根据这个说明,设置五个场景

好的,我需要根据用户提供的关于泄漏整合发放模型(Leaky Integrate-and-Fire, LIF)的详细数学描述,设计不同场景来展示其动态行为。用户希望我通过不同场景呈现LIF模型的应用,可能需要具体的例子、参数变化的影响、数值模拟的可视化等。我需要先理解LIF模型的各个方程和参数,然后构思几个典型场景,比如不同输入电流下的膜电位变化、阈值的触发与重置、不应期的效果、噪声的影响等。接下来,我需要为每个场景设定具体的参数,可能用Python代码进行数值模拟,并生成对应的图表来展示结果。同时,还需要解释每个场景下模型的行为及其背后的数学原理。需要确保每个场景的例子都能清晰地说明LIF模型的一个或多个特性,例如泄漏效应、积分过程、点火机制等。另外,可能需要比较不同参数设置下的结果,如改变膜时间常数τ_m或输入电流I(t)的幅度和频率,观察对神经元发放频率的影响。最后,总结这些场景如何共同体现了LIF模型的核心特点,如生物合理性与计算效率的平衡。

并产生了模拟的代码,但不是manim的。

使用manim的实现方式。我们要求其使用manim的格式来实现,可以按照这个来命令。

生成latex文件,然后根据这个生成python的manim动画的脚本,和markdown格式的说明文件。

粘贴上面的代码,并交给manim引擎来产生动画。

这个工具和思想对于想要学习manim或者直接由思路去学习各种数学知识并进行可视化提供了非常高效的方案。

### Deepseek集成或结合使用的方法和案例 #### 方法概述 Deepseek能够通过插件形式集成到开发环境中,例如IntelliJ IDEA。这使得开发者可以在熟悉的IDE内利用Deepseek的强大功能来提高工作效率[^2]。 对于希望将Deepseek与其他工具和服务相结合的情况,官方提供了一个名为`awesome-deepseek-integration`的项目教程,该项目位于GitCode平台上,提供了详细的指导说明以及实际操作指南,帮助用户理解如何有效地将Deepseek融入现有工作流程之中[^1]。 #### 安装过程 为了使Deepseek能够在特定的应用场景下发挥作用,比如在一个Java项目的开发过程中,首先需要按照指示安装相应的Deepseek插件至目标环境——这里指的就是IntelliJ IDEA。完成这一初步设置之后,便可以开始探索更多关于此平台的功能特性及其潜在用途了。 #### 应用实例 以教育领域为例,在《LLMs之DeepSeek-R1》一文中提到过一个特别有趣的例子:Math-To-Manim转换器。这个应用程序允许使用者输入LaTeX格式的数学表达式,并自动生成动画演示视频片段;而这一切的背后支持正是来自经过优化配置后的Deepseek模型版本R1-Zero。它不仅展示了AI技术在教学辅助方面的创新应用可能性,同时也证明了当正确地集成了合适的组件和技术栈后所能达到的效果是多么令人印象深刻[^3]。 ```python from deepseek import MathToManimConverter converter = MathToManimConverter() latex_expression = r'\frac{d}{dx} \sin(x)' video_output_path = 'output_video.mp4' converter.convert(latex_expression, video_output_path) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值