数値計算のプリミティブ

基本的な数値演算

用法APL結果と例(単項) 用法結果と例(両項)
+
Conjugate
共役
+ 実数の範囲内ではそのまま
   + 0.4 _5 0  
0.4 _5 0 
  
   + 3j4 
3j_4  NB. 共役複素数
plus
加算
X+Y
左引数と右引数との和
左右のサイズは同じでなければならない。
片方がスカラの時はスカラを拡張する。
   5 + 1 2 3 
6 7 8    
  
   1 2 3 + 4 5 6 
5 7 9   
-
Negate
逆符号
- 右引数の符号を反対にする
   - _5 0 1    
5 0 _1   
  
   - 3j4  
_3j_4
    
複素数では実部と虚部の符号を逆にする
Minus
減算
X-Y
左引数から右引数を引く
   8 _3 - 6 _5 
2 2    
  
   3.5j0.5 - 1j1   
2.5j_0.5    

複素数どうしの引算も可能
*
Signum
符号
* Y
\[ \times \] 実数に対しては、正には1、0には0、負には_1を付与。

複素数では大きさと偏角を与える

    * _5 0 4         
 _1 0 1 

    * 3j4          
 0.6j0.8           

    *. 3j4          
 5 0.927295         

    *. 0.6j0.8        
 1 0.927295         
複素数に対しては、大きさが1で、同じ偏角の複素数
Times
乗算
X * Y
左引数と右引数との積   
    0 1 * 3 4       
 0 4            

    3.5j0.5 * 1j1     
 3j4            
 複素数どうしの掛算も可能 
%
Reciprocal
逆数
% Y
\[ \div \]
% yは1 % y と同じ。
複素数の逆数は大きさが逆数で、偏角が反対符号になる
  %0.25
4

  % 3j4          
0.12j_0.16         

  3j4 * % 3j4       
1

    *. 3j4          
5 0.927295         

    *. % 3j4         
0.2 _0.927295        
Devide-by
除算
X % Y
左引数を右引数で割る
    0 8 % 1 0.4      
 0 20           

    3j4 % 1j1       
 3.5j0.5          

    1j1 * 3j4 % 1j1    
 3j4        
     
複素数どうしの割算も可能 
Magnitude
絶対値
\[ \vert Y \]
\[ \vert \]
符号をとって絶対値にする  
     | 6 _5          
 6 5             
     
      |3j4          
 5
複素数に対しては大きさ   
Residue
剰余
\[ X \vert Y \]
右引数を左引数で割ったときの余り
    3|   i.7        
 0 1 2 0 1 2 0       
   
    3 |  -i.7        
 0 2 1 0 2 1 0       
   
    _3 |  i.7        
 0 _2 _1 0 _2 _1 0     
   
    _3  | -i.7       
 0 _1 _2 0 _1 _2 0     


用法APL結果と例(単項) 用法結果と例(両項)
*:
Square
平方
*: Y
右引数の要素を平方する
    *: i.5          
 0 1 4 9 16         
   
   ^{2} i.5
0 1 4 9 16
(Not-And)
(否定論理積)
X *: Y
左右の引数が共に1のときに0、そうでなければ1
    0 0 1 1 *: 0 1 0 1   
 1 1 1 0          
 
%:
Square- root
平方根
%: Y
\[ \div \] 右引数の要素の平方根をとる
    %: 4 9 16        
 2 3 4            
  
    %: _4          
 0j2            
  
負の値のときは虚根になる  
Root
累乗根
X %: Y
YのX乗根でY ^ % X に等しい
    2 3 4 %: 4 27 256   
 2 3 4           
\[ ^{2}\sqrt{4}, ^{3}\sqrt{27}, ^{4}\sqrt{256} \]
    _1 %: 4        
0.25
 
 -1乗根は逆数に等しい  
^
Exponential
指数
^  Y 
\[ * \] e のY乗
    ^ 0 1 2         
 1 2.71828 7.38906      
\[ e^{0},e^{1},e^{2} \]
Power
累乗
X ^ Y
XをY乗するに等しい
    2 3 4 ^ 1 2 3     
 2 9 64          
\[ 2^{1},3^{2},4^{3} \]

用法APL結果と例(単項) 用法結果と例(両項)
^
Natural- Log
自然対数
^. Y
底が e のYの対数(自然対数)
    ^. 1 2          
 1 0.693147         
