首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

經典物理建模:球體自由落體彈跳問題的 C 語言計算

     編輯:關於C

問題描述

球從 100 米高度自由下落,每次落地反彈回原高度一半,再落下。求第 10 次落地時,球總共經過的路程?第 10 次反彈高度?

物理過程建模

  • 第 1 次落地:下落 100m
  • 第 1 次反彈:上升 50m,下落 50m
  • 第 2 次反彈:上升 25m,下落 25m
  • ……
  • 第 10 次落地:下落 h

總路程 = 100 + 2*(50+25+...+第9次反彈高度) + 第10次下落高度

C 語言實現

#include <stdio.h>

int main(void) {
    double height = 100.0;
    double total = height;  // 第一次下落
    for (int i = 1; i <= 10; ++i) {
        height /= 2;           // 反彈高度
        if (i < 10) total += 2 * height;  // 上升+下落
        else total += height;             // 第10次只算下落
    }
    printf("總路程: %.2f 米\n", total);
    printf("第10次反彈高度: %.2f 米\n", height);
    return 0;
}

通用公式

總路程 = H + 2*H*(1 - (1/2)^9) = H * (3 - (1/2)^8)
第 n 次反彈高度 = H / 2^n

擴展:任意彈性系數


double bounce_total(double H, double restitution, int n) {
    double total = H, h = H;
    for (int i = 1; i <= n; ++i) {
        h *= restitution;
        total += (i < n) ? 2*h : h;
    }
    return total;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved