Main Content

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

rewrite

別の関数による式の書き換え

説明

rewrite(expr,target) は、ターゲット関数 target でシンボリック式 expr を書き換えます。書き換えられた式は、元の式と数学的に等価です。expr がベクトルまたは行列の場合、rewriteexpr の要素ごとに働きます。

すべて折りたたむ

ターゲット 'exp' を指定して、三角関数を指数関数で書き換えます。

syms x
sin2exp = rewrite(sin(x), 'exp')
tan2exp = rewrite(tan(x), 'exp')
sin2exp =
(exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2

tan2exp =
-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1)

三角関数をターゲットに指定して、指数関数を任意の三角関数で書き換えます。ターゲットの完全なリストについては、target を参照してください。

syms x
exp2sin = rewrite(exp(x), 'sin')
exp2tan = rewrite(-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1), 'tan')
exp2sin =
1 - 2*sin((x*1i)/2)^2 - sin(x*1i)*1i
exp2tan =
-(((tan(x) - 1i)*1i)/(tan(x) + 1i) + 1i)/...
    ((tan(x) - 1i)/(tan(x) + 1i) - 1)

simplify を使用して exp2tan を所定の形式に単純化します。

exp2tan = simplify(exp2tan)
exp2tan =
tan(x)

ターゲットを指定して、三角関数を別の三角関数で書き換えます。ターゲットの完全なリストについては、target を参照してください。

ターゲット 'sin' を指定して、tan(x) を正弦関数で書き換えます。

syms x
tan2sin = rewrite(tan(x), 'sin')
tan2sin =
-sin(x)/(2*sin(x/2)^2 - 1)

三角関数をターゲットに指定して、双曲線関数を任意の三角関数で書き換えます。ターゲットの完全なリストについては、target を参照してください。

ターゲット 'sin' を指定して、tanh(x) を正弦関数で書き換えます。

syms x
tanh2sin = rewrite(tanh(x), 'sin')
tanh2sin =
(sin(x*1i)*1i)/(2*sin((x*1i)/2)^2 - 1)

同様に、双曲線関数をターゲットに指定して、三角関数を双曲線関数で書き換えます。

ターゲット 'log' を指定して、逆三角関数を対数関数で書き換えます。ターゲットの完全なリストについては、target を参照してください。

acos(x)acot(x) を関数 log で書き換えます。

syms x
acos2log = rewrite(acos(x), 'log')
acot2log = rewrite(acot(x), 'log')
acos2log =
-log(x + (1 - x^2)^(1/2)*1i)*1i

acot2log =
(log(1 - 1i/x)*1i)/2 - (log(1i/x + 1)*1i)/2

同様に、逆三角関数をターゲットに指定して、対数関数を逆三角関数で書き換えます。

行列で rewrite を呼び出して、行列の各要素を、書き換えます。

行列のすべての要素を関数 exp で書き換えます。

syms x
matrix = [sin(x) cos(x); sinh(x) cosh(x)];
rewrite(matrix, 'exp')
ans =
[ (exp(-x*1i)*1i)/2 - (exp(x*1i)*1i)/2, exp(-x*1i)/2 + exp(x*1i)/2]
[                 exp(x)/2 - exp(-x)/2,       exp(-x)/2 + exp(x)/2]

余弦関数を正弦関数に書き換えます。この場合、rewrite は任意の x に対して有効な等式 cos(2*x) = 1 – 2*sin(x)^2 を使用して、余弦関数を置き換えます。

syms x
rewrite(cos(x),'sin')
ans =
1 - 2*sin(x/2)^2

rewrite が、sin(x)1cos2(x)1cos2(x) で置き換えることがないのは、すべての x に対してこれらの式が有効ではないためです。ただし、これらの式の 2 乗の使用による sin(x)^2 の置き換えは、すべての x に対して有効です。したがって、rewritesin(x)^2 を置き換えます。

syms x
rewrite(sin(x),'cos')
rewrite(sin(x)^2,'cos')
ans =
sin(x)
ans =
1 - cos(x)^2

入力引数

すべて折りたたむ

書き換え対象の入力。シンボリック数、変数、式、関数、ベクトル、行列または多次元配列として指定します。

ターゲット関数。文字ベクトルとして指定します。この表は、可能なターゲットすべての書き換え規則をまとめています。

ターゲット書き換え対象の関数基準とする関数
'exp'すべての三角関数と双曲線関数 (逆関数を含む)exp, log
'log'すべての逆三角関数と逆双曲線関数log
'sincos'tan, cot, exp, sinh, cosh, tanh, cothsin, cos
'sin''cos''tan'、または 'cot'sincosexptancotsinhcoshtanhcoth (ターゲットを除く)ターゲットの三角関数
'sinhcosh'tan, cot, exp, sin, cos, tanh, cothsinh, cosh
'sinh', 'cosh', 'tanh', 'coth'tancotexpsincossinhcoshtanhcoth (ターゲットを除く)ターゲットの双曲線関数
'asin', 'acos', 'atan', 'acot'log およびすべての逆三角関数と逆双曲線関数ターゲットの逆三角関数
'asinh', 'acosh', 'atanh', 'acoth'log およびすべての逆三角関数と逆双曲線関数ターゲットの逆双曲線関数
'sqrt'abs(x + 1i*y)sqrt(x^2 + y^2)
'heaviside'sign, triangularPulse, rectangularPulseheaviside
'piecewise'abs, heaviside, sign, triangularPulse, rectangularPulsepiecewise

ヒント

  • rewrite は、expr でのシンボリック関数呼び出しを、ターゲット関数で置き換えます (ただし、このような置き換えが数学的に有効な場合のみ)。それ以外の場合、元の関数呼び出しを保持します。

バージョン履歴

R2012a で導入