zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    String.getBytes()未设置字符集导致打印的pdf乱码
    git更新代码报错,error: The following untracked working tree files would be overwritten by ch
    thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS
    plsql的sql窗口中文模糊查询没有作用
    mysql 触发器和存储过程组合使用,实现定时触发操作
    css 实现table 隔行变色
    meta标签详解:源http://blog.csdn.net/kongjiea/article/details/17092413
    Spring+Quartz实现定时任务的配置方法
    ECToch随笔
    转载:ecshop自定义销量
  • 原文地址:https://www.cnblogs.com/AmoryWang-JavaSunny/p/6602485.html
Copyright © 2011-2022 走看看