\[ log_{e}1,log_{e}2 \] \[ ln 1,ln 2 \]
Log
対数
X ^. Y
Xを底とするYの対数に等しい
    10 ^. 125 100
2.09691 2
\[ log_{10}125, \ log_{10}100 \]
>: 

Increment
1増
 >: Y 
\[ \ge \]
Yに1を加える


   >: i.5          
 1 2 3 4 5          

    (i.5)+1         
 1 2 3 4 5          
(Larger or equal)
(大きいか等しい)
X >: Y 
左引数が右引数より大きいか等しければ1、

そうでなければ0

    20 30 40 >: 40 30 20  
 0 1 1           
<: 

Decrement
1減
<: Y
\[ \le \]
Yから1を減じる
 
   <: i.5          
 _1 0 1 2 3   
 
    -. i.5
1 0 _1 _2 _3

1からYを引く。\it{Complement} 
(Lesser or equal)
(小さいか等しい)
X <: Y 
左引数が右引数より小さい か等しければ1、

そうでなければ0

    20 30 40 <: 40 30 20  
 1 1 0           
 >. 

Ceiling
天井値
 >. Y 
\[ \lceil \] Yより大きな最小の整数
    >. 0.4 _0.3 _3.4     
 1 0 _3      (切上げ) 
   
    >./ 1 2 3 4 5      
 5   (最大値の取り出し) 
Larger of
最大値
X >. Y
左引数と右引数の大きい方の値を選ぶ
    4 0.5 >. 1 6      
 4 6            
<. 
Floor
床値
<. Y 
L Yを超えない最大の整数
    <. 0.4 _0.3 _3.4     
 0 _1 _4     (切捨て) 
   
    <./ 1 2 3 4 5      
 1   (最小値の取り出し) 
Lesser of
最小値
X <. Y 
左引数と右引数の小さい方の値を選ぶ
    4 0.5 <. 1 6      
 1 0.5           
!
Factorial
階乗
! Y
\[!y は 1,2.....,y\] の積(階乗)を与える。
    ! 3 4 5         
 6 24 120          

 !@<: y はガンマ関数 
 
    !@<: 5          
24

    !@<: 4.5         
11.6317

整数値以外でも算出できる。 
Out- Of
2項係数
X ! Y
x!y はy個の中から x個取り出す組合せ総数 \[ \left( \begin{array}{c} n\\k \end{array} \right) = _{n}C_{k} =\dfrac{n!}{(n-k)!k!} \]
    2 ! 8         
28
\[_{8}C_{2}=\dfrac{8!}{6! 2!} \]
+.
Real/ Imaginary
実部/虚部
+. Y 
複素数の実部と虚部を分離する
   +. 1j2, 2j3, 3j4
1 2
2 3
3 4
GCD
最大 公約数
(Or)
(論理和)

X +. Y
GCD
    24 +. 60        
12
左右の引数が共に0のときに0、そうでなければ1
    0 0 1 1 +. 0 1 0 1   
 0 1 1 1          
*.
Length /angle
長さ/偏角
*. Y
長さと偏角を与える
   *. 3           
 3 0             
    *. 3j4          
 5 0.927295         
ピタゴレアン \[ 5^{2}=3^{2}+4^{2} \]
LCM
最小
公倍数
(And)
(論理積)
X *. Y
LCM    
    24 *. 60        
120
左右の引数が共に1のときに1、そうでなければ0
    0 0 1 1 *. 0 1 0 1   
 0 0 0 1          

短縮 Shorthands

u Y と前方にプリミティブを置いて記述を簡略化

+: Double 2倍 +: Y +: i.5 0 2 4 6 8
-: Halve 2分の1 -: Y -: 0 2 4 0 1 2
-. Complement 1-y
-. Y
 -. 2 5 6
_1 _4 _5
*: Square 2乗 \[ y^2\]
*: Y
*: 2 4 6
4 16 36
%: Squre Root 平方根 \[ \sqrt y \] %: Y %: 4 16 36 2 4 6

数の表記法

これらの表記では一つの数として演算できる。
   _1r3* 2p1
_2.0944
\[ -\dfrac{1}{3} \times 2 \pi \]
用法結果と例(単項)
_

(under-bar)
Negative sign
マイナス
数学のマイナス記号(形容詞,アンダーバー)
APLでK.E.Iversonは over-barを用いたが

JではKB記号がないのでunder-barにした

-3.14
 _3.14            
数学者K.E.Iversonは算数の冗長性を補正した。
_2は単独の数なので 次のように括弧なしで記述できる
   _3 - _2
_1
_9: ....... 9: 


動詞
_9: .... _1:, 0:, 1: ..... 2: 9: _9 から9までの数を生成する動詞
数ではないので計算しない
   _9: + 2:
_9: + 2:
ad
ar
角度
(名詞)
angle degreeによる複素数表示
angle radianによる複素数表示
   1ad60 ; *. 1ad60
+------------+--------+
|0.5j0.866025|1 1.0472|
+------------+--------+
  
   1ar1 ; *. 1ar1
+-----------------+---+
|0.540302j0.841471|1 1|
+-----------------+---+

   2ad60
1j1.73205

前後にスペースを入れるとエラー
b
n進数
(名詞)
左に進数の値、右にその進数での 値を置いたときの10進数の値
  • 16進数
     16b23 NB.16進数           
    35   (「(2*16)+3」の値) 
     
     16ba  NB.右は8 9 a b ...となる 
    10
    
    (a~zで10~35を表わす) 
        
       16b11;16b1j;16bz
    +--+--+--+
    |17|35|35|
    +--+--+--+
    
  • 2進数
    2b111  NB.2進数         
    7
    
    #: 7            
    
e
浮動小数点
(名詞)
10進数の桁数表示   
   
    1.2e14
1.2e14

  1 x: 1.2e14
120000000000000

 2.3e_2        
  0j16 ":  2.3e_10
0.0000000002300000
j
複素数
(名詞)
複素数表示。         

3j4は実部3、虚部4の複素数 
p
\[ \pi \]
パイ
(名詞)
\[ mpn は m \times \pi ^{n} \]
   1p1
3.14159


2p1            
6.28319            

1p2            
9.8696            


 0j20 ":  1p1 NB. 文字化して20桁表示
3.14159265358979310000
\[ 2 \pi, \pi^{2} \]
r
rational
有理数
(名詞)
有理数の分数入力と表示。
  2r3            
0.666667
  
  2r3 + 3r4 
17r12
\[ \dfrac{2}{3}+\dfrac{3}{4}=\dfrac{17}{12} \] 実数で確認
 _1 x:  2r3
0.666667
   
  0j24 ": 2r3  NB. 文字化して20桁表示
0.666666666666666666666667
Jは精度指定はなく通常内部では倍精度を超える精度で計算している
x
exponents
指数表示
(名詞)
\[ m x n はm \times e^{n} \]
   1x1
2.71828 NB. Euler定数
 
   0j20 ": 1x1
2.71828182845904510000
\[ e \]
2x3            
40.1711            
\[ 2e^{3} \]
x(末尾)
Extended- Precision
拡張精度
(名詞)
長い実数演算を指定する。
]a=.123456789x       
123456789x          

*: a            
15241578750190521       

3 % a           
1r41152263          
データ(数)に浮動小数点は用いないで、内部は分数でどこまでもやる。

(搭載メモリーと相談)

x:
Extended precision
拡張精度の 表示
(動詞)
分数表示の実数の拡張表現。  
1 x: 1.2          
6r5              

 _1 x:  1r3
0.333333

   2 x: 1r3
1 3

有理数表現の分子と分母を示す 

  1 x: o.1
1285290289249r409120605684
\[ \pi \] の分数表現を与える

円関数

用法APL結果と例(単項)用法結果と例(両項)
o.
Pi-times
円周倍率
o.Y
\[ \pi とmとの積 \pi \]
    (o.1),o.2        
 3.14159 6.28319       
 
    1p1 2p1
3.14159 6.28319
1p1,1p2の方が便利
Circular Function
円関数
X o.Y
左引数で円関数の型を指定
rfd=:(%&180)@o.      

  rfd 90 180       
 1.5708 3.14159      

 (角度をラジアンに変換)  

       1 o. 1.5708      
1
 (SIN 90°の値)      

    2 o. 1.5708      
 _3.67321e_6        

    2 o. rfd 90      
 6.12303e_17        
 (COS 90°の値)      

