[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. 三角関数


13.1 三角関数について  
13.2 三角関数に関する諸定義  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.1 三角関数について

- MACSYMAは定義された多くの三角関数を持っている。全てのTrigの同一性は プログラムされたものであるが、システムのパターン照合機能を用いて多くの 同一性を利用者が付け加える事が可能である。

 
(* 訳者注:

Trigの同一性とは、cos(x)^2+sin(x)^2=1やcos(2*x)=2*cos(x)^2-1と云った三角関数や
双曲関数の恒等式の事。

*)

MACSYMAで定義された三角関数は:ACOS, ACOSH, ACOT, ACOTH, ACSC, ACSCH, ASEC, ASECH, ASIN, ASINH, ATAN, ATANH, COS, COSH, COT, COTH,CSC, CSCH, SEC, SECH, SIN, SINH, TAN,とTANHである。

三角関数に付随する関数に関しては、TRIGEXPAND,TRIGREDUCE,とTRIGSIGNスイッチを 参照せよ。二つのSHAREパッケージはMACSYMAに組み込みの簡易化の規則NTRIGとATRIG を拡張する。詳細はDESCRIBE(cmd)を実行せよ。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2 三角関数に関する諸定義

関数: ACOS
- 逆余弦関数

関数: ACOSH
- 逆双曲線余弦関数

関数: ACOT
- 逆余接関数

関数: ACOTH
- 逆双曲線余接関数

関数: ACSC
- 逆余割関数

関数: ACSCH
- 逆双曲線余割関数

関数: ASEC
- 逆正割関数

関数: ASECH
- 逆双曲線正割関数

関数: ASIN
- 逆正弦関数

関数: ASINH
- 逆双曲線正弦関数

関数: ATAN
- 逆正接関数

関数: ATAN2 (Y,X)
区間-%PIから%PIの間でのATAN(Y/X)を計算する。

関数: ATANH
- 逆双曲線正接関数

関数: ATRIG1
- SHRE1;ATRIG1 FASLは逆三角関数に対する幾つかの追加の簡易化の規則を含む。 Macsymaで既知の規則と共に、次の角が実装されている;0, %PI/6, %PI/4, %PI/3, そして%PI/2である。 他の3つの象限に於ける角度も利用可能である。

関数: COS
- 余弦関数

関数: COSH
- 双曲線余弦関数

関数: COT
- 余接関数

関数: COTH
- 双曲線余接関数

関数: CSC
- 余割関数

関数: CSCH
- 双曲線余割関数

変数: HALFANGLES
デフォルト値:[FALSE] - TRUEであれば、半角が簡易化される。

関数: SEC
- 正割関数

関数: SECH
- 双曲線正割関数

関数: SIN
- 正弦関数

関数: SINH
- 双曲線正弦関数

関数: TAN
- 正接関数

関数: TANH
- 双曲線正接関数

関数: TRIGEXPAND (exp)
expの中で生じる角度の和と角度の倍を持つ三角関数と双曲関数の展開を行う。最良の 結果を得る為にexpを展開すべきである。簡易化の利用者制御を拡張する為に、この 関数は一度に一つのレベルのみの角度の和と角度の積の展開を行う。SINとCOSの全体 の展開を直ちに得る為にはTRIGEXPAND:TRUE;を実行せよ。

 
(C1) X+SIN(3*X)/SIN(X),TRIGEXPAND=TRUE,EXPAND;
                              2           2
(D1)                     - SIN (X) + 3 COS (X) + X
(C2) TRIGEXPAND(SIN(10*X+Y));
(D2)               COS(10 X) SIN(Y) + SIN(10 X) COS(Y)


変数: TRIGEXPANDPLUS
デフォルト値:[TRUE] - TRIGEXPANDで"和"の規則を制御する。つまり、TRIGEXPAND命令 が使われるか、TRIGEXPANDスイッチがTRUEに設定されている時に、 和(例えば、SIN(X+Y))の展開がTRIGEXPANDPLUSがTRUEの場合に限って実行される。

変数: TRIGEXPANDTIMES
デフォルト値:[TRUE] - TRIGEXPANDで"積"の規則を制御する。つまり、TRIGEXPAND命令 が使われるか、TRIGEXPANDスイッチがTRUEに設定されている時に、 積(例えば、SIN(2*X))の展開がTRIGEXPANDTIMESがTRUEの場合に限って実行される。

変数: TRIGINVERSES
デフォルト値:[ALL] - 三角関数、双曲関数とその逆関数との合成の簡易化を制御する。 もし、ALLであれば、両方、例えば、ATAN(TAN(X))とTAN(ATAN(X))がXに簡易化される。 TRUEであれば、arcfunction(function(x))の簡易化が切り捨てられる。FALSEであれば arcfunc(func))とfun(arcfun(x))の簡易化が切り捨てられる。

