このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
rewrite
別の関数による式の書き換え
説明
例
三角関数と指数関数の間の書き換え
ターゲット "exp"
を指定して、三角関数を指数関数で書き換えます。
syms x sin2exp = rewrite(sin(x),"exp")
sin2exp =
tan2exp = rewrite(tan(x),"exp")
tan2exp =
三角関数をターゲットに指定して、指数関数を任意の三角関数で書き換えます。ターゲット オプションの完全なリストについては、targetを参照してください。
syms x exp2sin = rewrite(exp(x),"sin")
exp2sin =
exp2tan = rewrite(-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1),"tan")
exp2tan =
simplify
を使用して exp2tan
を所定の形式に単純化します。
exp2tan = simplify(exp2tan)
exp2tan =
三角関数間の書き換え
ターゲットを指定して、三角関数を別の三角関数で書き換えます。ターゲット オプションの完全なリストについては、targetを参照してください。
ターゲット "sin"
を指定して、tan(x)
を正弦関数で書き換えます。
syms x tan2sin = rewrite(tan(x),"sin")
tan2sin =
逆三角関数と対数関数の間の書き換え
ターゲット "log"
を指定して、逆三角関数を対数関数で書き換えます。ターゲット オプションの完全なリストについては、targetを参照してください。
acos(x)
と acot(x)
を関数 log
で書き換えます。
syms x acos2log = rewrite(acos(x),"log")
acos2log =
acot2log = rewrite(acot(x),"log")
acot2log =
同様に、逆三角関数をターゲットに指定して、対数関数を任意の逆三角関数で書き換えます。
行列要素の書き換え
行列で rewrite
を呼び出して、行列の各要素を、書き換えます。
行列のすべての要素を関数 exp
で書き換えます。
syms x matrix = [sin(x) cos(x); sinh(x) cosh(x)]; R = rewrite(matrix,"exp")
R =
正弦関数と余弦関数の間の書き換え
余弦関数を正弦関数に書き換えます。ここで、関数 rewrite
は、任意の に対して有効である恒等式 を使用して、余弦関数を書き換えます。
syms x R = rewrite(cos(x),"sin")
R =
rewrite
が、sin(x)
を または として書き換えることはありません。これは、それらの式がすべての x
に対して有効とはならないためです。しかし、これらの式の 2 乗を使用して sin(x)^2
を表現するなら、すべての x
に対して有効になります。したがって、rewrite
は sin(x)^2
を書き換えることができます。
syms x R1 = rewrite(sin(x),"cos")
R1 =
R2 = rewrite(sin(x)^2,"cos")
R2 =
関数 root
の書き換え
R2023a 以降
root
を使用して多項式の根を求めます。結果は、多項式の k
乗根を関数 root
で (k = 1
、2
、3
、4
、または 5
として) 表した列ベクトルになります。
syms x
sols = root(x^5 - x^4 - 1,x)
sols =
rewrite
を "expandroot"
オプションとともに使用して、sols
の関数 root
を展開します。結果は、厳密なシンボリック数で演算を行う ^、*、/、+、および – などの算術演算で表されます。展開された結果には算術演算を行う多くの項が含まれる可能性があるため、この結果の数値近似は (丸め誤差の蓄積により) 不正確になる可能性があります。
R = rewrite(sols,"expandroot")
R =
別の方法として、vpa
を使用して可変精度のシンボリック数を返すことにより、sols
を数値的に直接近似することができます。結果の数値は、既定で 32 桁の有効桁数をもち、より正確です。
solsVpa = vpa(sols)
solsVpa =
Symbolic Math Toolbox™ なしで sols
を使用するには、コードを生成し、matlabFunction
を使用して sols
を MATLAB® 関数に変換します。生成されたファイルは、数値 double
データ型で演算を行う関数roots
を使用します。
matlabFunction(sols,"File","myfile"); type myfile
function sols = myfile %MYFILE % SOLS = MYFILE % This function was generated by the Symbolic Math Toolbox version 23.2. % 26-Sep-2023 22:09:56 t0 = roots([1.0,-1.0,0.0,0.0,0.0,-1.0]); t2 = t0(1); t0 = roots([1.0,-1.0,0.0,0.0,0.0,-1.0]); t3 = t0(2); t0 = roots([1.0,-1.0,0.0,0.0,0.0,-1.0]); t4 = t0(3); t0 = roots([1.0,-1.0,0.0,0.0,0.0,-1.0]); t5 = t0(4); t0 = roots([1.0,-1.0,0.0,0.0,0.0,-1.0]); t6 = t0(5); sols = [t2;t3;t4;t5;t6]; end
関数 symsum
と関数 root
の書き換え
R2023a 以降
多項式の分数の不定積分を求めます。結果は、 および の記号で表現されるものとして、関数 symsum
および関数 root
で表されます。
syms x
F = int(1/(x^3 + x - 1),x)
F =
結果を算術演算で書き換えます。シンボリックな総和は最も外側の演算であるため、最初に "expandsum"
オプションを指定して関数 rewrite
を適用し、symsum
を展開します。次に、"expandroot"
オプションを使用して再度 rewrite
を適用し、関数 root
を書き換えます。結果のシンボリック式は、^、*、/、+、および – などの算術演算で表されます。
R = rewrite(rewrite(F,"expandsum"),"expandroot")
R =
入力引数
expr
— 書き換え対象の入力
シンボリック数 | シンボリック変数 | シンボリック式 | シンボリック関数 | シンボリック ベクトル | シンボリック行列 | シンボリック多次元配列
書き換えまたは置き換え対象の入力。シンボリック数、シンボリック変数、シンボリック式、シンボリック関数、シンボリック ベクトル、シンボリック行列、またはシンボリック多次元配列として指定します。
target
— ターゲット関数または展開する関数
string スカラー | 文字ベクトル
ターゲット関数または展開する関数。string スカラーまたは文字ベクトルとして指定します。次の表は、target
オプションで許可されているすべての書き換え規則をまとめたものです。
ターゲット | 書き換えまたは置き換え対象の関数 | 基準とする関数 |
---|---|---|
"exp" | すべての三角関数と双曲線関数 (逆関数を含む) | exp , log |
"log" | すべての逆三角関数と逆双曲線関数 | log |
"sincos" | tan , cot , exp , sinh , cosh , tanh , coth | sin , cos |
"sin" 、"cos" 、"tan" 、または "cot" | sin 、cos 、exp 、tan 、cot 、sinh 、cosh 、tanh 、coth (ターゲットを除く) | ターゲットの三角関数 |
"sinhcosh" | tan , cot , exp , sin , cos , tanh , coth | sinh , cosh |
"sinh" , "cosh" , "tanh" , "coth" | tan 、cot 、exp 、sin 、cos 、sinh 、cosh 、tanh 、coth (ターゲットを除く) | ターゲットの双曲線関数 |
"asin" , "acos" , "atan" , "acot" | log およびすべての逆三角関数と逆双曲線関数 | ターゲットの逆三角関数 |
"asinh" , "acosh" , "atanh" , "acoth" | log およびすべての逆三角関数と逆双曲線関数 | ターゲットの逆双曲線関数 |
"sqrt" | abs(x + 1i*y) | sqrt(x^2 + y^2) |
"heaviside" | sign , triangularPulse , rectangularPulse | heaviside |
"piecewise" | abs , heaviside , sign , triangularPulse , rectangularPulse | piecewise |
"expandroot" | root | ^、*、/、+、および – などの算術演算 |
"expandsum" | symsum | + や – などの算術演算 |
ヒント
rewrite
は、置換が数学的に有効な場合にのみ、expr
内のシンボリック関数呼び出しをtarget
で指定された別の関数に置き換えます。それ以外の場合、元の関数呼び出しを保持します。例については、正弦関数と余弦関数の間の書き換えを参照してください。
バージョン履歴
R2012a で導入R2023a: 関数 root
と関数 symsum
の展開
関数 root
と関数 symsum
を使用するシンボリック式は、算術演算を使用して書き換えまたは展開することができます。例については、関数 root の書き換えおよび関数 symsum と関数 root の書き換えを参照してください。
参考
関数
collect
|combine
|expand
|factor
|horner
|numden
|simplify
|simplifyFraction
|unitConvert
ライブ エディター タスク
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)