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

C語言物理模擬:自由落體彈跳球總路程與第n次彈高計算

     編輯:關於C

物理模型

高度 H,彈性係數 k=0.5 (彈回一半)。

  • 第 1 次落地:路程 H
  • 第 i 次彈起:高度 H * k^i
  • 第 i+1 次落地:增加路程 2 * H * k^i (上+下)

通用函數

#include 

float total_distance(float h, int n) {
    float sum = h; // 第一次落下
    float cur = h * 0.5; // 第一次彈起高度
    for (int i = 1; i < n; i++) {
        sum += 2 * cur; // 彈起 + 落下
        cur *= 0.5;
    }
    return sum;
}

float nth_rebound_height(float h, int n) {
    for (int i = 0; i < n; i++) h *= 0.5;
    return h;
}

int main() {
    int n;
    printf("請輸入次數: ");
    scanf("%d", &n);
    printf("總路程: %.4f\n第%d次彈高: %.4f\n", total_distance(100, n), n, nth_rebound_height(100, n));
    return 0;
}
// n=10 -> 總路程 299.6094, 彈高 0.0977

數學閉式解

總路程 S_n = H + 2Hk(1 - k^{n-1})/(1-k) (等比數列求和)。
第 n 次彈高 H * k^n。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved