メインコンテンツ

symfun

R2026b

シンボリック関数の作成

説明

f(inputs) = formula はシンボリック関数 f を作成します。たとえば、f(x,y) = x + y です。inputs 内のシンボリック変数は、入力引数です。シンボリック式 formula は、関数 f の本体です。

例

f = symfun(formula,inputs) は、形式に則ったシンボリック関数の作成方法です。

例

f = symfun(fM) は、symfunmatrix 型のシンボリック行列関数 fM を symfun 型のシンボリック関数 f に変換します。 (R2024b 以降)

例

例

すべて折りたたむ

シンボリック関数 f(x,y) = x + y を定義します。まず、syms を使用して関数を作成します。その後、関数を定義します。

syms f(x,y)
f(x,y) = x + y
f(x, y) = x+y

x = 1 と y = 2 における f の値を求めます。

f(1,2)
ans = 3

形式に則った構文を使用して関数を再定義します。

syms x y
f = symfun(x+y,[x y])
f(x, y) = x+y

formula を使用して、シンボリック関数の本体を返します。本体は、関数にインデックスを付けるといった演算に使用できます。argnames を使用して、シンボリック関数の引数を返します。

シンボリック関数 [x^2, y^4] にインデックスを付けます。シンボリック関数がスカラーであるため、関数に直接インデックス付けができません。代わりに、関数の本体にインデックスを付けます。

syms f(x,y)
f(x,y) = [x^2, y^4];
fbody = formula(f);
fbody(1)
ans = x2
fbody(2)
ans = y4

関数の引数を返します。

fvars = argnames(f)
fvars = (xy)

2 つのシンボリック関数を作成します。

syms f(x) g(x)
f(x) = 2*x^2 - x;
g(x) = 3*x^2 + 2*x;

2 つのシンボリック関数を、データ型が symfun の別のシンボリック関数 h(x) に結合します。

h(x) = [f(x); g(x)]
h(x) = 

(2 x2-x3 x2+2 x)

関数 h(x) を x=1 および x=2 で評価します。

h(1)
ans = 

(15)

h(2)
ans = 

(616)

また、この 2 つの関数を組み合わせて、データ型が sym のシンボリック式の配列にすることもできます。

h_expr = [f(x); g(x)]
h_expr = 

(2 x2-x3 x2+2 x)

1 番目と 2 番目のシンボリック式にアクセスするために、h_expr にインデックスを付けます。

h_expr(1)
ans = 2 x2-x
h_expr(2)
ans = 3 x2+2 x

R2024b 以降

2 行 1 列および 2 行 2 列のシンボリック行列変数を作成して、行列 X および A を表します。

syms X [2 1] matrix
syms A [2 2] matrix

関数 F(X,A) と ∂F(X,A)/∂XT を表す 2 つのシンボリック行列関数を作成します。シンボリック行列関数を作成するとき、シンボリック行列変数の既存の定義 X および A をワークスペースに保持します。シンボリック行列関数は、入力引数として X および A と同じサイズの行列を必要とします。

syms F(X,A) [1 1] matrix keepargs
syms dF(X,A) [2 1] matrix keepargs

関数 F(X,A)=XTAX を定義し、その微分 ∂F(X,A)/∂XT を求めます。結果のシンボリック行列関数は、X と A による行列表記になります。

F(X,A) = X.'*A*X
F(X, A) = XT A X
dF(X,A) = diff(F,X.')
dF(X, A) = A X+AT X

シンボリック行列関数をデータ型 symfunmatrix から symfun に変換します。結果のシンボリック関数は、X と A の行列要素によるスカラー表記になります。以下の関数は、入力引数としてスカラーを受け入れます。

Fsymfun = symfun(F)
Fsymfun(X1, X2, A1_1, A1_2, A2_1, A2_2) = X1 A1,1 X1+A1,2 X2+X2 A2,1 X1+A2,2 X2
dFsymfun = symfun(dF)
dFsymfun(X1, X2, A1_1, A1_2, A2_1, A2_2) = 

(2 A1,1 X1+A1,2 X2+A2,1 X2A1,2 X1+A2,1 X1+2 A2,2 X2)

入力引数

すべて折りたたむ

関数本体。シンボリック式、シンボリック式のベクトル、または sym データ型に変換可能なシンボリック式の行列として指定します。

例: x + y

関数の入力引数。シンボリック変数、またはシンボリック変数の配列 (複数指定の場合) で指定します。

例: [x,y]

データ型: sym

R2024b 以降

変換されるシンボリック行列関数。シンボリック行列関数として指定します。

または、symfunmatrix2symfun を使用して、シンボリック行列関数をシンボリック関数に変換することもできます。

データ型: symfunmatrix

出力引数

すべて折りたたむ

シンボリック関数。symfun オブジェクトとして返されます。

関数 f のデータ型は symfun ですが、f(1,2) のような評価済みの関数のデータ型は sym になります。

バージョン履歴

R2012a で導入

すべて展開する