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

Java 物理模擬:自由落體反彈問題(100米高度,10次落地)

     編輯:Java 相關知識

問題描述

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

物理過程建模

  • 第 1 次下落:100m
  • 第 1 次反彈:50m 上升 + 50m 下落 = 100m
  • 第 2 次反彈:25m 上升 + 25m 下落 = 50m
  • ...
  • 第 10 次落地 = 前 9 次完整往返 + 第 10 次下落

代碼實現


public class FreeFall {
    public static void main(String[] args) {
        double total = 0; // 總路程
        double h = 100;   // 當前高度
        for (int i = 1; i <= 10; i++) {
            total += h;      // 下落
            h /= 2;          // 反彈高度
            if (i < 10) total += h; // 非最後一次需加上升
        }
        System.out.println("第10次落地總路程: " + total); // 299.609375
        System.out.println("第10次反彈高度: " + h);        // 0.09765625
    }
}

數學公式驗證

總路程 = 100 + 2 * 100 * (1/2 + 1/4 + ... + 1/512) - 100/1024 (等比數列求和)

反彈高度 = 100 * (1/2)^10 = 100/1024

擴展

  • 引入彈性係數 e 替代固定 1/2
  • 考慮空氣阻力、能量損耗模型
  • 動畫可視化:JavaFX / Processing 繪製軌跡
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved