Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

数学的オブジェクトを表現するためのシンボリック オブジェクト

Symbolic Math Toolbox™ で数学の問題を解くには、さまざまな数学的オブジェクトを表現するためのシンボリック オブジェクトを定義します。この例では、以下のシンボリック オブジェクトの使用方法について説明します。

  • シンボリック数

  • シンボリック スカラー変数、シンボリック関数、およびシンボリック式

  • シンボリック方程式

  • シンボリック ベクトルとシンボリック行列

  • シンボリック行列変数 (R2021a 以降)

シンボリック数

数値をシンボリック数として定義し、数値近似を使用するのではなく厳密な形式としてその数値を扱うよう MATLAB® に指定します。たとえば、シンボリック数を使用して逆三角関数 θ=sin1(1/2) の引数を表現します。

A picture showing symbolic number that represents the argument of an inverse trigonometric function.

sym を使用してシンボリック数 1/2 を作成し、それを a に代入します。

a = sym(1/sqrt(2))
a =
2^(1/2)/2

a の逆正弦を求めます。結果はシンボリック数 pi/4 です。

thetaSym = asin(a)
thetaSym =
pi/4

シンボリック数を可変精度の演算に変換するには、vpa を使用できます。結果は有効桁数が 32 桁の小数になります。

thetaVpa = vpa(thetaSym)
thetaVpa =
0.78539816339744830961566084581988

シンボリック数を倍精度の数値に変換するには、double を使用します。数値演算とシンボリック演算の選択の詳細については、数値演算またはシンボリック演算の選択を参照してください。

thetaDouble = double(thetaSym)
thetaDouble =
0.7854

シンボリック スカラー変数、シンボリック関数、およびシンボリック式

変数、関数、式をシンボリック オブジェクトとして定義すると、これらのシンボリック オブジェクトを使用して、数式の単純化や方程式の求解などの代数演算を実行できます。たとえば、シンボリック スカラー変数、シンボリック関数、およびシンボリック式を使用して 2 次関数 f(x)=x2+x2 を表現します。シンボリック スカラー変数は、簡潔に "シンボリック変数" とも呼ばれます。

A picture showing symbolic scalar variable, function, and expression that represent the quadratic function.

syms を使用してシンボリック スカラー変数 x を作成します。sym を使用してシンボリック スカラー変数を作成することもできます。symssym の選択の詳細については、関数 syms または sym の選択を参照してください。シンボリック式 x^2 + x - 2 を定義して 2 次方程式の右辺を表現し、それを f(x) に代入します。ここで、識別子 f(x) は、この 2 次関数を表現するシンボリック関数を参照します。

syms x
f(x) = x^2 + x - 2
f(x) =
x^2 + x -2

その後、かっこ内の入力引数を指定して、この 2 次関数を評価できます。たとえば、f(2) を評価します。

fVal = f(2)
fVal =
4

2 次方程式 f(x)=0 を解くこともできます。solve を使用して 2 次方程式の根を求めます。solve は 2 つの解を 2 つのシンボリック数のベクトルとして返します。

sols = solve(f)
sols =
-2
 1

シンボリック方程式

数学の方程式をシンボリック方程式として定義することで、その方程式の解を求めることができます。たとえば、シンボリック方程式を使用して三角関数の問題 2sin(t)cos(t)=1 を解きます。

A picture showing symbolic equation that represents the trigonometric problem.

syms を使用してシンボリック関数 g(t) を作成します。g(t) にシンボリック式 2*sin(t)*cos(t) を代入します。

syms g(t)
g(t) = 2*sin(t)*cos(t)
g(t) = 
2*cos(t)*sin(t)
方程式を定義するには、== 演算子を使用し、数学的関係 g(t) == 1eqn に代入します。識別子 eqn が、この三角関数の問題を表現するシンボリック方程式です。
eqn = g(t) == 1
eqn = 
2*cos(t)*sin(t) == 1

solve を使用して三角関数の問題の解を求めます。

sol = solve(eqn)
sol = 
pi/4

シンボリック ベクトルとシンボリック行列

シンボリック ベクトルとシンボリック行列を使用して線形方程式系を表現し、求解します。

x+2y=u4x+5y=v

方程式系は、2 つのシンボリック方程式のベクトルとして表現できます。また、方程式系を、シンボリック数の行列とシンボリック変数のベクトルを含む行列問題として表現することもできます。簡潔にするために、シンボリック オブジェクトのベクトルは "シンボリック ベクトル"、シンボリック オブジェクトの行列は "シンボリック行列" と呼びます。

