问题求助:Do 循环提示没有算出实数值是什么原因?
mathematica吧
全部回复
仅看楼主
level 1
bixinyi7 楼主
b = 10.0; n = 2.0; m = 20;
a = {}; n0 = n; n1 = b;
Do[ak = 0; n2 = n0;
While[n2 >= n1, n2 = n2/n1; ak++],
AppendTo[a, ak]; n0 = n1; n1 = n2;
If[N[Abs[n2 - 1]] < N[10^(-m)], Break[]], {k, 1, m}];
len = Length[a];
y = a[[len]]; Do[y = a[[i]] + 1/y, {i, len - 1, 1, -1}];
Print[a];
Print[{m, y, N[y, m]}];
N[Log[10, 2], m]
Do::nliter: 位置 2 处的非列表迭代器(non-list iterator) AppendTo[a,ak];n0=n1;n1=n2;If[N[Abs[n2-1]]<N[10^-m],Break[]] 没有算出实数值.
2023年06月21日 01点06分 1
吧务
level 10
While[]后面的逗号疑似应为分号
2023年06月21日 04点06分 2
我在帮助里查了While的用法,好像对的吧,意思是当条件n2≥n1满足的时候,把n2÷n1赋值为新的n2,并增加ak,循环下去直到n2<n1为止。 所以问题是不是不在这里呀
2023年06月21日 07点06分
我明白你意思了,搞定了,谢谢。
2023年06月21日 07点06分
level 1
bixinyi7 楼主
我明白,搞定了,谢谢。
2023年06月21日 07点06分 3
level 15
Do循环加Append,速度降满了
属于是
2023年06月22日 00点06分 4
1