- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 2608
- 在线时间
- 小时
|
发表于 2013-1-28 15:41:22
|
显示全部楼层
恩,大家也来试试吧,呵呵。分三段:- gp[]:=Module[{z},z={Random[Real,{-1,1}],Random[Real,{-1,1}],Random[Real,{-1,1}]};z=z/Sqrt[z.z]];
- f[z1_,z2_]:=Module[{d},d=z1-z2;d/(Sqrt[d.d]^3)];
- nep[t_,df_]:=Module[{ta={},p,k,fs,np},Do[p=t[[k]];fs=Apply[Plus,Map[f[p,#]&,Drop[t,{k}]]];np=p+df(fs-(p.fs p));AppendTo[ta,np/Sqrt[np.np]],{k,Length[t]}];ta];
- ds[z1_,z2_]:=Module[{dz},dz=z1-z2;Sqrt[dz.dz]];
- sn[p_]:=Module[{s=0,ps=p,p1},Do[p1=First[ps];ps=Rest[ps];s+=Apply[Plus,1/Map[ds[p1,#]&,ps]],{Length[p]-1}];s];
复制代码- n = 7; df = 0.02;
- ps = Table[gp[], {n}];
- Sort[Flatten[Outer[ds, ps, ps, 1]]] // ListPlot
- Do[p = ps; ps = nep[p, df];, {1000}];
- Sort[Flatten[Outer[ds, ps, ps, 1]]] // ListPlot
- Do[p = ps; ps = nep[p, df];, {10000}];
- Sort[Flatten[Outer[ds, ps, ps, 1]]] // ListPlot
- Do[p = ps; ps = nep[p, df];, {20000}];
- Sort[Flatten[Outer[ds, ps, ps, 1]]] // ListPlot
- sn[ps]
复制代码- nn=10^4;ss={};For[i=1,i<=n-1,For[j=i+1,j<=n,d=ds[ps[[i]],ps[[j]]];AppendTo[ss,{Round[d nn],Line[{ps[[i]],ps[[j]]}],d}];j++];i++];ans=Split[Sort[ss],First[#1]==First[#2]&];ln={};ls0={};kn=Length[ans];
- Do[AppendTo[ls0,{Thickness[(kn-k)/kn/100],GrayLevel[(k-1)/kn],Transpose[ans[[k]]][[2]]}];AppendTo[ln,ans[[k,1,-1]]];,{k,kn}];
- Graphics3D[Join[{PointSize[0.02],Point[ps]},ls0]]
复制代码 |
评分
-
参与人数 1 | 威望 +4 |
金币 +4 |
贡献 +4 |
经验 +4 |
鲜花 +4 |
收起
理由
|
hujunhua
| + 4 |
+ 4 |
+ 4 |
+ 4 |
+ 4 |
输出的多面体很直观 |
查看全部评分
|