Programming with MATLAB    

代数演算子の多重定義

いくつかの代数演算は、多項式に対して有効で、polynomクラスに対して実現されるものです。代数演算子を多重定義するときは、演算を適用したいデータタイプを常に確認する必要があります。この節で、plus, minus, mtimesメソッドは、演算子polynom/polynomやpolynom/doubleの組み合わせでの加算、減算、乗算を行うためにpolynomクラスに対して定義されたものです。

+演算子の多重定義

p、または、qのどちらかがpolynomの場合、つぎの表現

は、@polynom/plus.m関数が(pqが、"オブジェクトの優先順位"で記述するような、より高い優先順位のオブジェクトでなく)存在するならば、その関数を呼び込みます。

つぎのM-ファイルは、polynomクラスに対する+演算子を定義します。

関数は、まず、二つの入力引数が多項式であることを保証しなければなりません。たとえば、つぎのような表現

は、polynomとdoubleを含んでいますが、正常に機能します。それで、関数は、二つの係数ベクトルにアクセスし、二つを同じ長さにするために、必要ならばゼロを付け加えます。実際の加算は、2つの係数ベクトルのベクトル和です。最終的に、関数は、三度polynomコンストラクタを呼び、適切なタイプの結果を作成します。

-演算子の多重定義

プラス(+)演算子と同じアプローチを使って、多重定義されたマイナス(-)演算子を実現できます。MATLABは、p-qを計算するために@polynom/minus.mを呼びます。

*演算子の多重定義

MATLABは、積p*qを計算するためにメソッド@polynom/mtimes.mを呼び出します。関数名の最初に付いている文字mは、MATLABの行列(matrix)乗算の多重定義であることに起因しています。二つの多項式の乗算は、これらの係数ベクトルのコンボリューションです。

多重定義された演算子の使用

polynomオブジェクトを与え、

を実行するとき、つぎの二つの関数@polynom/plus.m@polynom/mtimes.m を呼び、

つぎの結果を出力します。


  Polynom subsrefメソッド Polynomクラスに対する関数の多重定義