引数と円関数の演算
require 'trig'を用いればsin,cosなどの数学の記法が利用できる \[ \begin{array}{cc|cc} 1 o. y& \sin y & \_1 o. y & \arcsin y \\ 2 o. y& \cos y & \_2 o. y & \arccos y \\ 3 o. y& \tan y & \_3 o. y & \arctan y \\ 5 o. y& \sinh y & \_5 o. y & arcsinh \ y \\ 6 o. y& \cosh y & \_6 o. y & arccosh \ y \\ 7 o. y& \tanh y & \_7 o. y & arctanh \ y \\ \end{array} \] \[ \begin{array}{cc|cc} 0 \ o. y& \sqrt{1-y^2}&&\\ 4 \ o. y& \sqrt{y^{2}+1} & \_4 o. y & \sqrt{y^{2}-1} \\ 8 \ o. y& \sqrt{-1+y^2} & \_8 o. y & -\sqrt{-1+y^2} \\ 9 \ o. y& RealPart(y) & \_9 o. y & y \\ 10 \ o. y& Magnitude(y) & \_10 o. y & Conj(y) \\ 11 \ o. y& ImaginaryPart(y) & \_11 \ o.\ y & j. y \\ 12 \ o. y& Angle(y) & \_12 o. y & \wedge j.y \\ \end{array} \]

複素数

用法APL結果と例(単項)用法結果と例(両項)
+
Conjugate
共役
+
共役複素数を与える


   + 3j4          
3j_4            
Plus
加算
X + Y
複素数どうしの足し算   
  
    3i4 + 3j_4       
6
-
Negate
逆符号
-
実部と虚部の符号を逆にする 
  
    - 3j4          
 _3j_4            
Minus
減算
X - Y
複素数どうしの引算    
  
    3.5j0.5 - 1j1     
 2.5j_0.5         
*
Signum
符号
* Y
\[ \times \]
大きさが1で、同じ偏角の複素数を与える
  
    * 3j4          
 0.6j0.8           
Times
乗算
X * Y
複素数どうしの掛け算   
    
    3j4 * 3j_4       
25
%
Reciprocal
逆数
% Y
\[ \div \] % yは 1 % yと同じ。
複素数の逆数は大きさが逆数で、偏角が反対符号になる
    % 3j4          
 0.12j_0.16         
  
    3j4 * % 3j4       
1
  
    *. 3j4          
 5 0.927295         
  
    *. % 3j4         
 0.2 _0.927295        
Devide by
除算
X % Y
複素数どうしの割算    
  
    3j4 % 1j1       
 3.5j0.5          
  
    1j1 * 3j4 % 1j1    
 3j4            
Magnitude
絶対値
\[ \vert Y \]
\[ \vert \]
符号をとって絶対値にする  
   
    |6 _5          
 6 5             

 複素数に対しては大きさ   
   
    | 3j4          
5

パスカルの三角形 \[ 5^{2}= 3^{2}+4^{2} \]
Residue
剰余
\[X \vert Y \]
右引数を左引数で割ったときの余り

    3 | i.7        
 0 1 2 0 1 2 0       

    3  | -i.7        
 0 2 1 0 2 1 0       

    _3 |  i.7        
 0 _2 _1 0 _2 _1 0     

    _3 |  -i.7       
 0 _1 _2 0 _1 _2 0

複素数に拡張

   3 | 3j4
0j1
     3j4 |15j_3
0j2
+.
Real/ Imaginary
実部/虚部
+. Y
複素数の実部と虚部を生成(分離)
   +. 1j2, 2j3, 3j4
1 2
2 3
3 4
GCD (Or)
最大公 約数
(論理和)
X +. Y
左右の引数が共に0のときに0、そうでなければ1
    24 +. 60        
12

    0 0 1 1 +. 0 1 0 1   
 0 1 1 1          
*.
Length /angle
長さ/偏角
*. Y
長さと偏角を与える\[ (r,\theta) \] \[ y=re^{i \theta} \]
   *. 3           
 3 0             
  
    *. 3j4          
 5 0.927295         

 5 *1x1^ 0j0.927295
3j4
LCM
最小公倍数
(And)
(論理積)
X *. Y
左右の引数が共に1のときに1、そうでなければ0
    24 *. 60        
120

    0 0 1 1 *. 0 1 0 1   
 0 0 0 1          

j.
Imaginary
虚数生成 j. Y
j.yは0j1*y
    ]b=.j. a=.1j1      
 _1j1            
    
    (b-a),(b=.*.b),:a=.*.a  
       0  1.5708       
 1.41421 2.35619       
 1.41421 0.785398      
    
    rfd 90          
