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

MATLAB自由下落物体每秒速度计算函数开发问题

MATLAB自由下落速度计算函数修复方案

原代码核心问题

  • 落地时间计算错误:使用linspace(0,h)生成的高度数组计算t,得到的是一组对应不同高度的时间值,而非物体从h高度落地的总时间,导致后续判断和循环逻辑完全失效。
  • 循环逻辑混乱:for time = n+1仅执行一次,内部while循环因用数组与标量比较,条件恒成立陷入死循环,只能输出第一个速度值。
  • 未按要求返回结果:仅用disp打印数据,没有返回符合要求的速度数组,也不符合函数的返回值设计。

修复后的完整代码

function v = freefall(h)
    g = 9.8; % 重力加速度
    t_total = sqrt(2*h/g); % 计算总落地时间
    
    if t_total <= 1
        % 1秒内落地,返回落地时刻的速度
        v = g * t_total;
    else
        % 生成落地前所有整数秒的时间点(1s,2s,...,floor(t_total)s)
        time_points = 1:floor(t_total);
        % 计算每个时间点的速度
        v = g .* time_points;
    end
end

代码说明

  1. 总落地时间计算:用公式t_total = sqrt(2h/g)直接计算物体从高度h自由下落到地面的总时间,这是后续逻辑的核心依据。
  2. 1秒内落地的情况:直接用v = g*t_total计算落地速度(等价于sqrt(2gh),两种写法均可)。
  3. 超过1秒落地的情况:
    • 用1:floor(t_total)生成所有落地前的整数秒时间点,比如h=80米时,t_total≈4.04,floor(t_total)=4,时间点为[1,2,3,4]。
    • 每个时间点的速度用v = g*time计算,得到的数组[9.8,19.6,29.4,39.2]与示例要求完全一致。

测试验证

调用freefall(80),返回结果为[9.8000, 19.6000, 29.4000, 39.2000],符合需求;调用freefall(4),t_total≈0.9035,返回8.8543,即落地时刻的速度。

内容的提问来源于stack exchange,提问作者Silverlik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:31:34