Maxima/三角関数・双曲線関数
三角関数・双曲線関数
[編集]Maximaでは、以下の関数・逆関数が定義されている。
関数種 | 通常 | その逆関数 |
三角関数 | sin(x) cos(x) tan(x) |
asin(x) acos(x) atan(x) atan2(y,x) |
割三角関数 | csc(x) sec(x) cot(x) |
acsc(x) asec(x) acot(x) |
双曲線関数 | sinh(x) cosh(x) tanh(x) |
asinh(x) acosh(x) atanh(x) |
割双曲線関数 | csch(x) sech(x) coth(x) |
acsch(x) asech(x) acoth(x) |
角度の単位はラジアン(radian)で、円周率%piを用いてあらわすことができる。atan2(y,x)は座標(x,y)の極座標変換などの際に、プログラム言語等で良く用いられる偏角を求める関数
(ここでsgn(y)はyの符号を返す関数)のことで、値域(-%pi,%pi]を返す関数である。(図およびMaxima/複素数#偏角(carg)参考)
簡略化
[編集]三角関数は通常は関数として扱われ、特に指示しない限り簡略化が行われない。
(%i1) sin(x)/cos(x); sin(x) (%o1) ------ cos(x)
自動的に簡略化される場合
[編集]引数に%pi/6の整数倍の定数項がある場合は、自動的に簡略化される。 引数が%iの項だけの場合は三角関数と双曲線関数の変換が行われる。
(%i1) sin(%pi/2); (%o1) 1; (%i2) sin(x+%pi/2); (%o2) cos(x); (%i3) cos(%i*x); (%o3) cosh(x);
三角関数それぞれの係数をまとめる(trigsimp)
[編集]trigsimp(式)を用いると、
- 三角関数ごとの項にまとめられる。
- sin2(x) + cos2(x) = 1などの単純化が施される。
(%i1) trigsimp(1-sin(x)^2); 2 (%o1) cos (x) (%i2) trigsimp(1+tan(x)^2); 1 (%o2) ------- 2 cos (x) (%i3) (a*sin(x)-b*cos(x))^2+(a*cos(x)+c*sin(x))^2; 2 2 (%o3) (c sin(x) + a cos(x)) + (a sin(x) - b cos(x)) (%i4) expand(%); 2 2 2 2 (%o4) c sin (x) + a sin (x) + 2 a c cos(x) sin(x) - 2 a b cos(x) sin(x) 2 2 2 2 + b cos (x) + a cos (x) (%i5) trigsimp(%); 2 2 2 2 2 (%o5) (2 a c - 2 a b) cos(x) sin(x) + (b - c ) cos (x) + c + a
引数を外に展開する(trigexpand)
[編集]trigexpand(式)は、加法定理・倍角公式などを用いて、引数を関数外に展開する。
(%i1) trigexpand(sin(x+y)); (%o1) cos(x) sin(y) + sin(x) cos(y) (%i2) trigexpand(cos(x+y)); (%o2) cos(x) cos(y) - sin(x) sin(y) (%i3) trigexpand(tan(x+y)); tan(y) + tan(x) (%o3) ----------------- 1 - tan(x) tan(y) (%i4) trigexpand(sin(2*x)); (%o4) 2 cos(x) sin(x)
三角関数の積を極力へらし、引数内に収める(trigreduce)
[編集]trigreduce(式)は、
- 三角関数の積・自乗などを、半角・積和公式などを用いて引数に収める。
- sin(x)/cos(x)=tan(x)など三角関数間の変換が行われる。
積分前準備や周波数解析などに便利。
(%i1) trigreduce(sin(x)*cos(y)); sin(y + x) sin(y - x) (%o1) ---------- - ---------- 2 2 (%i2) trigreduce(1/cos(x)); (%o2) sec(x)
指数関数表式にする(exponentialize)
[編集]exponentializeフラグがtrueの時、三角関数・双曲線関数は指数関数で表されるようになる。初期状態はfalseである。
(%i1) exponentialize:true; (%o1) true (%i2) sin(3*x); 3 %i x - 3 %i x %i (%e - %e ) (%o2) - -------------------------- 2 (%i3) cosh(x); x - x %e + %e (%o3) ----------- 2
ただし、逆三角関数は対数関数表式になることはない。
(%i4) acos(cos(x)); %i x - %i x %e + %e (%o4) acos(-----------------) 2 (%i5) exponentialize:false; (%o5) false (%i6) acos(cos(x)); (%o6) x
逆三角関数の簡略化
[編集]現時点のMaximaでは、逆三角関数・逆双曲線関数の簡略化は、引数によく知られている定数が代入されている時、1対1対応する三角関数が代入されているときに限られている。
(%i1) atan(1/sqrt(3)); %pi (%o1) --- 6 (%i2) atan(tan(x)); (%o2) x (%i3) asin(sin(x)); (%o3) x (%i4) asin(cos(x)); (%o4) asin(cos(x))
引数内をどうにか対応させると簡略化が行われる。
(%i5) asin(2*sin(x)*cos(x)); (%o5) asin(2 cos(x) sin(x)) (%i6) trigreduce(%); (%o6) 2 x
逆に三角関数の引数に逆関数があるときはよく対応する。
(%i7) cos(asin(x)); 2 (%o7) sqrt(1 - x )
ただし、(%o7)の簡略化はどのような場合も正しいが、(%o2)と(%o3)の簡略化は-%pi/2 < x < %pi/2の場合以外は間違いである。そのため、このような簡略化を制御するために、triginversesフラグが用意されている。
triginversesの値 | 実行される簡略化 |
all(初期値) | sin(asin(x)) -> x asin(sin(x)) -> x |
true | sin(asin(x)) -> x |
false | 簡略化禁止 |
微分・積分
[編集]微分・積分公式が適用される。ただし計算結果は全く簡略化されていないので、後で簡略化を行うべきである。
(%i1) diff(asin(x)); del(x) (%o1) ------------ 2 sqrt(1 - x ) (%i2) diff(sinh(x),x); (%o2) cosh(x) (%i3) diff(sin(x)+cos(3*x)-tan(x^2),x); 2 2 (%o3) - 2 x sec (x ) - 3 sin(3 x) + cos(x) (%i4) integrate(sin(2*x),x); cos(2 x) (%o4) - -------- 2 (%i5) integrate(tan(2*x),x); log(sec(2 x)) (%o5) ------------- 2 (%i6) integrate(sin(x),x,0,1); (%o6) 1 - cos(1) (%i7) integrate(1/sqrt(2-x^2),x); 2 x (%o7) asin(----) 3/2 2
多項式化
[編集]三角関数を変数に置き換える。ratsubst(置き換える変数の多項式,置き換えられる関数,式)を用いる。
(%i1) cos(x)^4 + cos(x)^3 + cos(x)^2 + cos(x) + 1; 4 3 2 (%o1) cos (x) + cos (x) + cos (x) + cos(x) + 1 (%i2) ratsubst(t, cos(x), %); 4 3 2 (%o2) t + t + t + t + 1
ただし、この例ではsin(x),tan(x)は同時に置き換えてくれない。
cos(x)をsin(x)に置き換える事もできる。これも置き換える数式が間違っていても強制的に置き換えるので注意。(この例もcos(x)<0の時には正しくない。)
(%i3) ratsubst (sqrt(1 - sin(x)^2), cos(x), %o1); 2 2 2 3/2 2 2 (%o3) (1 - sin (x)) + (1 - sin (x)) + sqrt(1 - sin (x)) - sin (x) + 2
演習問題
[編集]関数が最大値を取るときの、を求めよ。ただしである。
関連項目
[編集]Wikipedia
[編集]外部リンク
[編集]- Maxima Manual: 15, Trigonometric (英文の公式マニュアル)
- 日本語に翻訳中のマニュアル:三角関数