资讯动态

圆锥曲线 Python 可视化 45 分钟实践指南:三个滑块做出交互演示

发布时间:2026/9/20 20:51:16 来源:尧图企业网站定制
圆锥曲线 Python 可视化 45 分钟实践指南三个滑块做出交互演示【免费下载链接】Book3_Elements-of-MathematicsBook_3_《数学要素》 | 鸢尾花书从加减乘除到机器学习上架欢迎继续纠错纠错多的同学还会有赠书项目地址: https://gitcode.com/GitHub_Trending/bo/Book3_Elements-of-Mathematics跑通开源项目《数学要素》(Book3_Elements-of-Mathematics) 后你在浏览器里拖动滑块椭圆会实时地倾斜、变扁、变圆。本文用该项目的第 9 章代码带你走通圆锥曲线 Python 可视化与交互演示的完整流程先出一张静态图再升级成可拖动的网页。需要的数学只有一个区分椭圆、抛物线、双曲线的数字。安装依赖命令与克隆仓库先把环境跑起来这一节能让你的环境不再卡在安装步骤上后面的代码才能只在数学上出错。一共四个库numpy 做数值计算matplotlib 负责画图streamlit 生成网页jupyter 用来打开 Notebook。git clone https://gitcode.com/GitHub_Trending/bo/Book3_Elements-of-Mathematics cd Book3_Elements-of-Mathematics pip install numpy matplotlib streamlit jupyter打开文件有两种方式终端执行jupyter notebook然后在浏览器里选第 9 章的 Notebook 逐个运行或者用 VS Code 直接点开 .ipynb 文件。Streamlit 应用在后面一节用一条命令启动。三条命令全部执行完毕且没有报错就可以进入下一节。离心率与曲线类型对照表一把统一的尺子这一节能给你一张读图用的表。圆锥曲线是平面切圆锥得到的曲线主要有椭圆、抛物线、双曲线三类圆算椭圆的特例。判断一条曲线属于哪一类看离心率 eEccentricity衡量它偏离正圆的程度就够了e 的取值曲线类型直观形状e 0圆椭圆的特例0 e 1椭圆e 越大越扁长e 1抛物线向一个方向张开e 1双曲线左右两支向外张开椭圆标准方程写作$$\frac{x^2}{a^2} \frac{y^2}{b^2} 1$$a、b 分别是半长轴和半短轴a 与 b 相等时变成圆e 回到 0。记牢这张表后面图里每一道颜色深浅不同的曲线你都能说出它的家底。三步运行圆锥曲线 Notebook出第一张静态图这一节能让你在 5 分钟内看到项目的标志性画面31 条曲线挤在同一张图里颜色从红到蓝渐变形状从圆一路演化到椭圆再到双曲线。对应文件是 Book3_Ch09_Python_Codes/Bk3_Ch09_01.ipynb。第一步在 Jupyter 里打开它点 Run All。能直接出图就跳到第三步出不了再看第二步的核心代码。x np.linspace(-4, 4, num201) y np.linspace(-4, 4, num201) xx, yy np.meshgrid(x, y) # 生成 201×201 的坐标网格 e_array np.linspace(0, 3, num31) # 31 个 e 值从 0 均匀排到 3 for i, e in enumerate(e_array): f yy**2 - (e**2 - 1) * xx**2 - 2 * xx # 圆锥曲线方程 plt.contour(xx, yy, f, levels[0]) # 描出 f 等于 0 的曲线三个设计点值得记住。一是为什么用网格contour 不是逐点连线而是扫描每个网格点、挑出函数值恰好为 0 的位置曲线就在那里所以必须有 meshgrid。二是为什么一个式子加一个循环项目刻意让三类曲线共用同一表达式只改 e于是同一张图里直接看得到从椭圆经抛物线到双曲线的连续变形这就是圆锥曲线的统一性。三是 levels[0] 的含义零水平等高线就是满足方程的点集也就是曲线本体。第三步改一个数字验证理解把 31 改成 11 再运行曲线变稀疏但每条的形状没变只是色带变粗。运行完你应该看到窗口里出现一组由椭圆渐变到双曲线的曲线。一键启动 Streamlit 应用拖动滑块操控椭圆这一节能把看图变成玩图。项目里的 Streamlit_Bk3_Ch09_03.py 会在浏览器画一个虚线矩形和一组永远与矩形四边相切的内接椭圆。左侧三个滑块分别控制 m矩形宽、n矩形高、rho倾斜度rho 为 0 时椭圆正放往两边拖椭圆逐渐歪过去。在终端执行下面这条命令Streamlit 会自动在浏览器打开本地页面默认 http://localhost:8501streamlit run Book3_Ch09_Python_Codes/Streamlit_Bk3_Ch09_03.py核心逻辑压成这几行with st.sidebar: m st.slider(m, 1.0, 2.0, value1.5, step0.1) n st.slider(n, 1.0, 2.0, value1.5, step0.1) rho st.slider(rho, -1.0, 1.0, value0.0, step0.05) ellipse ((xx/m)**2 - 2*rho*(xx/m)*(yy/n) (yy/n)**2) / (1 - rho**2) plt.contour(xx, yy, ellipse, levels[1], colors[b]) st.pyplot(fig)交互的关键在 Streamlit 的运行机制每拖动一次滑块整个脚本就从头再执行一遍用新的 m、n、rho 重算椭圆方程并重画曲线看起来才像实时响应。xx、yy 网格的生成方式和 Notebook 里完全一样。启动后你应该看到虚线矩形内嵌着一个蓝色椭圆拖 rho 时它左右倾斜改 m、n 时矩形比例同步变化。常见问题 FAQ终端提示 Port 8501 is already in use上次启动的 Streamlit 进程还占着端口。到那个终端按 CtrlC 结束它或换个端口启动在命令末尾追加--server.port 8502。浏览器里图形空白只有坐标轴多半是曲线算出来了但落在显示范围外。检查脚本里的 set_xlim、set_ylim先临时放宽到 -5 到 5 确认曲线存在再收紧范围。图中中文显示为方框系统缺中文字体。Linux 可安装fonts-noto-cjk或把图内标签临时换成英文。轮廓发虚、边缘有折角提高网格分辨率把 num201 改成 401曲线立刻平滑代价是运行时间略长。升级库后 matplotlib 报版本错误通常是 numpy 与 matplotlib 版本错配执行pip install -U numpy matplotlib一起升级再重启内核。圆锥曲线只在课本里出现吗不止。二维高斯分布的等高线就是椭圆马氏距离圈出的正常范围也是椭圆项目第 19 章优化入门还会反复用到这些形状可以之后回来看。资源清单与动手挑战 ️项目内建议按这个顺序读正文Book3_Ch08_圆锥曲线__数学要素__从加减乘除到机器学习.pdf 建立几何直觉Book3_Ch09_深入圆锥曲线__数学要素__从加减乘除到机器学习.pdf 深入参数与性质NotebookBk3_Ch09_01.ipynb 离心率渐变、Bk3_Ch09_02.ipynb 随 rho 变形的椭圆、Bk3_Ch09_03.ipynb 内切矩形的椭圆、Bk3_Ch09_04.ipynb 超椭圆指数越大越接近方形、Bk3_Ch09_05.ipynb 圆锥曲线一般式交互应用Streamlit_Bk3_Ch09_03.py、Streamlit_Bk3_Ch09_04.py项目说明README.md动手挑战把 Bk3_Ch09_01.ipynb 在本地复制一份仓库本身保持只读将np.linspace(0, 3, num31)改成np.linspace(0, 1.5, num16)后运行你会发现图里只剩椭圆、最远一条抛物线说说原因再把 num 改回 3只画 3 条曲线判断各自属于哪一类。能准确说出三条曲线对应的 e 区间这条线就算彻底跑通了。【免费下载链接】Book3_Elements-of-MathematicsBook_3_《数学要素》 | 鸢尾花书从加减乘除到机器学习上架欢迎继续纠错纠错多的同学还会有赠书项目地址: https://gitcode.com/GitHub_Trending/bo/Book3_Elements-of-Mathematics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价