関数: TRIGREDUCE (exp, var)
varの積を持つ三角関数と双曲SIN関数とCOS関数の積と羃乗を結合する。分母で現われ たこれらの関数を消去する事も試みる。varが省略されると、expの全ての変数が利用 される。POISSIMP関数(6.6)も参照せよ。
 
(C4) TRIGREDUCE(-SIN(X)^2+3*COS(X)^2+X);
(D4)                        2 COS(2 X) + X + 1

三角関数簡易化ルーチンは幾つかの単純な場合で宣言された情報を用いる。

変数に関する宣言は次の様に使われる、例えば、

(C5) DECLARE(J, INTEGER, E, EVEN, O, ODD)$
(C6) SIN(X + (E + 1/2)*%PI)$
(D6)                      COS(X)
(C7) SIN(X + (O + 1/2) %PI);
(D7)                     - COS(X)


変数: TRIGSIGN
デフォルト値:[TRUE] - TRUEであれば三角関数に対し負の引数の簡易化を許容する。 例えば、TRIGSINがTRUEの時に限り、SIN(-X)は-SIN(X)となる。

関数: TRIGSIMP (expr)

tan,sec等を含む式の簡易化の為に、恒等式sin(x)^2+cos(x)^2=1と cosh(x)^2-sinh(x)^2=1を使って、sin,cos,sinh,coshへと変換し、その結果に TRIGREDUCEを用いればより進んだ簡易化が得られる様にする。幾つかの例は DEMO("trgsmp.demo");を実行すれば見られる。TRIGSUM関数も参照せよ。

 
(* 訳者注:

ここで、DEMO("trgsmp.demo")を実行せよとあるが、実際のファイル名は
share/trgsmp.dmoである。従って、ファイル名をtrgsmp.demoに変更するか、
src/init_max1.lispの$file_search_demoの修飾子リストにdmoを加える等の工夫
が必要である。

*)

関数: TRIGRAT (trigexp)
三角関数式の疑線型形式の正規簡易化を与える:trigexpは幾つかのsin,cosやtanの 有理関数であり、それらの引数は幾つかの変数(又は核)と%pi/n(nは整数)の整数係数 の線型結合である。結果は簡易化されたsinとcosの線型な分子と分母を持つ分数と なる。TRIGRATは可能であれば常に線形化する(D.Lazardが記述した)。

 
(c1) trigrat(sin(3*a)/sin(a+%pi/3));

(d1) 		        sqrt(3) sin(2 a) + cos(2 a) - 1

ここで、別の例(この関数はこれを目的としている)がある; [Davenport, Siret, Tournier, Calcul Formel, Masson (英語版はAddison-Wesley), section 1.5.5, Morley theorem)を見よ。計算時間はVAX 780のものである。

 
(c4)   c:%pi/3-a-b;

					   %pi
(d4) 				 - b - a + ---
					    3

(c5)   bc:sin(a)*sin(3*c)/sin(a+b);

			     sin(a) sin(3 b + 3 a)
(d5) 			     ---------------------
				  sin(b + a)

(c6)   ba:bc,c=a,a=c$

(c7)   ac2:ba^2+bc^2-2*bc*ba*cos(b);

	2       2
     sin (a) sin (3 b + 3 a)
(d7) -----------------------
	      2
	   sin (b + a)

					%pi
   2 sin(a) sin(3 a) cos(b) sin(b + a - ---) sin(3 b + 3 a)
					 3
 - --------------------------------------------------------
			   %pi
		   sin(a - ---) sin(b + a)
			    3

      2	        2	  %pi
   sin (3 a) sin (b + a - ---)
			   3
 + ---------------------------
	     2	   %pi
	  sin (a - ---)
		    3

(c9)   trigrat(ac2);
Totaltime= 65866 msec.  GCtime= 7716 msec.

(d9)
- (sqrt(3) sin(4 b + 4 a) - cos(4 b + 4 a)

- 2 sqrt(3) sin(4 b + 2 a)

+ 2 cos(4 b + 2 a) - 2 sqrt(3) sin(2 b + 4 a) + 2 cos(2 b + 4 a)

+ 4 sqrt(3) sin(2 b + 2 a) - 8 cos(2 b + 2 a) - 4 cos(2 b - 2 a)

+ sqrt(3) sin(4 b) - cos(4 b) - 2 sqrt(3) sin(2 b) + 10 cos(2 b)

+ sqrt(3) sin(4 a) - cos(4 a) - 2 sqrt(3) sin(2 a) + 10 cos(2 a)

   - 9)/4

(* 訳者注:

Pentium!!! 600MHzでのtrigrat(ac2)の結果:

gcl上のMaxima:   0.51[sec]
clisp上のMaxima: 0.90[sec]

*)


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Hiroshi Yokota on September, 16 2002 using texi2html