使い方次第だと思うが、面白い機能なので覚書。
シンボリック関数はsymfunで作ることができる(フォーマルなやり方)。簡易なやり方としてsym f(x,y)のようにすることもできる(xxとyyは自動生成される)。
syms phi1(xx) phi2(xx);
phi1(xx) = xx;
phi2(xx) = xx^2;
funcArray = symfun([1, phi1(xx), phi2(xx)], xx);
funcArray(xx) = [ 1, xx, xx^2]
使い方:funcArray(2)とするとans = [ 1, 2, 4]が返ってくる。
補足:2変数関数にもできる
clear;
syms phi1(xx, yy) phi2(xx, yy); % xxとyyは自動生成される
phi1(xx, yy) = xx*yy;
phi2(xx, yy) = xx^2 * yy^2;
funcArray = symfun([1, phi1(xx, yy), phi2(xx, yy)], [xx, yy]);
funcArray(xx, yy) = [ 1, xx*yy, xx^2*yy^2]
使い方:funcArray(2, 2)とするとans = [ 1, 4, 16]が返ってくる。
さらにその「シンボリック関数の配列」を(まるで普通の関数のように)微分することもできる。
chebVec(x, y) = chebyshevT([0, 1, 2], x) .* chebyshevT([0, 1, 2], y)
chebVec(x, y) = [ 1, x*y, (2*x^2 - 1)*(2*y^2 - 1)]
diff(chebVec, x)
ans(x, y) = [ 0, y, 4*x*(2*y^2 - 1)]
公式ページのマニュアルだと少しわかりにくい。
参考: