二次方程式


たとえば二次方程式 ax^2+bx+c= 0の解の公式、  x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}というようなのを、texを使わないでJ言語表記もどきで書くと、a*x^2+b*x+c=0とか、x=(-b+( (b^2)-4*a*c)^(1r2))%(2*a))とかになると思います。

さて、実験:

   a=:b=:c=:x=:1   NB.value errorにならないように変数になにかを入れて
   a*x^2+b*x+c=0   NB.とりあえず表記を試す
1
   x=(-b+( (b^2)-4*a*c)^(1r2))%(2*a)
0

意外にも表記が通ったので、意味を考えます。
たとえばxの解を4とすると、2*x^2+3*x-44=0になりますが、2*x^2+3*x-44=0が与えられて、xをどう求めるか。公式に入れてみましょう。

   (-3+( (3^2)-4*2*_44)^(1r2))%(2*2)
_5.5
   (-3-( (3^2)-4*2*_44)^(1r2))%(2*2)
4
   a=:2 [ b=:3 [ c=:_44
   (-b+( (b^2)-4*a*c)^(1r2))%(2*a)
_5.5
   (-b-( (b^2)-4*a*c)^(1r2))%(2*a)
4

これも意外にもそのまま通りました。
慣れればJ言語の表記の方が数式よりもわかりやすいかもしれない。
p.(ピードット)という動詞があって、よくわからないので実験。

   x=:4
   (3*x^0) + (4*x^1) + (5*x^2)
99
   3 4 5 p.4
99
   3 4 5 p.x
99

   _44 3 2 p.4
0
   (_44 3 2 p.^:_1) 4
syntax error
( _44 3 2 p.^:_1)4
逆関数で解けるかと思ったけど、これは失敗。