数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
楼主: nihaoya

关于一只蚂蚁的数学难题 [ZT]

[复制链接]
发表于 2006-4-26 23:51:55 | 显示全部楼层
<>布朗运动问题,用郎之万方程,小学生都知道的东西。</P>
发表于 2006-5-9 00:50:56 | 显示全部楼层
想是不朗运动。
发表于 2006-5-27 03:45:45 | 显示全部楼层
蚂蚁问题实为慨率问题,若用慨率分布函数和数学期望的理论来解难度很大,但用计算机仿真就容易了,下面是我用Builder C++ 5.0编程仿真的结果,解应该是正确的。 <BR><BR>100000次仿真实验,最后结果为: <BR>平均走sump=3.10896229743958米走出圆圈。<BR><BR>------------------------------------------------------------- <BR>因各位没按原问题算平均路程,而是算出圈慨率,所以这也给出出圈慨率 <BR><BR>下面为出圈的慨率 <BR><BR>2 p=0.463200002908707 2步出圈的慨率 <BR>3 p=0.168190002441406 3步出圈的慨率 <BR>4 p=0.144749999046326 4步出圈的慨率 <BR>5 p=0.0806000009179115 5步出圈的慨率 <BR><BR>6 p=0.0544500015676022 <BR>7 p=0.0322399996221066 <BR>8 p=0.0210100002586842 <BR>9 p=0.0132099995389581 <BR>10 p=0.00848000030964613 <BR>11 p=0.00481999991461635 <BR>12 p=0.0031300000846386 <BR>13 p=0.00222999998368323 <BR>14 p=0.00126000004820526 <BR>15 p=0.000850000011269003 <BR>16 p=0.000539999979082495 <BR>17 p=0.00028000000747852 <BR>18 p=0.000209999998332933 <BR>19 p=0.00015999999595806 <BR>-------------------------------------------------------------- <BR><BR>100000次仿真实验,每满1000次显示一下 <BR><BR>4.8152871131897 (第1000次时, 走了4.8152871131897米走出园圈) <BR>2.69089388847351 (第2000次时,走了2.69089388847351 米走出园圈) <BR>1.58696675300598 <BR>5.22075843811035 <BR>3.32418608665466 <BR>2.5639967918396 <BR>1.51999390125275 <BR>3.94801926612854 <BR>1.90821599960327 <BR>2.85823154449463 <BR>1.62272381782532 <BR>1.70008611679077 <BR>7.75488233566284 <BR>1.6303882598877 <BR>1.70187103748322 <BR>1.71470761299133 <BR>1.82281088829041 <BR>1.98001456260681 <BR>3.05058526992798 <BR>1.7590434551239 <BR>1.56935346126556 <BR>2.83407735824585 <BR>2.43699979782104 <BR>6.62153625488281 <BR>3.63897633552551 <BR>3.89087963104248 <BR>4.78230285644531 <BR>7.63114356994629 <BR>1.50111317634583 <BR>1.96557533740997 <BR>1.50024485588074 <BR>1.96663522720337 <BR>1.88254356384277 <BR>5.99292469024658 <BR>2.96086525917053 <BR>3.73780131340027 <BR>1.83838188648224 <BR>2.39485120773315 <BR>7.93298292160034 <BR>1.62596869468689 <BR>6.31435585021973 <BR>3.68449139595032 <BR>2.84733104705811 <BR>1.79240989685059 <BR>3.46524214744568 <BR>2.10325121879578 <BR>3.4294764995575 <BR>7.62377643585205 <BR>5.59554147720337 <BR>2.47391247749329 <BR>5.22456026077271 <BR>2.96266078948975 <BR>1.5002613067627 <BR>1.5000901222229 <BR>2.47956395149231 <BR>1.61701440811157 <BR>1.51504015922546 <BR>4.47768354415894 <BR>2.03183054924011 <BR>1.50328457355499 <BR>1.50102925300598 <BR>1.71910655498505 <BR>2.7707347869873 <BR>1.52344214916229 <BR>1.57506275177002 <BR>6.15357303619385 <BR>1.51131522655487 <BR>1.81501889228821 <BR>1.50991630554199 <BR>1.53621351718903 <BR>1.68503093719482 <BR>15.1932401657104 <BR>3.17758059501648 <BR>1.50804281234741 <BR>1.52121388912201 <BR>1.59011173248291 <BR>2.98303008079529 <BR>4.65205574035645 <BR>4.72578954696655 <BR>5.32473993301392 <BR>1.60748696327209 <BR>1.55914187431335 <BR>1.76441025733948 <BR>7.85506439208984 <BR>5.18834447860718 <BR>7.59375333786011 <BR>3.30293226242065 <BR>2.52856850624084 <BR>1.749920129776 <BR>1.50216102600098 <BR>1.50740325450897 <BR>1.51228165626526 <BR>1.56726336479187 <BR>1.51028347015381 <BR>1.95872402191162 <BR>3.44675517082214 <BR>2.60941600799561 <BR>1.99418580532074 <BR>7.92914056777954 <BR>1.50168776512146 <BR>sumdd=3.10896229743958 <BR><BR><BR><BR>下面为程序: <BR>//--------------------------------------------------------------------------- <BR><BR>#include &lt;vcl.h&gt; <BR>#pragma hdrstop <BR><BR>#include &lt;math.h&gt; <BR>#include "Unit1.h" <BR>//--------------------------------------------------------------------------- <BR>#pragma package(smart_init) <BR>#pragma resource "*.dfm" <BR>TForm1 *Form1; <BR>//--------------------------------------------------------------------------- <BR>__fastcall TForm1::TForm1(TComponent* Owner) <BR>: TForm(Owner) <BR>{ <BR>} <BR>//--------------------------------------------------------------------------- <BR><BR>void __fastcall TForm1::Button2Click(TObject *Sender) <BR>{ <BR>Close(); <BR>} <BR>//--------------------------------------------------------------------------- <BR><BR>void __fastcall TForm1::Button1Click(TObject *Sender) <BR>{int i,j,m,n,nn; <BR>float s,s1,s2,s3,ss,x,y,x0,y0,k,t,d,p[30]; <BR>float dd,sumd,sumdd,d0,d1,f1,f2,f3,f4; <BR>d0=3.0/2; d1=1.0; m=10001; sumdd=0; <BR>for(i=0;i&lt;30;i++) p=0; <BR>for(j=1;j&lt;100001;j++) { <BR>d=0; f1=0; f2=0; s1=0; s2=0; <BR>x0=0; y0=0; sumd=0; n=0; <BR>for(i=1;i&lt;999;i++) {t=3.141597*2*random(m)/(m-1); //i*3.1415/6; // k=tan(t); <BR>x=x0+d1*cos(t); y=y0+d1*sin(t); <BR>d=x*x+y*y; d=sqrt(d); dd=x0*x0+y0*y0; //dd=sqrt(dd); <BR>if(d&lt;=d0) sumd=sumd+d1; <BR>if(d&gt;d0) {ss=x0*cos(t)+y0*sin(t); <BR>s1=-ss+sqrt(d0*d0+ss*ss-dd); <BR>f1=(x-x0)/(0.00001+x0+s1*cos(t)-x0); f2=(y-y0)/(0.00001+y0+s1*sin(t)-y0); <BR>f3=abs(1000.0*(f1-f2)); f4=f3/1000.0; <BR>if(f1&gt;=0&amp;f4&lt;0.1) {sumd=sumd+s1; n=1;} <BR><BR>if(n==0) { <BR>s2=-ss-sqrt(d0*d0+ss*ss-dd); <BR>f1=(x-x0)/(0.00001+x0+s2*cos(t)-x0); f2=(y-y0)/(0.00001+y0+s2*sin(t)-y0); <BR>f3=abs(1000.0*(f1-f2)); f4=f3/1000.0; <BR>if(f1&gt;=0&amp;f4&lt;0.1) {sumd=sumd+s2; n=2;} <BR>} <BR>break; <BR>} <BR>x0=x; y0=y; <BR>//Memo1-&gt;Lines-&gt;Add(FloatToStr(i)+" "+FloatToStr(x)+" "+FloatToStr(y)+" "+FloatToStr(sumd)); <BR>} <BR>//Memo1-&gt;Lines-&gt;Add(FloatToStr(i)+" "+FloatToStr(x)+" "+FloatToStr(y)+" "+FloatToStr(sumd)); <BR>//Memo1-&gt;Lines-&gt;Add(IntToStr(n)+" "+FloatToStr(s1)+" "+FloatToStr(s2)); <BR>//Memo1-&gt;Lines-&gt;Add(FloatToStr(d)+" "+FloatToStr(f1)+" "+FloatToStr(f2)); <BR>if(j%1000==0) Memo1-&gt;Lines-&gt;Add(FloatToStr(sumd)); <BR>nn=sumd; if(sumd&gt;nn) nn=nn+1; <BR>for(i=0;i&lt;30;i++) if(i==nn) p=p+1.0; <BR>sumdd=sumdd+sumd; <BR>} <BR>sumdd=sumdd/100000; <BR>Memo1-&gt;Lines-&gt;Add("sumdd="+FloatToStr(sumdd)); <BR>for(i=0;i&lt;30;i++) {p=p/100000; <BR>Memo1-&gt;Lines-&gt;Add(IntToStr(i)+" p="+FloatToStr(p)); <BR>} <BR>} <BR>
发表于 2006-5-27 04:18:33 | 显示全部楼层
<>m=10001; <BR>t=3.141597*2*random(m)/(m-1); <BR>中用了random(m)/(m-1); 产生[0 1]上的均匀分布,“t”为蚂蚁走出的角度(弧度) <BR><BR>sumdd为10万次总共走的路程。 <BR>sumdd=sumdd/100000; 求平均数,</P>
<>因random(100)只产生0、1、2....98、99均匀分布随机数,所以我用m=10001; <BR>浮点数random(m)/(m-1); 产生[0 1]上的均匀分布,m较大是为保精度。 <BR>t=3.141597*2*random(m)/(m-1); 为蚂蚁走出的角度(弧度)。 <BR><BR>此外,要注意最后一次走出圆时并没走1米(路程只计到走出圆的瞬间就停止)。</P>
<>否则会算出错的结果3.42米</P>
发表于 2006-6-2 04:49:42 | 显示全部楼层
我用计算机模拟了一下,得到的答案大概是3步;其中第二步走出去的概率最大,大约是0.58
发表于 2006-6-2 05:00:01 | 显示全部楼层
我用计算机模拟了一下,得到的结果大概是3步,其中第二步走出去的概率最大,是0.58
发表于 2006-6-17 20:59:09 | 显示全部楼层
<>是不是可以用概率与数理统计方面的知识?</P>
发表于 2006-7-19 00:30:45 | 显示全部楼层
典型的布朗运动问题
发表于 2006-7-31 18:04:55 | 显示全部楼层
<div class="quote"><b>以下是引用<i>dailiangren</i>在2005-10-16 20:31:29的发言:</b><br/><p>可以走成正六边形,这个时候永远也走不出去。</p><p>很多时候走不出去。</p></div><p>虽然有某些特殊情况是走不出去,但走不出去的概率还是0,我认为........</p>
发表于 2006-8-13 23:26:20 | 显示全部楼层
<p>需要求无穷和</p>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-3-29 05:26 , Processed in 0.075858 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表