J中总和(1 /(1 + x)^ y)的默认形式是什么

时间:2013-02-22 15:03:57

标签: j tacit-programming

作为初学者练习,我尝试使用sum(1/(1+0.03)^n for n = 1 to 30计算J,+/%(1 + 0.03)^ >:i.30中的以下总和。我怎么能把它写成一个简单的默契形式?我尝试过的所有内容都比上面的显式表单>:@[ (+/&:%)@:^ >:&i.@]

更加丑陋

2 个答案:

答案 0 :(得分:3)

你可以从

开始
+/@:%@((1 + 0.03) ^ >:@i.) 30

你可以使用fork使0.03左参数,但使用钩子可以更清晰

(1 + 0.03) +/@:%@([ ^ >:@i.@]) 30   NB. use fork
(1 + 0.03) +/@:%@(^ >:@i.) 30       NB. use hook

^的左右参数执行相同的操作(增量)。这是&Compose)可能有用的提示。

0.03 +/@:%@(^&>: i.) 30         NB. apply increment to both left & right arg

答案 1 :(得分:1)

当我想要一个隐性功能时,我常常让13 :对我说话。在这种情况下,有些变化:

   13 : '+/ %((1+0.03)^1+i.y)'
[: +/ [: % 1.03 ^ 1 + i.

   13 : '+/ %((1+0.03)^>:i.y)'
[: +/ [: % 1.03 ^ [: >: i.

使用1+0.03或其他任何左派参数:

   13 : '+/ %(x^1+i.y)'
[: +/ [: % [ ^ 1 + [: i. ]

   13 : '+/ %(x^>:i.y)'
[: +/ [: % [ ^ [: >: [: i. ]

但是有太多的上限([:)称它不那么难看,但这是一个开始。