用SymPy自动求解追及问题的方程
痛点场景还原假设做一个最经典的追及动画甲从原点出发速度 v12乙从 x10 处同向出发速度 v25问多久追上。如果用纯手工方式写Manimclass PainfulCatchUp(Scene): def construct(self): # 手动列方程并求解 # 设 t 为乙出发后的时间甲的位置2*(t?)乙的位置105*t # 如果同时出发2t 105t → t -10/3 负数无意义 # 改甲先出发2秒2(t2) 105t → 2t4105t → -3t6 → t-2 还是负 # 必须反复调整题设手算满足实际情况的初始条件 # 这里干脆让乙追甲甲在乙前面 # 甲在x10以v2向前乙在x0以v5同时出发 → 5t 102t → 3t10 → t10/3 v1, v2 2, 5 t_meet 10/3 # 手动解出的结果 meet_x 5 * t_meet # 再手动算相遇位置 # 甲和乙的轨迹只能硬编码 def pos1(t): return 10 v1 * t def pos2(t): return v2 * t # 然后创建动画……痛点很明显每次改变速度或初始距离都要重新手写方程、求解、算相遇坐标。题目条件稍微变化比如“甲先走1分钟”、“乙在中途休息”手算的过程就得全部推翻重来。容易在单位换算、正方向等细节上出错动画一旦跑起来发现不对排查起来也费劲。这些计算本质上就是根据文字描述建立代数方程并求解正是SymPy最擅长的事。2. SymPy 解决方案介绍SymPy可以让我们用符号把追及问题“翻译”成方程然后自动求解。import sympy as sp # 符号定义t 为乙出发后经过的时间 t sp.symbols(t, positiveTrue) v1, v2 2, 5 # 速度 s0 10 # 初始距离甲在乙前面10米 # 甲的位置先出发0秒即同时出发位置 s0 v1*t pos1 s0 v1 * t # 乙的位置从0开始位置 v2*t pos2 v2 * t # 相遇条件位置相等 eq sp.Eq(pos1, pos2) solution sp.solve(eq, t) # 输出: [10/3]如果甲先出发 2 秒方程只需改一下t_delay 2 # 甲早出发2秒 pos1 s0 v1 * (t t_delay) # 甲多走2秒 eq sp.Eq(pos1, pos2) solution sp.solve(eq, t) # 输出: [14/3]无论怎么变化我们只需要修改符号表达式的构建逻辑求解交给solve相遇坐标直接代入即可。接下来把这个思想嵌入Manim动画就能自适应任意追及条件。3. Manim 联动实战下面是一个完整的动画场景给定甲、乙的初始位置、速度和出发延迟自动计算相遇点并动态展示追及过程。from manim import * import sympy as sp class CatchUpLab(Scene): def construct(self): # 题目参数任意修改这里即可 v1 1.5 # 甲的速度 v2 2.5 # 乙的速度 init_gap 8 # 初始距离甲在乙前面 delay 1 # 甲早出发的时间 # SymPy 自动求解 t sp.symbols(t, positiveTrue) pos1_expr init_gap v1 * (t delay) # 甲的位置 pos2_expr v2 * t # 乙的位置 eq sp.Eq(pos1_expr, pos2_expr) t_meet sp.solve(eq, t)[0] # 精确解 meet_x float(pos2_expr.subs(t, t_meet)) # 相遇位置 # 为了动画流畅预先计算两个运动函数可以直接用lambda def pos1_func(time): return init_gap v1 * (time delay) def pos2_func(time): return v2 * time # 场景搭建 axes NumberLine( x_range[0, 30, 5], length8, include_numbersTrue, label_directionDOWN, ) self.play(Create(axes)) # 甲和乙的点 dot1 Dot(colorRED, radius0.2) dot2 Dot(colorBLUE, radius0.2) # 初始放置 dot1.move_to(axes.number_to_point(pos1_func(0))) dot2.move_to(axes.number_to_point(pos2_func(0))) self.add(dot1, dot2) # 标签 label1 Text(甲, colorRED).next_to(dot1, UP * 2) label2 Text(乙, colorBLUE).next_to(dot2, UP * 2) self.add(label1, label2) # 轨迹虚线预留 trace1 TracedPath(dot1.get_center, stroke_colorRED, stroke_width2) trace2 TracedPath(dot2.get_center, stroke_colorBLUE, stroke_width2) self.add(trace1, trace2) # 相遇点标记先隐藏等追到时再显示 meet_dot Dot(pointaxes.number_to_point(meet_x), colorYELLOW) meet_label Text(f相遇点: {meet_x:.2f}, font_size24, colorYELLOW) meet_label.next_to(meet_dot, UP * 1.5) # 动态更新的时间显示 time_text MathTex(t0.0).shift(UL * 2) self.add(time_text) # 追击动画 total_time float(t_meet) 2 # 多跑2秒 def update_dots(mob, alpha): # alpha 从0到1对应时间从0到total_time t_now alpha * total_time dot1.move_to(axes.number_to_point(pos1_func(t_now))) dot2.move_to(axes.number_to_point(pos2_func(t_now))) # 更新标签位置 label1.next_to(dot1, UP * 2) label2.next_to(dot2, UP * 2) # 更新时间显示 time_text.become(MathTex(ft{t_now:.1f}).shift(UL * 2)) # 判断是否到达相遇点 if t_now float(t_meet): self.add(meet_dot, meet_label) # 显示相遇标记 self.play( UpdateFromAlphaFunc( VGroup(dot1, dot2, label1, label2, time_text), update_dots, run_timetotal_time, rate_funclinear, ) ) self.wait(1)

