zoukankan      html  css  js  c++  java
  • 狼追兔子问题C模拟解

    说,一只兔子在O点处,它的洞穴在正北20m的B点处,一只狼位于兔子正东33米的A点处,模拟如下追逐问题:狼以一倍于兔子的速度紧盯兔子追击,问兔子到达洞口前是否会被狼逮住?

    网上很多人说能被追上,包括类似的一题距离兔子100码,洞在60码处的。那么究竟能不能呢?

    通过计算机模拟,不用解算微分方程,就可以找到答案。

    计算机要模拟,基本上就是用第推算法,给出初始条件,按公式计算下一步,如此往复直到一定条件终止计算。

    模拟追逐问题,就把时间切片来看,这一步是什么样下一步又是如何,这里把速度可以转换为步进距离来看。

    假设平面坐标系上,兔子位于原点O,正北为y轴正向,狼从I象限追进。

    #include <stdio.h>
    #include <math.h>
    
    double Td,Tx,Ty,Ld,Lx,Ly;
    
    double dist()
    {
    	return sqrt((Tx-Lx)*(Tx-Lx)+(Ty-Ly)*(Ty-Ly));
    }
    
    //狼位置变化,指向兔子的线段上跑动Ld距离,相应ldx,ldy分量
    double NextL()
    {
    	double dx=fabs(Tx-Lx);
    	double dy=fabs(Ty-Ly);
    	double k,dk;
    	int usek=1;
    	double ldx;
    	double ldy;
    	//
    	if(dx > 0.00000000001 )
    	{
    		k=dy/dx;
    	}else
    	{
    		usek=0;
    		dk=dx/dy;
    	}
    	//
    	if(usek==1)
    	{
    		ldx=sqrt((Ld*Ld)/(k*k+1));
    		ldy=k*ldx;
    	}else
    	{
    		ldy=sqrt((Ld*Ld)/(dk*dk+1));
    		ldx=dk*ldy;
    	}
    	//仅限I象限非震荡追进
    	Lx=Lx-ldx;
    	Ly=Ly+ldy;
    }
    
    //兔子位置变化
    double NextT()
    {
    	Tx=Tx;
    	Ty=Ty+Td;
    }
    
    void loop()
    {
    //坐标建立,初始化
     Tx=0.0;
     Ty=0.0;
     Lx=33.0;
     Ly=0.0;
    //兔子步进距离
     Td=0.1;
    //狼步进距离
     Ld=Td*2.0;
    	while( dist() >= Td )
    	{
    		NextL();
    		NextT();
    		printf("兔子:(%lf,%lf) 狼:(%lf,%lf)
    ",Tx,Ty,Lx,Ly);
    	}
    	//
    }
    
    int main(int argc,char** argv)
    {
    	loop();
    	return 0;
    }
    
    

    这里,NextT给出了兔子的位置第推公式,NextL给出了狼的位置第推公式,在循环时因为狼是根据兔子的位子来做下一步推算的所以要先于兔子位置变换来做移动(反过来的话也可,就是说狼还能稍稍预测兔子的动向,如果狼能预测判断兔子路径完全跑直线可追上兔子无疑,然而事实一般都是紧追不舍的多。)

    运行结果

    兔子:(0.000000,0.100000) 狼:(32.800000,0.000000)
    兔子:(0.000000,0.200000) 狼:(32.600001,0.000610)
    兔子:(0.000000,0.300000) 狼:(32.400005,0.001833)
    兔子:(0.000000,0.400000) 狼:(32.200013,0.003673)
    兔子:(0.000000,0.500000) 狼:(32.000028,0.006135)
    兔子:(0.000000,0.600000) 狼:(31.800052,0.009221)
    兔子:(0.000000,0.700000) 狼:(31.600087,0.012936)
    兔子:(0.000000,0.800000) 狼:(31.400134,0.017284)
    兔子:(0.000000,0.900000) 狼:(31.200196,0.022267)
    兔子:(0.000000,1.000000) 狼:(31.000275,0.027892)
    兔子:(0.000000,1.100000) 狼:(30.800373,0.034160)
    兔子:(0.000000,1.200000) 狼:(30.600493,0.041077)
    兔子:(0.000000,1.300000) 狼:(30.400636,0.048646)
    兔子:(0.000000,1.400000) 狼:(30.200805,0.056872)
    兔子:(0.000000,1.500000) 狼:(30.001003,0.065757)
    兔子:(0.000000,1.600000) 狼:(29.801231,0.075308)
    兔子:(0.000000,1.700000) 狼:(29.601492,0.085527)
    兔子:(0.000000,1.800000) 狼:(29.401789,0.096419)
    兔子:(0.000000,1.900000) 狼:(29.202124,0.107988)
    兔子:(0.000000,2.000000) 狼:(29.002500,0.120238)
    兔子:(0.000000,2.100000) 狼:(28.802918,0.133173)
    兔子:(0.000000,2.200000) 狼:(28.603383,0.146799)
    兔子:(0.000000,2.300000) 狼:(28.403896,0.161118)
    兔子:(0.000000,2.400000) 狼:(28.204461,0.176136)
    兔子:(0.000000,2.500000) 狼:(28.005080,0.191857)
    兔子:(0.000000,2.600000) 狼:(27.805756,0.208285)
    兔子:(0.000000,2.700000) 狼:(27.606491,0.225425)
    兔子:(0.000000,2.800000) 狼:(27.407290,0.243281)
    兔子:(0.000000,2.900000) 狼:(27.208155,0.261857)
    兔子:(0.000000,3.000000) 狼:(27.009088,0.281159)
    兔子:(0.000000,3.100000) 狼:(26.810094,0.301191)
    兔子:(0.000000,3.200000) 狼:(26.611175,0.321957)
    兔子:(0.000000,3.300000) 狼:(26.412334,0.343462)
    兔子:(0.000000,3.400000) 狼:(26.213576,0.365710)
    兔子:(0.000000,3.500000) 狼:(26.014902,0.388707)
    兔子:(0.000000,3.600000) 狼:(25.816317,0.412457)
    兔子:(0.000000,3.700000) 狼:(25.617825,0.436965)
    兔子:(0.000000,3.800000) 狼:(25.419428,0.462236)
    兔子:(0.000000,3.900000) 狼:(25.221130,0.488274)
    兔子:(0.000000,4.000000) 狼:(25.022935,0.515084)
    兔子:(0.000000,4.100000) 狼:(24.824847,0.542671)
    兔子:(0.000000,4.200000) 狼:(24.626869,0.571041)
    兔子:(0.000000,4.300000) 狼:(24.429006,0.600198)
    兔子:(0.000000,4.400000) 狼:(24.231261,0.630146)
    兔子:(0.000000,4.500000) 狼:(24.033638,0.660892)
    兔子:(0.000000,4.600000) 狼:(23.836142,0.692440)
    兔子:(0.000000,4.700000) 狼:(23.638776,0.724795)
    兔子:(0.000000,4.800000) 狼:(23.441546,0.757962)
    兔子:(0.000000,4.900000) 狼:(23.244454,0.791947)
    兔子:(0.000000,5.000000) 狼:(23.047506,0.826754)
    兔子:(0.000000,5.100000) 狼:(22.850707,0.862389)
    兔子:(0.000000,5.200000) 狼:(22.654060,0.898857)
    兔子:(0.000000,5.300000) 狼:(22.457570,0.936162)
    兔子:(0.000000,5.400000) 狼:(22.261242,0.974312)
    兔子:(0.000000,5.500000) 狼:(22.065081,1.013310)
    兔子:(0.000000,5.600000) 狼:(21.869092,1.053162)
    兔子:(0.000000,5.700000) 狼:(21.673279,1.093874)
    兔子:(0.000000,5.800000) 狼:(21.477648,1.135451)
    兔子:(0.000000,5.900000) 狼:(21.282204,1.177897)
    兔子:(0.000000,6.000000) 狼:(21.086953,1.221220)
    兔子:(0.000000,6.100000) 狼:(20.891899,1.265423)
    兔子:(0.000000,6.200000) 狼:(20.697048,1.310514)
    兔子:(0.000000,6.300000) 狼:(20.502406,1.356496)
    兔子:(0.000000,6.400000) 狼:(20.307978,1.403376)
    兔子:(0.000000,6.500000) 狼:(20.113770,1.451160)
    兔子:(0.000000,6.600000) 狼:(19.919788,1.499852)
    兔子:(0.000000,6.700000) 狼:(19.726037,1.549459)
    兔子:(0.000000,6.800000) 狼:(19.532525,1.599985)
    兔子:(0.000000,6.900000) 狼:(19.339257,1.651438)
    兔子:(0.000000,7.000000) 狼:(19.146239,1.703822)
    兔子:(0.000000,7.100000) 狼:(18.953478,1.757143)
    兔子:(0.000000,7.200000) 狼:(18.760980,1.811407)
    兔子:(0.000000,7.300000) 狼:(18.568752,1.866619)
    兔子:(0.000000,7.400000) 狼:(18.376800,1.922786)
    兔子:(0.000000,7.500000) 狼:(18.185133,1.979913)
    兔子:(0.000000,7.600000) 狼:(17.993755,2.038005)
    兔子:(0.000000,7.700000) 狼:(17.802676,2.097069)
    兔子:(0.000000,7.800000) 狼:(17.611901,2.157110)
    兔子:(0.000000,7.900000) 狼:(17.421438,2.218135)
    兔子:(0.000000,8.000000) 狼:(17.231295,2.280149)
    兔子:(0.000000,8.100000) 狼:(17.041480,2.343157)
    兔子:(0.000000,8.200000) 狼:(16.851999,2.407166)
    兔子:(0.000000,8.300000) 狼:(16.662862,2.472182)
    兔子:(0.000000,8.400000) 狼:(16.474076,2.538210)
    兔子:(0.000000,8.500000) 狼:(16.285648,2.605256)
    兔子:(0.000000,8.600000) 狼:(16.097589,2.673326)
    兔子:(0.000000,8.700000) 狼:(15.909905,2.742425)
    兔子:(0.000000,8.800000) 狼:(15.722605,2.812561)
    兔子:(0.000000,8.900000) 狼:(15.535700,2.883738)
    兔子:(0.000000,9.000000) 狼:(15.349196,2.955962)
    兔子:(0.000000,9.100000) 狼:(15.163103,3.029240)
    兔子:(0.000000,9.200000) 狼:(14.977431,3.103576)
    兔子:(0.000000,9.300000) 狼:(14.792189,3.178977)
    兔子:(0.000000,9.400000) 狼:(14.607386,3.255449)
    兔子:(0.000000,9.500000) 狼:(14.423032,3.332997)
    兔子:(0.000000,9.600000) 狼:(14.239137,3.411627)
    兔子:(0.000000,9.700000) 狼:(14.055711,3.491344)
    兔子:(0.000000,9.800000) 狼:(13.872764,3.572155)
    兔子:(0.000000,9.900000) 狼:(13.690307,3.654065)
    兔子:(0.000000,10.000000) 狼:(13.508349,3.737080)
    兔子:(0.000000,10.100000) 狼:(13.326902,3.821204)
    兔子:(0.000000,10.200000) 狼:(13.145977,3.906445)
    兔子:(0.000000,10.300000) 狼:(12.965584,3.992807)
    兔子:(0.000000,10.400000) 狼:(12.785735,4.080296)
    兔子:(0.000000,10.500000) 狼:(12.606441,4.168917)
    兔子:(0.000000,10.600000) 狼:(12.427714,4.258675)
    兔子:(0.000000,10.700000) 狼:(12.249565,4.349577)
    兔子:(0.000000,10.800000) 狼:(12.072007,4.441627)
    兔子:(0.000000,10.900000) 狼:(11.895052,4.534830)
    兔子:(0.000000,11.000000) 狼:(11.718711,4.629191)
    兔子:(0.000000,11.100000) 狼:(11.542999,4.724716)
    兔子:(0.000000,11.200000) 狼:(11.367926,4.821410)
    兔子:(0.000000,11.300000) 狼:(11.193507,4.919277)
    兔子:(0.000000,11.400000) 狼:(11.019755,5.018323)
    兔子:(0.000000,11.500000) 狼:(10.846682,5.118552)
    兔子:(0.000000,11.600000) 狼:(10.674302,5.219968)
    兔子:(0.000000,11.700000) 狼:(10.502630,5.322577)
    兔子:(0.000000,11.800000) 狼:(10.331678,5.426382)
    兔子:(0.000000,11.900000) 狼:(10.161462,5.531389)
    兔子:(0.000000,12.000000) 狼:(9.991995,5.637601)
    兔子:(0.000000,12.100000) 狼:(9.823292,5.745022)
    兔子:(0.000000,12.200000) 狼:(9.655368,5.853657)
    兔子:(0.000000,12.300000) 狼:(9.488238,5.963509)
    兔子:(0.000000,12.400000) 狼:(9.321917,6.074583)
    兔子:(0.000000,12.500000) 狼:(9.156421,6.186881)
    兔子:(0.000000,12.600000) 狼:(8.991764,6.300408)
    兔子:(0.000000,12.700000) 狼:(8.827964,6.415166)
    兔子:(0.000000,12.800000) 狼:(8.665035,6.531158)
    兔子:(0.000000,12.900000) 狼:(8.502995,6.648389)
    兔子:(0.000000,13.000000) 狼:(8.341859,6.766859)
    兔子:(0.000000,13.100000) 狼:(8.181645,6.886573)
    兔子:(0.000000,13.200000) 狼:(8.022369,7.007533)
    兔子:(0.000000,13.300000) 狼:(7.864049,7.129740)
    兔子:(0.000000,13.400000) 狼:(7.706701,7.253198)
    兔子:(0.000000,13.500000) 狼:(7.550344,7.377907)
    兔子:(0.000000,13.600000) 狼:(7.394995,7.503870)
    兔子:(0.000000,13.700000) 狼:(7.240672,7.631088)
    兔子:(0.000000,13.800000) 狼:(7.087393,7.759561)
    兔子:(0.000000,13.900000) 狼:(6.935176,7.889292)
    兔子:(0.000000,14.000000) 狼:(6.784041,8.020281)
    兔子:(0.000000,14.100000) 狼:(6.634005,8.152529)
    兔子:(0.000000,14.200000) 狼:(6.485088,8.286034)
    兔子:(0.000000,14.300000) 狼:(6.337310,8.420799)
    兔子:(0.000000,14.400000) 狼:(6.190688,8.556821)
    兔子:(0.000000,14.500000) 狼:(6.045244,8.694101)
    兔子:(0.000000,14.600000) 狼:(5.900995,8.832638)
    兔子:(0.000000,14.700000) 狼:(5.757964,8.972431)
    兔子:(0.000000,14.800000) 狼:(5.616169,9.113478)
    兔子:(0.000000,14.900000) 狼:(5.475630,9.255776)
    兔子:(0.000000,15.000000) 狼:(5.336369,9.399326)
    兔子:(0.000000,15.100000) 狼:(5.198406,9.544122)
    兔子:(0.000000,15.200000) 狼:(5.061761,9.690164)
    兔子:(0.000000,15.300000) 狼:(4.926455,9.837447)
    兔子:(0.000000,15.400000) 狼:(4.792509,9.985968)
    兔子:(0.000000,15.500000) 狼:(4.659945,10.135724)
    兔子:(0.000000,15.600000) 狼:(4.528784,10.286710)
    兔子:(0.000000,15.700000) 狼:(4.399047,10.438921)
    兔子:(0.000000,15.800000) 狼:(4.270755,10.592353)
    兔子:(0.000000,15.900000) 狼:(4.143931,10.746999)
    兔子:(0.000000,16.000000) 狼:(4.018595,10.902855)
    兔子:(0.000000,16.100000) 狼:(3.894770,11.059913)
    兔子:(0.000000,16.200000) 狼:(3.772477,11.218168)
    兔子:(0.000000,16.300000) 狼:(3.651739,11.377612)
    兔子:(0.000000,16.400000) 狼:(3.532577,11.538237)
    兔子:(0.000000,16.500000) 狼:(3.415014,11.700035)
    兔子:(0.000000,16.600000) 狼:(3.299070,11.862999)
    兔子:(0.000000,16.700000) 狼:(3.184770,12.027119)
    兔子:(0.000000,16.800000) 狼:(3.072133,12.192386)
    兔子:(0.000000,16.900000) 狼:(2.961183,12.358789)
    兔子:(0.000000,17.000000) 狼:(2.851942,12.526319)
    兔子:(0.000000,17.100000) 狼:(2.744432,12.694965)
    兔子:(0.000000,17.200000) 狼:(2.638673,12.864716)
    兔子:(0.000000,17.300000) 狼:(2.534690,13.035559)
    兔子:(0.000000,17.400000) 狼:(2.432502,13.207482)
    兔子:(0.000000,17.500000) 狼:(2.332132,13.380473)
    兔子:(0.000000,17.600000) 狼:(2.233602,13.554519)
    兔子:(0.000000,17.700000) 狼:(2.136933,13.729605)
    兔子:(0.000000,17.800000) 狼:(2.042147,13.905717)
    兔子:(0.000000,17.900000) 狼:(1.949264,14.082841)
    兔子:(0.000000,18.000000) 狼:(1.858306,14.260960)
    兔子:(0.000000,18.100000) 狼:(1.769293,14.440060)
    兔子:(0.000000,18.200000) 狼:(1.682246,14.620124)
    兔子:(0.000000,18.300000) 狼:(1.597186,14.801134)
    兔子:(0.000000,18.400000) 狼:(1.514133,14.983074)
    兔子:(0.000000,18.500000) 狼:(1.433107,15.165926)
    兔子:(0.000000,18.600000) 狼:(1.354126,15.349671)
    兔子:(0.000000,18.700000) 狼:(1.277212,15.534289)
    兔子:(0.000000,18.800000) 狼:(1.202382,15.719763)
    兔子:(0.000000,18.900000) 狼:(1.129656,15.906072)
    兔子:(0.000000,19.000000) 狼:(1.059052,16.093195)
    兔子:(0.000000,19.100000) 狼:(0.990587,16.281111)
    兔子:(0.000000,19.200000) 狼:(0.924280,16.469800)
    兔子:(0.000000,19.300000) 狼:(0.860147,16.659239)
    兔子:(0.000000,19.400000) 狼:(0.798206,16.849405)
    兔子:(0.000000,19.500000) 狼:(0.738473,17.040277)
    兔子:(0.000000,19.600000) 狼:(0.680964,17.231830)
    兔子:(0.000000,19.700000) 狼:(0.625694,17.424041)
    兔子:(0.000000,19.800000) 狼:(0.572678,17.616887)
    兔子:(0.000000,19.900000) 狼:(0.521931,17.810341)
    兔子:(0.000000,20.000000) 狼:(0.473466,18.004380)
    兔子:(0.000000,20.100000) 狼:(0.427297,18.198979)
    兔子:(0.000000,20.200000) 狼:(0.383437,18.394110)
    兔子:(0.000000,20.300000) 狼:(0.341898,18.589749)
    兔子:(0.000000,20.400000) 狼:(0.302691,18.785868)
    兔子:(0.000000,20.500000) 狼:(0.265829,18.982442)
    兔子:(0.000000,20.600000) 狼:(0.231320,19.179442)
    兔子:(0.000000,20.700000) 狼:(0.199176,19.376842)
    兔子:(0.000000,20.800000) 狼:(0.169405,19.574614)
    兔子:(0.000000,20.900000) 狼:(0.142017,19.772730)
    兔子:(0.000000,21.000000) 狼:(0.117018,19.971161)
    兔子:(0.000000,21.100000) 狼:(0.094416,20.169880)
    兔子:(0.000000,21.200000) 狼:(0.074218,20.368858)
    兔子:(0.000000,21.300000) 狼:(0.056429,20.568065)
    兔子:(0.000000,21.400000) 狼:(0.041056,20.767473)
    兔子:(0.000000,21.500000) 狼:(0.028101,20.967053)
    兔子:(0.000000,21.600000) 狼:(0.017570,21.166776)
    兔子:(0.000000,21.700000) 狼:(0.009466,21.366611)
    兔子:(0.000000,21.800000) 狼:(0.003789,21.566531)
    兔子:(0.000000,21.900000) 狼:(0.000544,21.766505)

    可知狼是在22米处才能追上兔子,20米处不行。

    同样距离100个单位时,要追到66.6个单位处才能追上,60个单位处不行。


  • 相关阅读:
    使用Microsoft URL Rewrite Module for IIS 7.0修改WEB.CONFIG即可实现*.HTML伪静态 无需修改应用程序映射
    我的第二个智能手机 HKC G801 严重质量问题 USB接口坏后解决办法
    JQuery的跨域方法 可跨新浪、腾讯等任意网站
    IIS7下使用MSDNURLRewriting.msi开源组件的设置
    面向对象编程,真离不开设计模式?
    jQuery 的filter(),not(),split()用法
    2008年总结
    程序中 同步和异步的经典解释 (一听就懂)
    2009年元旦前祝福 开心一下
    到底什么是SOA?
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3161471.html
Copyright © 2011-2022 走看看