3

sum(1/(1+0.03)^n for n = 1 to 30初心者の演習として、を使用してJで次の合計を計算しようとしました+/%(1 + 0.03)^ >:i.30。これを単純な暗黙の形式にするにはどうすればよいですか?私が試したのは、上記の明示的な形式よりもかなり醜いです。>:@[ (+/&:%)@:^ >:&i.@]

4

2 に答える 2

3

あなたはから始めることができます

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

フォークを使用して0.03を左引数にすることができますが、フックを使用するとよりクリーンになります

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

の左引数と右引数の両方で同じ操作(インクリメント)が実行されてい^ます。&これは、 (作成)が役立つ可能性があるというヒントです。

0.03 +/@:%@(^&>: i.) 30         NB. apply increment to both left & right arg
于 2013-02-22T21:41:58.277 に答える
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. ]

キャップ()が多すぎて[:醜くないとは言えませんが、それは始まりです。

于 2013-02-22T16:31:50.377 に答える