Programming with MATLAB | ![]() ![]() |
Polynomクラスに対する関数の多重定義
MATLABは、係数ベクトルで表わされた多項式に適用できるいくつかの関数を既に用意しています。これらは、新しいpolynomオブジェクトにも適用できるように多重定義することができます。多くの場合、多重定義されたメソッドは、オリジナルの関数を係数フィールドに適用できます。
Polynomクラスに対するrootsの多重定義
メソッド@polynom/roots.m
は、polynomオブジェクトの根を探索します。
function r = roots(p) % POLYNOM/ROOTS. ROOTS(p) は、pの根を含むベクトルです。 r = roots(p.c);
roots(p)
ans = 2.0946
-1.0473+ 1.1359i
-1.0473- 1.1359i
Polynomクラスに対するpolyvalの多重定義
関数polyval
は、設定した点群での多項式の値を計算します。@polynom/polyval.m
は、入れ子になった乗算、または、xの異なるベキ乗を計算するために使う乗算の演算回数を減らすHorner法のどちらかを使います。
function y = polyval(p,x) % POLYNOM/POLYVAL POLYVAL(p,x) は、点xでpを計算します。 y = 0; for a = p.c y = y.*x + a; end
Polynomクラスに対するplotの多重定義
多重定義されたplot
関数は、root
とpolyval
を使います。関数は、すべての実数根を含む範囲よりもわずかに大きな範囲を独立変数に選びます。それで、polyval
は、その範囲内で数百点で多項式を計算するために使われます。
function plot(p) % POLYNOM/PLOT PLOT(p) は、多項式 p をプロットします。 r = max(abs(roots(p))); x = (-1.1:0.01:1.1)*r; y = polyval(p,x); plot(x,y); title(char(p)) grid on
Polynomクラスに対するdiffの多重定義
メソッド@polynom/diff.m
は、多項式の差分を行い、次数を一つ減らし、そのオリジナルの次数と個々の係数の乗算を行います。
function q = diff(p) % POLYNOM/DIFF DIFF(p) は、多項式 p の微分を計算 c = p.c; d = length(c) - 1; % 次数 q = polynom(p.c(1:d).*(d:-1:1));
![]() |
代数演算子の多重定義 | クラスメソッドの一覧 | ![]() |