相关新闻

原型驱动可解释AI:让模型决策像人类一样可追溯

原型驱动可解释AI:让模型决策像人类一样可追溯

1. 什么是原型驱动的可解释AI:从“黑箱决策”到“案例推理”的范式迁移你有没有遇到过这样的场景:一个医疗影像AI系统判定患者肺部CT存在恶性结节,准确率高达98.7%,但当医生追问“它凭什么这么判断”时,模型只能输出一…

2026/6/29 16:40:33阅读更多 →
Paperclip - 多Agent编排管理平台详细介绍

Paperclip - 多Agent编排管理平台详细介绍

Paperclip — 多 Agent 编排管理平台详细介绍 一、产品概述 Paperclip 是开源的多 Agent 组织化管理平台,官方 slogan 为 「open-source orchestrator for zero-human companies」。它管的是组织和治理,已经不是"写代码工具"了。 它可以独立部…

2026/6/29 16:40:33阅读更多 →
KingbaseES数据库空间管理实战:精准掌控库与表的数据体量

KingbaseES数据库空间管理实战:精准掌控库与表的数据体量

1. KingbaseES数据库空间管理的重要性 作为一名数据库管理员,我经常遇到这样的场景:系统突然报警磁盘空间不足,业务部门抱怨查询变慢,而老板则要求你立刻给出解决方案。这时候如果对数据库的空间使用情况没有清晰掌握,…

2026/6/29 16:40:33阅读更多 →
FREE!ship Plus:开源船舶设计软件的终极完全指南

FREE!ship Plus:开源船舶设计软件的终极完全指南

FREE!ship Plus:开源船舶设计软件的终极完全指南 【免费下载链接】freeship-plus-in-lazarus FreeShip Plus in Lazarus 项目地址: https://gitcode.com/gh_mirrors/fr/freeship-plus-in-lazarus FREE!ship Plus 是一款基于 Lazarus/Free Pascal 开发的专业级…

2026/6/29 17:45:41阅读更多 →
天辛大师浅谈AI时代的作家培养记,哲学青年的闪转腾挪

天辛大师浅谈AI时代的作家培养记,哲学青年的闪转腾挪

约束不一定是坏事。思想艺术来说,最有催生力的莫过约束。唐代的五言律诗,格律那么严谨,反而写出最动人的诗。竹林武术,在狭窄凹凸的丛林地上,发展出动作优美的近身格斗。形式和限制,反而催生创造。所以别抱…

2026/6/29 17:45:41阅读更多 →
如何通过5个步骤高效掌握M3U8视频下载的完整解决方案

如何通过5个步骤高效掌握M3U8视频下载的完整解决方案

如何通过5个步骤高效掌握M3U8视频下载的完整解决方案 【免费下载链接】m3u8-downloader 一个M3U8 视频下载(M3U8 downloader)工具。跨平台: 提供windows、linux、mac三大平台可执行文件,方便直接使用。 项目地址: https://gitcode.com/gh_mirrors/m3u8d/m3u8-downloader …

2026/6/29 17:45:41阅读更多 →
MSPM0 ADC FIFO模式与事件管理:数据缓冲与高效传输实战解析

MSPM0 ADC FIFO模式与事件管理:数据缓冲与高效传输实战解析

1. MSPM0 ADC FIFO模式与事件管理:从数据缓冲到高效传输的实战解析在嵌入式数据采集系统里,ADC(模数转换器)的角色就像是系统的“感官”,负责将外部世界的连续模拟信号(比如温度、压力、声音)转…

2026/6/29 17:45:41阅读更多 →
攻克贝尔吉比特G-120W-B光猫:从Telnet到Crontab的自动化运维实战

攻克贝尔吉比特G-120W-B光猫:从Telnet到Crontab的自动化运维实战

1. 破解贝尔吉比特G-120W-B光猫的Telnet入口 家里那台2017年的贝尔吉比特G-120W-B光猫最近总是莫名其妙卡顿,刷个视频都要转圈半天。作为技术宅,我决定给它来个"大保健"——设置自动重启功能。这个看似简单的需求,却让我在嵌入式L…

2026/6/29 17:45:41阅读更多 →
规避 AI 转型各类套路,启智济南本土企业专注实效落地

规避 AI 转型各类套路,启智济南本土企业专注实效落地

近几年 AI 线上平台乱象频发:夸大流量收益、售后失联、功能与宣传严重不符,不少济南实体商家投入资金后一无所获。启智(济南)人工智能科技深耕本地实体数字化多年,经历 AI 行业多轮迭代,打造一套透明、可核…

2026/6/29 17:40:40阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/29 3:27:55阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/29 2:19:08阅读更多 →
如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南

如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南

如何在3秒内从普通图片生成专业级法线贴图:DeepBump的终极指南 【免费下载链接】DeepBump Normal & height maps generation from single pictures 项目地址: https://gitcode.com/gh_mirrors/de/DeepBump 还在为3D建模中的纹理制作而烦恼吗?…

2026/6/29 0:01:47阅读更多 →
OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单!

OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单!

OCAuxiliaryTools:终极OpenCore配置工具,让黑苹果安装从未如此简单! 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCA…

2026/6/29 0:01:47阅读更多 →
终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像

终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像

终极Windows 11精简指南:使用tiny11builder快速创建纯净系统镜像 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 你是否厌倦了Windows 11系统自带的20…

2026/6/29 0:01:47阅读更多 →