APL/J言語:多項式(polinomial)その1

APL/J言語:多項式(polinomial)その1
例によって、わかりませんが、翻訳です。

      • -

単項関数M=: 3: * ] ^ 2:は引数の二乗の三倍であり、このような式は単項式と呼ばれる。一方、単項式の合計であるSM=: (3:*]^2:)+(2.5"_*]^4:)+(_5:*]^0:)のような式を多項式と呼ぶ。

すべての多項式はc&pという標準形式で表すことができる。ここでcは係数のリストであり、p=: +/@([*]^i.@#@[)"1 0である。以下の例を見よ。

   SM=: (3:*]^2:)+(2.5"_*]^4:)+(_5:*]^0:)
   p=: +/@([*]^i.@#@[)"1 0
   c=: _5 0 3 0 2.5
   x=: _2 _1 0 1 2
   (SM x),(c p x),:(c&p x)
47 0.5 _5 0.5 47
47 0.5 _5 0.5 47
47 0.5 _5 0.5 47

原始動詞のp.(ピードット)は上に定義された関数pと同等であり、今後p.(ピードット)を用いる。多項式c&p.はいくつかの理由からとても重要である。

1.実数(real)と複素数(complex)のどちらにも有効である。また、パラメーターのcも複素数でありうる。
2.広い分野の関数について近似計算に用いることができる。
3.オペレーションが限定された中にクローズされている。すなわち、合計、差分、積、コンポジション@、微分(derivative)であり、多項式積分(integral)はまた多項式である。
4.上記3にリストされた例の結果の係数が簡単に表現できる。たとえば、もし#cが#dと同等ならば、c&p. + d&p.は(c+d)&p.と同等である。さらに(+/c,:d)&p.とも同等である。したがって以下が成立する。

ps=: +/@,:                NB.多項式の合計
pd=: -/@,:                NB.多項式の差分
pp=: +//.@(*/)            NB.多項式の積
D=: d.1                   NB.スカラー(ランク0)の一次微分(derivative)
pD=: 1: }. ] * i.@#       NB.多項式微分
pI=: 0: , ] % 1: + i.@#   NB.多項式積分