多項式電卓

Octave で多項式 a0*x^n + a1*x^(n-1) + ..... + an の演算をすることができます。多項式 a0*x^n + a1*x^(n-1) + ..... + an を Octave では係数の横ベクトル [a0, a1, ...., an ] で表します。例えば y = x^2 + 2x + 3 の場合は

y = [1, 2, 3]

となります。

加減算

多項式の加減算は二つの多項式の次数をそろえる必要があります。y1 = x^2 + 2*x と y2 = x + 3 を加算するには次のようにします。

octave:> y1 = [1, 2, 0];
octave:> y2 = [0, 1, 3];
octave:> y1 + y2
ans =

  1  3  3

乗算

多項式の乗算は conv 関数で行います。y1 = x + 1、y2 = x^2 - x + 1 の乗算は次のようにします。

octave:> y1 = [1, 1];
octave:> y2 = [1, -1, 1];
octave:> conv (y1, y2)
ans =

  1  0  0  1

除算

多項式の除算は deconv 関数で行います。次の実行例では、y1 = 4x^3 + 3x^2 + 2x + 9 を y2 = x^2 + 2x + 3 で割った商は b = 4x - 5 で 余りが r = 24 になります。

octave:> y1 = [1, 2, 3];
octave:> y2 = [4, 3, 2, 9];
octave:> [b, r] = deconv (y2, y1)
b =

   4  -5

r = 24

式の値

y = x^2 + 3x + 1 に x = 2 を代入したときの式の値は次のように計算できます。

octave:> y = [2, 3, 1];
octave:> polyval(y, 2)
ans = 15

方程式

方程式の根は root 関数で得ることができます。x^2 - 2x - 3 = 0 の解は次のようにして得られます。

octave:> roots ( [ 1, -2, -3 ] )
ans =

   3.0000
  -1.0000

多項式近似

x と y のデータの組 y = ax + b や y = ax^2 + bx + c などの回帰多項式を求めることができます。polyfit 関数は第一引数に x のデータ、第二引数に y のデータ 第三の引数に次数をとり、回帰式の係数と回帰曲線のデータを出力します。

octave:> x = linspace (0, 1, 100);
octave:> y = 3 * x .* x + randn(size(x));
octave:> [a1, y1] = polyfit(x, y, 1);
octave:> a1
a1 =

   2.78584
  -0.44202

octave:> [a2, y2] = polyfit(x, y, 2);
octave:>
a2 =

   5.42645
  -2.64061
   0.45325

octave:> plot(x, y, x, y1, x, y2)