1.57
j.yはyを複素平面上で90度回転する
Complex
複素数 生成
X j. Y
x j. yはx + j. y
    3 j. 4         
 3j4            
   
    3 + j. 4        
 3j4            
r.
Angle
単位複素数
r. Y
r. y は ^ 0j * y \[ e^{i \theta} = cos \theta + i sin \theta \]
    r. 0 1          
 1 0.540302j0.841471     
    
     ^0j1*0 1         
 1 0.540302j0.841471     
    
  (*. a);,. a=. r. i.3
+---+------------------+
|1 0|                 1| 0 
|1 1| 0.540302j0.841471| 1
|1 2|_0.416147j0.909297| 2
+---+------------------+
   *.    r.             

 実数は単位円周上に移される 

    *. r. 1j1 1j0 1j_1    
 0.367879 1         
        1 1         
  2.71828 1         
虚数部に反比例して絶対値が大きくなる。
Polar
極座標表示
X r. Y
Polar
極座標表示
X r. Y
x r. yはx*^0j1*y 
              
    r. 2          
 _0.416147j0.909297    
   
    2 r. 2         
 _0.832294j1.81859     

マトリクスの計算

u .v
Deter- minant
一般行列式
APL -/ .* は正則行列の行列式
 A=: 1 6 6, 4 1 0,: 6 6 8
1 6 6
4 1 0
6 6 8
\[ \begin{array}{ccc|cc} -&-&-&&\\ &&+&+&+\\ 1&6 &6 &1 &6\\ 4&1& 0& 4& 1\\ 6&6& 8& 6& 6\\ \end{array} \] サラスの方法
*/ 6 1 6=36  
*/ 1 0 6=0
*/ 6 4 8=192
----------- 
*/ 1 1 8=8
*/ 6 0 6=0
*/ 6 4 6=144
-----------
-228+152=-76  Determinant
228+152=380 Permanent
Permanent(+/ . *)はDeterminant(-/ . *)のマイナス方向も全てプラスする
   (-/ . *;+/ . * ) A
+---+---+
|_76|380|
+---+---+

det ; per (動詞の並列算)
Dot- product
一般内積
X +/ . * Yは内積を表す
    (i.5)+/ . * i.5     
30

(A=.>:i.3 4);(B=.>:i.4 2)

;A +/ . * B
+----------+---+-------+
|1  2  3  4|1 2| 50  60|
|5  6  7  8|3 4|114 140|
|9 10 11 12|5 6|178 220|
|          |7 8|       |
+----------+---+-------+
   A         B  A+/ .* B

50= +/ 1 2 3 4 * 1 3 5 7
140= +/ 5 6 7 8 * 2 4 6 8
u . vとしていろいろな動詞を適用することも可能(一般内積)
+/ . + プラスの内積
%.
Matrix Inverse
一般逆 行列
%. Y
\[ \biguplus \] (行数 >: 列数)の行列の一般 逆行列を与える。
  (%. a); a=. 1 0 ,: 0 2
+-----+---+
|1   0|1 0|
|0 0.5|0 2|
+-----+---+

   (%.M);M=.1 x:3%~1 0,0 1,:2 1
+----------+-------+
| 1  _1   1|1r3   0|
|_1 5r2 1r2|  0 1r3|
|          |2r3 1r3|
+----------+-------+
 %. M         M
Matrix Divide
行列の割算
X %. Y
  • XがベクトルでYがXの次 数に等しい正則行列ならば 連立方程式の解を与える。
  • またYの行数が列数より大 きいときは、最小2乗解。
       1 4 %. 1 3,: 1 4
    _8 3
    
    \[ \left\{ \begin{array}{ccc} x_{1} &+3x_{2}&= 1\\ x_{1}& +4x_{2}&= 4\ \end{array} \right. \]
  • クラメール法
    cr=: %.}:"1 NB. Cramer法
    
       cr 1 3 1,: 1 4 4
    1 0 _8   
    0 1  3   
    
  • 左に単位行列が出れば上手く解けている

    数値計算上のゴミは次でとる

  • 最小自乗法 \[ y=-x_{1}+10x_{2} \] NB. 原点を通る
    1 4 2 %.  1,. M
    2 _3 6
    
    \[ y=2-3x_{1}+6x_{2} \] 1を付加して定数項も求める。
  • 最小自乗法のイディオム
    reg=: %. 1&,.@] 
    NB.Least square Regression
    
       1 4 2 reg M
    2 _3 6
    
