Programming with MATLAB | ![]() ![]() |
Polynomクラスに対するconverterメソッド
Converterメソッドは、あるクラスのオブジェクトを他のクラスのオブジェクトに変換します。MATLABに用意されている重要な二つのconverterメソッドは、double
とchar
です。double
への変換は、MATLABの従来までの行列を作成します。しかし、いくつかのクラスに対しては、これは適切でない場合もあります。char
への変換は、プリント出力の作成に有効なものです。
Polynomからdoubleへの変換
polynomクラスに対するdouble converterメソッドは、非常に簡単なM-ファイル@polynom/double.m
です。これは、単に係数ベクトルを戻すだけです。
function c = double(p) % POLYNOM/DOUBLE polynom オブジェクトを係数ベクトルに変換 % c = DOUBLE(p) は、多項式オブジェクトを、 % xの降べきの順に並べた係数を含むベクトル c に変換 c = p.c;
p = polynom([1 0 -2 -5])
double(p)
ans = 1 0 -2 -5
PolynomからCharへの変換
Charへの変換は、独立変数x
のベキ乗表現を含んだキャラクタ文字列を作成するので、キーのメソッドになります。そのために、x
を一度設定すると、戻される文字列は、文法的に正しいMATLAB表現になり、後で、計算に使用できます。
function s = char(p) % POLYNOM/CHAR
% CHAR(p) は、p.c の文字列表現です。
if all(p.c == 0)
s = '0';
else
d = length(p.c) - 1;
s = [];
for a = p.c;
if a ~= 0;
if ~isempty(s)
if a > 0
s = [s ' + '];
else
s = [s '
-'];
a =
-a;
end
end
if a ~= 1 | d == 0
s = [s num2str(a)];
if d > 0
s = [s '*'];
end
end
if d >= 2
s = [s 'x^' int2str(d)];
elseif d == 1
s = [s 'x'];
end
end
d = d - 1;
end
end
出力の計算
p = polynom([1 0-
2-
5]);
char(p)
ans =
x^3 - 2*x - 5
char
により出力される値は、x
に対するスカラ値を設定すると、eval
に渡される文字列になります。たとえば、
x = 3; eval(char(p)) ans = 16
多項式を計算するより良いメソッドについては、"Polynom subsrefメソッド"を参照してください。
![]() |
Polynomコンストラクタメソッド | polynom displayメソッド | ![]() |