Airthmetic_Approching
生活随笔
收集整理的這篇文章主要介紹了
Airthmetic_Approching
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天上數學建模的時候了解到的兩車相遇的問題,還是挺有意思的,就是不要想的太深,就想些表面上的很容易就算出來的
問題大概闡述 :相距有100公里的兩輛車,分別記為紅和綠,紅車以10公里/h的速度往右行駛,綠車以8公里/h的速度往左行駛,現在有一個摩托車來實時觀測這輛車的距離,在這兩車之間往返行駛,速度是60公里/h,問題是當兩車之間的距離小于0.2公里的時候,就默認相遇,并求出摩托車來回了多少趟?
看起來的一個小學生問題,但是很容易想多,這個時候其實畫畫圖想想還是比較好的,以后再遇到這類似的問題就直接套模板了
注意精度問題
package ApproachingQuestion;
import org.junit.Test;
/*
* 問題大概闡述 :相距有100公里的兩輛車,分別記為紅和綠,紅車以10公里/h的速度往右行駛,綠車以8公里/h的速度往左行駛,現在有一個摩托車來實時觀測這輛車的距離,在這兩車之間往返行駛,速度是60公里/h,
* 問題是當兩車之間的距離小于0.2公里的時候,就默認相遇,并求出摩托車來回了多少趟?
* */
/*
* 主要的解題思路就是 : 其實每一趟就是一次距離的縮短,那怎么來記錄當前的距離,肯定就是要想到時間的問題了,那時間又要怎么算,那就是小學時就學過的相遇問題求時間了,也就是每一次縮短的距離可以看作一幀,每次都要改變相應的距離和時間值,
* 這里還有注意到的是,摩托車往返時的相對速度是不一樣的,則可以用一個正反變量來不斷改變每一趟的速度來回
* */
public class Approach {
double Aspeed = 10;
double Bspeed = 8;
double motor = 60;
double distance = 100;
double ALocation = 0; //這里最好是就按照題意來表示他們所在的位置,不要都設置成0來算距離
double BLocation = 100;
int count = 0; // 來記錄摩托車與兩車相遇的次數
int flag = 1; // 來標志每一趟后要改變速度的標識
double t= 0;
@Test
public void RoundTrip(){
while((BLocation - ALocation) > 0.2){ // 最后相距變成0.2就相遇了
System.out.println("BLocation"+BLocation);
System.out.println("ALocation"+ALocation);
if(flag == 1){ // motor先從A開往B
// 相遇時間
t = (BLocation - ALocation) * 0.1/ (motor+Bspeed) ;
}else{
t = (BLocation - ALocation) * 0.1 / (motor+Aspeed);
}
System.out.println("t"+t);
// 更新距離
BLocation = BLocation - Bspeed*t;
ALocation = ALocation + Aspeed*t;
// motor 反向
flag = -flag;
count ++;
}
System.out.println(count);
//return count;
}
public static void main(String[] args) {
///int c = new Approach().RoundTrip();
//System.out.println(c);
}
}
總結
以上是生活随笔為你收集整理的Airthmetic_Approching的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《部落冲突》开发商前负责人Jim Yan
- 下一篇: THUPCCTSAPIO2019:Far