/
Insert
(副詞)
 +/ 0 1 2 3 は(0+1+2+3)
  
   (+/ A); A=.i.3 4
+-----------+---------+
|12 15 18 21|0 1  2  3|
|           |4 5  6  7|
|           |8 9 10 11|
+-----------+---------+

スカラに作用しているので縦に合計

   (+/ "1 A); A=.i.3 4
+-------+---------+
|6 22 38|0 1  2  3|
|       |4 5  6  7|
|       |8 9 10 11|
+-------+---------+

ランク1でベクトルに作用させ横に合計  

   (*/ A); A=.i.3 4
+------------+---------+
|0 45 120 231|0 1  2  3|
|            |4 5  6  7|
|            |8 9 10 11|
+------------+---------+
\[ \Pi 関数 \]
Table
一般外積 X u/ Y
X */ YはXとYの外積 uとしては他のいろいろな 動詞を適用することも可能
    1 2 3 */ 4 5 6 7    
  4  5  6  7        
  8 10 12 14        
 12 15 18 21        

   1 2 3 +/ table 4 5 6 7
+--+--------+
|+/|4 5 6  7|
+--+--------+
|1 |5 6 7  8|
|2 |6 7 8  9|
|3 |7 8 9 10|
+--+--------+

 (>:i.9)*/ table >: i.9

(かけ算の九九)
128!:0
QR分解
外部接続詞にあり暫定サポート
128!:0がQR分解 に変換する
 A=: 0 1 1 , 1 0 1,:1 1 0

   A
0 1 1
1 0 1
1 1 0
 
 6j3 ":(L:0)  128!:0 A
+------------------+------------------+
| 0.000 0.816 0.577| 1.414 0.707 0.707|
| 0.707_0.408 0.577| 0.000 1.225 0.408|
| 0.707 0.408_0.577| 0.000 0.000 1.155|
+------------------+------------------+

左はシュミットの直交化
対称行列の固有値をQR法で求める 上の左右のボックスの内積(+/ . *)を反復する
rheval=:+/ .*&>/@|.@(128!:0)  NB. Roger Hui

rheval ^:100 A NB.repeat 100

2  0  0
0 _1  0
0  0 _1
固有値は 2,_1(重根)
無し
128!:1
上三角 行列の 逆行列
上三角行列の 逆行列を計算
%.>{:128!:0]a=.3 3 \[ 20 ?.20
0.0618984 _0.0911557 _0.0220058
        0   0.141617  _0.104445
        0          0  0.0718834

128!:1 >{:128!:0 a
0.0618984 _0.0911557 _0.0220058
        0   0.141617  _0.104445
        0          0  0.0718834

乱数と素数

用法APL結果と例(単項)用法結果と例(両項)
?
?.
Roll
Deal
乱数
? Y
?. Y
?yは0からy-1までの整数乱数を生成する。
?.はシードを固定した乱数(追試可能)
    ? 10 10 10 10     
 5 6 0 3           
    
    ? 0 (0 1間の乱数)
0.971379
   
   ? 0 0 0  NB. 3#0
0.0466292 0.330109 0.01346
9!:42,9!:43でMersenne Twister以外の乱数も利用できる。
Deal
非重複 乱数
X ? Y
    6 ? 6         
 5 1 2 4 3 0        
   
    6 ? 6         
 1 5 0 4 3 2        

?.はシード固定の非重複乱数  
   
    6 ?. 6         
 5 1 2 4 3 0        
   
    6 ?. 6         
 5 1 2 4 3 0        
p:
Primes
素数
p: Y
右引数で指定した順位の素数 を与える
    p: 0 1 2 3 4       
 2 3 5 7 11         
無し
q:
Prime- factor
素因数分解
q: Y
右引数の整数の素因数分解
    q: 12          
 2 2 3            
    
    q: 700          
 2 2 5 5 7          
Prime Exponents
素数の位置
X q: Y
素因数分解した素数の位置 と個数を与える
   (p: i.9),: 9 q: 700
2 3 5 7 11 13 17 19 23
2 0 2 1  0  0  0  0  0

幾つかの解析関数

副詞は関数を(左)引数に取る
接続詞は左引数に数値と関数をとる
用法APL結果と例(単項)用法結果と例(両項)
d.
Derivative
微分
(接続詞)
u d.n
u d. nは関数uのn階 の数値微分を行う。
ランクは0に固定されている
    *: d.1          
 +:             
\[ x^{2} \longleftrightarrow 2x \]
    *: d.1 x=.1 2 3     
 2 4 6            
   
     (cube=.^&3) y=. 2 3 4
8 27 64
  
   cube d.(1) 2 3 4
12 27 48
\[ 2^{3},3^{3}.4^{3} \Longleftrightarrow 3x^{2},3x^{2},3x^{2} \]
D.
Derivative
微分
(接続詞)
u D.n
uD.nも関数uのn階 の数値微分を行う。 ランクは0に固定されてない
    (cube=.^&3"0)y=.2 3 4  
 8 27 64           

    cube D.1 y        
 12 27 48          

    cube D.2 y(2階微分)        
 12 18 24          
   (cube=.^3) D.(1) 2 3 4
12  0  0
 0 27  0
 0  0 48
 
 
    */\ D.(1) 4 3 2
1 3  6
0 4  8
0 0 12

GRAD
K.E.Iverson(Calculus参照)
用法APL結果と例(単項)用法結果と例(両項)
D: \[ \Delta x=1 \ 0.1 \ 0.01 \] \[ \dfrac{3^{3}-2^{3}}{1}=19 \] \[ \dfrac{2.1^{3}-2^{3}}{0.1}=12.61 \] \[ \dfrac{2.01^{3}-2^{3}}{0.01}=12.0601 \] Secant Slope
平均 変化率
(接続詞)
u D:n
\[ \Delta x \]を指定する
   cube=.^3 "0      
   1 cube D:1 y=.2 3 4  
 19 37 61         

1 0.1 0.01 cube D:1/2 3 4 
     19      37      61
  12.61   27.91   49.21
12.0601 27.0901 48.1201
d._1
積分
微分の逆関数で積分を定義
   cube=:^3
  
   cube d.(_1) 2 3 4
4 20.25 64
\[ \dfrac{2^4}{4},\dfrac{3^ 4}{4},\dfrac{4^4}{4} \] シンプソン積分はsystem /packages/math/integrat.ijs にある。
T.
Taylor appro ximation
(接続詞) u T.n
u T.nは関数uのn項まで のテイラー展開で近似した値
    ^T.5 i.3 NB. 5項近似         
 1 2.70833 7         
   
    ^T.30 i.3        
 1 2.71828 7.38906  NB.30項近似    
   
    ^ i.3          
 1 2.71828 7.38906  NB.Exact    
t.
Taylor coeffi cient
(副詞)
u t. Y
ut.yは関数uの テイラー展開のyでの係数
   ^ t. 1 2 3
1 0.5 0.166667
\[ \dfrac{1}{1!},\dfrac{1}{2!},\dfrac{1}{3!} \]
   sin=.1 o. [ cos=.2o.   
   
   sin t. i.5        
 0 1 0 _0.166667 0      
   
    cos t. i.5        
 1 0 _0.5 0 0.0416667    
Taylor co- efficient
(副詞)
X ut. Y
x ut.yは \[ x^y \] とut.yとの積
t:
Weighted Taylor coeffi cient
(副詞)
u t: Y
APL
  • 階乗により重みづけられた テイラー展開。u t: Yは (!Y)* t. Yと同じ
  • テーラー展開の各項を_1 0 1で 示している \[ (-1)^{k}\dfrac{x^{2k+1}}{(2k+1)!} \]
    1 x:(sin t. i.6),:sin t: i.6
    0 1 0 _1r6 0 1r120  NB. t.
    0 1 0   _1 0     1  NB. t:
    ------------------
    0 1 2    3 4    5
    
    1 x:  %! 1 3 5 7
    1 1r6 1r120 1r5040
    
  • 次のように1,_1 の項は符号付で取り込む
        (!i.5)*sin t: i.5    
     0 1 0 _1 0         
    
        cos t: i.5        
     1 0 _1 0 1         
    
\[ sinx=x- \dfrac{x^{3}}{3!} +\dfrac{x^{5}}{5!} -\dfrac{x^{7}}{7!}\cdots \] \[x- \dfrac{x^{3}}{3!} +\dfrac{x^{5}}{5!} \rightarrow 1-\dfrac{1}{6}+\dfrac{1}{120} \] \[ x^k \]を除いた部分
H.
Hyper- geometric
超幾何 級数
非復元抽出の場合でほぼ2項分布\[ _{r}C_{k}p^{k}q^{r-k} \]に等しい。 \[ H_{n,m.r}(k)=\dfrac{_{m}C_{k}\times _{n-m}C_{r-k}}{_{n}C_{r}} \] n=10000個のロットで不具合率0.03(m=300).
r=10個取り出しk=1個エラーの確率
 ((1!300)*9!9700)%10!10000
0.228249
erf(誤差関数)を求める \[ erf(x)=\dfrac{2}{\sqrt{\pi}}\int_{}^{x}e^{-t^{2}}dt \] 正規分布関数 \[ (\Phi)=\dfrac{1}{2}\left( 1+erf \left(\dfrac{x}{\sqrt{2}} \right)\right) \]
erf=:(1 H. 1.5)@*: * 2p_0.5&* % ^@:*:
   NB. error function

n01cdf=:-:@:>:@:erf@:((%:0.5)&*)
 NB. CDF of normal 0,1
K.E.IversonがD.Knuth達(GPK)のConcrete Mathematics Comparison を著したときに組み込まれた。
E.ShowがH.を用いたerf関数から 種々の分布関数を作成したものが addon/stat/normal/distribs/normal.ijsに入っている。
p.
Root
多項式 の根
p. Y
APL 多項式の解
   p. 1 3 2
+-+-------+
|2|_1 _0.5|
+-+-------+
\[ fx=2+3x+x^{2} \] 解は_1,_0.5

最初のボックス(2)は収束までの反復状況を示す

Polynomial
多項式
X p. Y
左引数で与えた係数の多項 式の右引数での値を与える
  x=.1 5 0 4 [y=._1 0 2 
    
    x p. y         
 _8 1 43          

   1 5 0 4 p. _1 0 2
_8 1 43
\[fx=1+5x+4x^{3} \] のx=_1,0,2の値
p..
polynomial derivative
多項式の微分
p.. Y
多項式の微分
  p.. 1 3 3 1
3 6 3
\[ f=1+3x+3x^{2}+x^{3} \] \[ f^{'}=3+6x+3x^{2}\]
polynomial Integral
多項式の積分
m p.. Y
  • 左引数は積分定数。
  • 多項式を積分した後、係数は次式として定積分を計算する \[ x^{k}=1 \]
       1 p.. 1 3 3 1
    1 1 1.5 1 0.25
      
       3 p.. 1 3 3 1
    3 1 1.5 1 0.25
    
    \[ 1+ 3x+3x^{2}+x^{3} \] \[ \rightarrow 3+x+\dfrac{3x^{2}}{2}+\dfrac{3x^{3}}{3}+\dfrac{x^{4}}{4} \] \[\rightarrow 3+1+ \dfrac{3}{2}+\dfrac{3}{3}+\dfrac{1}{4} \]

Table of Derivative

\[ \begin{array}{lrcl} Name&&Function&Derivative\\ Constant&&a"0&0"0\\ Identity&&]&1"0\\ Constant Times&&a"0 * ]&a"0\\ Sum&&f+g&(f \ d.1)+(g \ d.1)\\ Difference&&f-g&(f \ d.1)-(g \ d.1)\\ Product&(f(x)g(x))^{'}=f^{'}(x)g(x)+f(x)g^{'}(x)&f*g&(f*(g d.1)+((f d.1)*g)\\ Quotient&\left(\dfrac{f(x)}{g(x)}\right) ^{'}=\dfrac{f^{'}(x)g(x)-f(x)g^{'}(x)}{g(x)^{2}} &f \div g&(f \div g)*((f d.1) \div g)-((g d.1) \div g)\\ Composition&(f(g(x)))^{'}=f^{'}(g(x))g^{'}(x)&f@g&(f d.1)@*(g d.1)\\ Inverse&\dfrac{dx}{dy}=\dfrac{1}{f^{'}(f^{-1}(y)))}&f \ INV&\div@(f d.1@(f INV))\\ Reciprocal&&\div@f&-@(f d.1 \div (f * f))\\ Power&&^\& n \&n \&p. * ^(n-1)\\ Polynomial&&c&p.&(deco c)&p.\\ \end{array} \] (Issue:)&K.E.Iverson [Calculus 2-K]
deco=:}.@(] * i.@#)

INV=:^:_1