J对无穷大的解释

时间:2016-03-08 18:05:27

标签: j

我在理解J如何解释无穷大方面遇到了一些困难,例如(cos=.2&o.^:_)1是0.73908而((^&2)^:_) 2是_,但是((+&1)^:_) 0挂了我的电脑而不是回答_。余弦和功率示例如何工作?

2 个答案:

答案 0 :(得分:3)

您的计算机挂起,因为在最后一次计算达到_之前,有很多步骤(例如 A LOT )。

如果你保留中间步骤,你可以很容易地看到余弦收敛的速度:

(2&o.^:(<_)) 1
1 0.540302 0.857553 0.65429 ...
#(2&o.^:(<_)) 1
77

只需77步即可达到稳定点。

同样,^&2增长非常快,因此很快达到稳定点(_):

((^&2)^:(<_)) 2
2 4 16 256 65536 4.29497e9 1.84467e19 3.40282e38 1.15792e77 1.34078e154 _
#((^&2)^:(<_)) 2
11
另一方面,

(+&1)是一个非常缓慢增加的功能。从0开始,你必须等待大约1e19步才能达到稳定点;即一个容忍x

的数字x+1

答案 1 :(得分:2)

v ^:_ y形式将v应用于y,直到没有变化为止。换句话说,它可以用作收敛测试。

((+&1)^:_) 0 NB。每次执行时都会添加一个......慢慢达到无穷大

((^&2)^:_) 2 NB。增加得更快,所以得到_(无穷大)更快

(cos=.2&o.^:_)1 NB。收敛

在J for C程序员中,Henry Rich很好地描述了^:_的用法 http://www.jsoftware.com/help/jforc/loopless_code_iv_irregular_o.htm#_Toc191734389