このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
シンボリック数、シンボリック変数およびシンボリック式の作成
この例では、シンボリック数、シンボリック変数、およびシンボリック式を作成する方法を説明します。シンボリック数学による処理の詳細については、シンボリック計算の実行を参照してください。
正確な表現を使用したシンボリック数の作成
シンボリック数はsym
を使用して作成できます。シンボリック数は正確な表現であり、浮動小数点数とは異なります。
sym
を使用してシンボリック数を作成し、浮動小数点による同じ数値と比較します。
a1Sym = sym(1/3)
a1Sym =
a1 = 1/3
a1 = 0.3333
a2Sym = sym(pi)
a2Sym =
a2 = pi
a2 = 3.1416
シンボリック数は、正確な有理型で表現されます。一方、浮動小数点数は小数近似です。
シンボリック数の計算は正確です。この正確性について、sin(pi)
をシンボリック的および数値的に求めることで示します。シンボリックな結果は正確ですが、数値の結果は近似です。
bSym = sin(sym(pi))
bSym =
b = sin(pi)
b = 1.2246e-16
sym
を数値入力に対して使用すると、まず数値式が倍精度 (MATLAB® の既定の精度) の数値として評価されますが、この精度はあまり高くない可能性があります。次に、sym
がその倍精度の数値に適用されます。倍精度として評価せずに正確な数値を表すには、引用符を使用して文字ベクトルとして表します。たとえば、非常に大きな整数を正確に表すためのシンボリック数を作成します。
inaccurateNum = sym(123456789012345678)
inaccurateNum =
accurateNum = sym('123456789012345678')
accurateNum =
数の虚数部を 1i
や 2i
のように指定して、シンボリック複素数を作成することもできます。
sym('1234567 + 1i')
ans =
数のシンボリック表現の詳細については、数値のシンボリックへの変換を参照してください。
可変精度のシンボリック数の作成
可変精度の浮動小数点演算を使用してシンボリック数を作成するには、vpa
を使用します。既定では、vpa
は有効桁数 32 桁まで値を計算します。
piVpa = vpa(pi)
piVpa =
vpa
を log(2)
などの数値式に対して使用すると、まず有効桁数が 32 桁未満である倍精度 (MATLAB の既定の精度) の数値としてその式が評価されます。次に、vpa
がその倍精度の数値に適用されますが、この精度はあまり高くない可能性があります。より正確な結果が必要な場合は、sym
を使用して倍精度の値をシンボリック数の式に変換し、vpa
を使用して可変精度で結果を評価します。たとえば、log(2)
を 17 桁の精度と 20 桁の精度で求めます。
vpaOnDouble = vpa(log(2))
vpaOnDouble =
vpaOnSym_17 = vpa(log(sym(2)),17)
vpaOnSym_17 =
vpaOnSym_20 = vpa(log(sym(2)),20)
vpaOnSym_20 =
大きい数値を変換する場合、引用符を使用してその数値を正確に表現します。
inaccurateNum = vpa(123456789012345678)
inaccurateNum =
accurateNum = vpa('123456789012345678')
accurateNum =
シンボリック変数の作成
シンボリック変数の作成には、syms
またはsym
を使用できます。これらの関数の標準的な使用法を以下に示します。
sym
– 番号付きシンボリック変数、MATLAB 関数のシンボリック変数、または値が MATLAB ワークスペース内の名前と異なっているシンボリック数を作成します。syms
– 対話型のシンボリック ワークフロー、つまり MATLAB コマンド ラインまたは MATLAB ライブ スクリプトでのシンボリック変数作成に対して、"新しい" シンボリック変数を作成します。"新しい" シンボリック変数には仮定がありません。
syms
コマンドは sym
構文の省略表現ですが、2 つの関数による仮定の処理は異なります。syms
は、変数を作成する際に仮定を消去します。しかし、sym
を使用した変数の再作成ではその仮定は消去されません。これら 2 つの関数の違いの詳細については、関数 syms または sym の選択を参照してください。
syms
と sym
をそれぞれ使用して、シンボリック変数 x と y を作成します。
syms x y = sym('y')
y =
最初のコマンドは、MATLAB ワークスペースでシンボリック変数 x
を作成します。この変数 x
には値 が代入されます。2 番目のコマンドは、値 を持つシンボリック変数 y
を作成します。
syms
では、1 つのコマンドで複数の変数を作成できます。変数 a
、b
および c
を作成します。
syms a b c
シンボリック変数の配列の作成
番号付きシンボリック変数から成る MATLAB 配列を作成する場合、sym
または syms
の構文を使用できます。
多数の番号付きシンボリック変数の配列を作成するには、sym
を使用します。ワークスペースをクリアします。シンボリック変数 を含む行ベクトルを作成し、MATLAB 変数 A
に割り当てます。MATLAB ワークスペースの変数を表示します。
clear
A = sym('a',[1 10])
A =
whos
Name Size Bytes Class Attributes A 1x10 8 sym
A
は自動的に生成された 10 個の要素から成る 1 行 10 列の配列です。それらの生成された A
の要素は MATLAB ワークスペースに表示されません。
syms
を使用して、多くの新しいシンボリック変数を対応する変数名で MATLAB ワークスペースに作成します。ワークスペースをクリアします。新しいシンボリック変数 a1, ..., a10
を作成します。MATLAB ワークスペースの変数を表示します。
clear syms a [1 10] whos
Name Size Bytes Class Attributes a 1x10 8 sym a1 1x1 8 sym a10 1x1 8 sym a2 1x1 8 sym a3 1x1 8 sym a4 1x1 8 sym a5 1x1 8 sym a6 1x1 8 sym a7 1x1 8 sym a8 1x1 8 sym a9 1x1 8 sym
MATLAB ワークスペースには、シンボリック変数であるワークスペース内の 10 個の MATLAB 変数が含まれます。
syms
コマンドは sym
構文の手頃な省略表現です。一般的な使用法は、対話型のシンボリック ワークフローに対して新しいシンボリック変数を作成することです。sym
構文を使用して次を作成します。
MATLAB 関数のシンボリック変数
多数の番号付きシンボリック変数
値が MATLAB ワークスペース内の名前と異なっているシンボリック変数
シンボリック数 (
sym(3)/11
など)以前に使用した同名のシンボリック変数から仮定を継承しているシンボリック変数
シンボリック式の作成
黄金比 を表すためにシンボリック変数を使ってみましょう。
sym
を使用して黄金比を作成します。
phi = (1 + sqrt(sym(5)))/2;
これで、phi
についてのさまざまな数学演算が実行できます。以下に例を示します。
f = phi^2 - phi - 1
f =
次に、二次関数 を調べます。まず、シンボリック変数 a
、b
、c
、および x
を作成します。
syms a b c x
次に、算術式 を表すシンボリック式 f
を作成します。
f = a*x^2 + b*x + c
f =
solve
を使用し、 について 2 次方程式 を解きます。
x_0 = solve(f == 0,x)
x_0 =
算術式に数学関数を適用することもできます。たとえば、第 1 種ベッセル関数 を算術式 に適用し、 に関する導関数を求めます。
J_0 = besselj(0,f)
J_0 =
DJ_0 = diff(J_0,x)
DJ_0 =
シンボリック式でシンボリック数を作成するには、sym
を使用します。定数のシンボリック式の作成に syms
は使用しないでください。たとえば、値が 5
の式を作成するには、f = sym(5)
を入力します。コマンド f = 5
では、f
がシンボリック式として定義されません。
式をテキスト ファイルから読み取るか数値を厳密に指定する場合、str2sym
を使用して文字列からシンボリック式を作成することもできます。
シンボリック オブジェクト名の再利用
変数をシンボリック式と等価に設定し、syms
コマンドを変数に適用すると、MATLAB は前に定義した式を変数から除去します。
たとえば、シンボリック式 f
を作成します。
syms a b f = a + b
f =
f を再作成すると、MATLAB は式 f
から値 を消去します。
syms f
f
f =
変数から、MATLAB セッションで以前に割り当てていた定義を消去するには syms
コマンドを使用できます。syms
は変数の仮定を消去します。これらの仮定 (実数、整数、有理数、または正数) はシンボリック オブジェクトとは別に保存されます。しかし、sym
を使用した変数の再作成ではその仮定は消去されません。詳細については、シンボリック変数の仮定の使用を参照してください。