• 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);
        }
    }
  • 相关阅读:
    springcloud入门案例
    springcloud搭建eureka服务
    nginx配置反向代理服务器
    Nginx配置http服务器
    Bootstrap响应式布局介绍
    Node.js中间件的使用
    Node.js服务器创建和使用
    Nodejs模块使用
    Nodejs模块介绍
    NodeJS的概述
  • 原文地址:https://www.cnblogs.com/AmoryWang-JavaSunny/p/6602485.html
Copyright © 2020-2023  润新知