A picture of symbolic vectors and matrix that represent a system of linear equations and a matrix problem.

2 つのシンボリック方程式 eq1eq2 を作成します。2 つの方程式を組み合わせてシンボリック ベクトルにします。

syms u v x y
eq1 = x + 2*y == u;
eq2 = 4*x + 5*y == v;
eqns = [eq1, eq2]
eqns =
[x + 2*y == u, 4*x + 5*y == v]

solve を使用して eqns で表現される方程式系の解を求めます。solve は、方程式の各変数に基づいて名前が付けられたフィールドをもつ構造体 S を返します。解には、S.x および S.y というドット表記を使用してアクセスできます。

S = solve(eqns);
S.x
ans =
(2*v)/3 - (5*u)/3
S.y
ans =
(4*u)/3 - v/3

線形方程式系を解くための別の方法は、それを行列形式に変換することです。equationsToMatrix を使用して方程式系を行列形式に変換し、出力を Ab に代入します。ここで、A はシンボリック行列であり、b はシンボリック ベクトルです。行列除算演算子 \ を使用して、行列の問題を解きます。

[A,b] = equationsToMatrix(eqns,x,y)
A =
[1, 2]
[4, 5]
 
 
b =
u
v
sols = A\b
sols =
(2*v)/3 - (5*u)/3
    (4*u)/3 - v/3

シンボリック行列変数

R2021a 以降

シンボリック行列変数を使用し、ベクトルについて微分を評価します。

α=yTAxαx=yTAαy=xTAT

シンボリック行列変数は、行列、ベクトル、およびスカラーをアトミックなシンボルとして表現します。シンボリック行列変数は、整形された簡潔な表示を提供し、より明確な数式を示します。教科書からベクトルに基づく式を選択し、それを Symbolic Math Toolbox に入力できます。

A picture of symbolic matrix variables that represent differentials with respect to vectors.

matrix 引数をもつ syms コマンドを使用し、3 つのシンボリック行列変数 xy、および A を作成します。非スカラーのシンボリック行列変数は、コマンド ウィンドウおよびライブ エディターにおいて太字で表示されます。

syms x [4 1] matrix
syms y [3 1] matrix
syms A [3 4] matrix
x
y
A
x =
x

y =
y

A =
A
alpha を定義します。シンボリック行列変数 x および y で表現されるベクトル x および y について、alpha の微分を求めます。
alpha = y.'*A*x
alpha =
y.'*A*x
diff(alpha,x)
ans =
y.'*A
diff(alpha,y)
alpha =
x.'*A.'

シンボリック オブジェクトの比較

この表は、Symbolic Math Toolbox で使用できるさまざまなシンボリック オブジェクトの比較です。

シンボリック オブジェクトMATLAB コマンドの例シンボリック オブジェクトのサイズデータ型
シンボリック数
a = 1/sqrt(sym(2))
theta = asin(a)
a =
2^(1/2)/2
 
theta =
pi/4
11sym
シンボリック スカラー変数
syms x y u v
11sym
シンボリック関数
syms x
f(x) = x^2 + x - 2
syms g(t)
g(t) = 2*sin(t)*cos(t)
f(x) =
x^2 + x - 2
 
g(t) =
2*cos(t)*sin(t)
11symfun
シンボリック方程式
syms u v x y
eq1 = x + 2*y == u
eq2 = 4*x + 5*y == v
eq1 = 
x + 2*y == u
 
eq2 =
4*x + 5*y == v
11sym
シンボリック式
syms x
expr = x^2 + x - 2
expr2 = 2*sin(x)*cos(x)
expr = 
x^2 + x - 2
 
expr2 =
2*cos(x)*sin(x)
11sym
シンボリック ベクトル
syms u v
b = [u v]
b = 
[u, v]
1n 列、または m1sym
シンボリック行列
syms A x y
A = [x y; x*y y^2]
A =
[  x,   y]
[x*y, y^2]
mnsym
シンボリック多次元配列
syms A [2 1 2]
A
A(:,:,1) =
A1_1
A2_1
 
A(:,:,2) =
A1_2
A2_2
sz1 x sz2-...-sznsym
シンボリック行列変数 (R2021a 以降)
syms A B [2 3] matrix
A
B
A
B
mnsymmatrix

参考

| | | | |

関連するトピック