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

如何在Julia中使用Plots正确绘制带箭头的解曲线?代码问题排查

问题解决:动态系统解曲线的箭头与螺旋显示问题

代码问题分析与修正

你的代码存在两个核心问题,导致箭头显示错误、螺旋曲线未呈现:

1. 箭头参数使用错误

Plots.jl中plot函数的arrow=:closed只会在整条曲线的终点添加箭头,而非沿曲线标注指向原点的运动方向。要显示符合需求的方向箭头,需要结合速度向量采样绘制。

2. 坐标轴范围限制导致螺旋被截断

你设置的xlims=(-0.1,1)和ylims=(-0.1,0.21)范围过窄,当t增大时,exp(-2t)快速衰减,曲线的螺旋收缩部分会被坐标轴范围截断,无法完整呈现。

修正后的代码

using MTH229, ForwardDiff, Plots, LaTeXStrings, SymPy
gr()

t = range(0, stop=21, length=10000)
x = @. exp(-2t)*cos(t)
y = @. exp(-2t)*sin(t)

# 绘制基础曲线,调整坐标轴范围完整展示螺旋
p = plot(x, y, label=L"x(t)", xlims=(-1,1), ylims=(-1,1), linewidth=1.5)

# 采样点绘制运动方向箭头
sample_t = range(0, stop=10, length=15)
sample_x = @. exp(-2sample_t)*cos(sample_t)
sample_y = @. exp(-2sample_t)*sin(sample_t)
# 计算速度向量(解的导数)作为箭头方向
dx_dt = @. -2exp(-2sample_t)*cos(sample_t) - exp(-2sample_t)*sin(sample_t)
dy_dt = @. -2exp(-2sample_t)*sin(sample_t) + exp(-2sample_t)*cos(sample_t)
# 缩放箭头长度避免遮挡曲线
scale = 0.05
quiver!(p, sample_x, sample_y, quiver=(scale*dx_dt, scale*dy_dt), arrow=:closed, label="运动方向")

display(p)

修正说明

  • 调整坐标轴范围为(-1,1),完整展示曲线螺旋收缩至原点的过程
  • 使用quiver!函数基于解的导数(速度向量)绘制箭头,准确指向运动方向(原点)
  • 对箭头向量做缩放处理,避免箭头过大干扰曲线展示

内容的提问来源于stack exchange,提问作者Freya the Goddess

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:50:25