Matlab绘制质点圆周运动轨迹及速度向量的代码问题求助
圆周运动轨迹绘制问题修复
需求说明
- 编写
dibujaMUC.m函数,根据角速度ω和旋转半径r绘制质点的圆周运动轨迹,对应笛卡尔方程:
( x = r \cdot \cos(\omega \cdot t) ),( y = r \cdot \sin(\omega \cdot t) ) - 使用
quiver命令为轨迹各点添加速度向量,速度方程:
( v_x = -r\omega \cdot \sin(\omega \cdot t) ),( v_y = r\omega \cdot \cos(\omega \cdot t) )
尝试代码
第一部分(仅绘制轨迹)
function dibujaMUC(w,r) t=1:(2*pi)/(w); y=r.*sin(w.*t); x=r.*cos(w*t); plot(x,y) >> dibujaMUC(0.1,2)
第二部分(添加速度向量)
function dibujaMUC(w,r) t=1:(2*pi)/(w); y=r.*sin(w.*t); x=r.*cos(w*t); plot(x,y) hold on vx=-r.*w.*sin(w.*t); vy=r.*w.*cos(w.*t); quiver(vx,vy) >> dibujaMUC(0.1,2)
问题点
- 圆周轨迹无法完全闭合
- 速度向量显示异常(起点未对应轨迹质点位置,不符合物理预期)
修复方案
1. 轨迹不闭合的原因与修复
原代码中t的取值逻辑错误:
- 起始点从1开始,漏掉了t=0的初始位置
- 用
(2*pi)/w作为步长,会导致采样点数量极少且无法覆盖完整周期
修改为用linspace生成均匀采样点,保证覆盖完整运动周期:
t = linspace(0, 2*pi/w, 100); % 100个采样点可保证轨迹平滑闭合
2. 速度向量异常的原因与修复
quiver函数的正确调用格式是quiver(x,y,u,v),其中x,y是向量起点坐标,u,v是向量分量。原代码只传入vx,vy,导致所有向量起点默认在原点附近。
修正后调用方式:
quiver(x, y, vx, vy, 0.5); % 0.5是向量缩放比例,可按需调整
完整修复代码
function dibujaMUC(w,r) % 生成覆盖完整周期的时间采样点 t = linspace(0, 2*pi/w, 100); % 计算轨迹坐标 x = r .* cos(w .* t); y = r .* sin(w .* t); % 绘制轨迹 plot(x, y, 'LineWidth', 1.5); hold on; % 计算速度向量分量 vx = -r .* w .* sin(w .* t); vy = r .* w .* cos(w .* t); % 绘制速度向量(起点为轨迹对应点,缩放比例0.5) quiver(x, y, vx, vy, 0.5, 'Color', 'r'); % 设置坐标轴等比例,避免圆变形 axis equal; xlabel('x 坐标'); ylabel('y 坐标'); title('圆周运动轨迹及速度向量'); hold off; end
额外优化说明
axis equal确保坐标轴比例一致,圆周不会被拉伸变形- 增加线条宽度和向量颜色,提升可视化清晰度
- 采样点数量设为100,平衡轨迹平滑度与计算效率
内容的提问来源于stack exchange,提问作者Acedium 20
相关产品推荐
相关产品推荐

