作业帮 > 综合 > 作业

求精通Mathematica的大神,蛛网图怎么画?

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/20 04:13:05
求精通Mathematica的大神,蛛网图怎么画?

能尽量把代码写清楚点吗?
求精通Mathematica的大神,蛛网图怎么画?
鉴于好像在过去还没有人问过蛛网图的相关问题,这里答一下.比较好理解的解法:

f[a0_,n_] := Partition[NestList[1/2 (# + 1/#) &,a0,n + 1],2,1] /.{a_,b_} :> Sequence[{a,b},{b,b}]
f[0.3,100] // ListLinePlot



效率稍高一点并且同样比较好理解的解法:

f[a0_,n_] := Replace[Partition[NestList[1/2 (# + 1/#) &,a0,n + 1],2, 1],{a_,b_} :> Sequence[{a,b},{b,b}],{1}]

(* 效果是一样的所以不贴图了 *)

效率更高但是拐了一点弯所以对初学者来说可能有点难懂的解法:

f[a0_,n_] := Flatten[{{Most@#,Rest@#}\[Transpose],{Rest@#, Rest@#}\[Transpose]}\[Transpose],1] &@NestList[1/2 (# + 1/#) &,a0,n + 1]

当然了,大部分都塞到NestList里也是可以的:

f[a0_,n_] := 
 Flatten[Rest@
   NestList[
    Module[{amid = #[[2,2]],a1}, 
      a1 = 1/2 (amid + 1/amid); {{amid,a1},{a1,a1}}] &,{{0, 0},{0,a0}},n + 1],1]

差不多就这样吧