| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
5.1 簡易化に関する諸定義
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(*訳者注: 先ず、EVEN、ODDとINTEGERは、 EVEN … 偶数 ODD … 奇数 INTEGER … 整数 である。 (C1) aa:1; (D1) 1 (C2) askinteger(aa); (D2) YES (C3) askinteger(aa,ODD); (D3) YES (C4) askinteger(aa,EVEN); (D4) NO (C5) askinteger(aa,INTEGER); (D5) YES (C6) askinteger(yy); Is yy an integer? yes; (D6) YES (C7) askinteger(yy); (D7) YES (C8) askinteger(yy,ODD); Is yy an odd number? NO; (D8) NO (C9) askinteger(yy,even); (D9) YES (C10) askinteger(zz,even); Is zz an even number? no; (D10) NO (C11) askinteger(zz,odd); Is zz an odd number? no; (D11) NO (C12) askinteger(zz,integer); Is zz an integer? yes; (D12) YES (C13) askinteger(zz,integer); (D13) YES この様に、yyがINTEGERであると指定すると、それからyyはINTEGERとなっている。 更に、yyがODDと宣言すると、自動的にEVENとなる。但し、zzがODDで無く、EVEN で無いと宣言しても、askinteger(zz)はNOとはならずに尋ねてくる。ここで、YES とすれば、それまで入力したODDでもEVENでも無い事は消去されている。 *) |
(* 訳者注: POS … 正の値 NEG … 負の値 ZERO … 零 *) |
%E^(A+B*%I) ==> %E^A*(COS(B)+%I*SIN(B)) |
DEMOIVRE:TRUE;でEXPONENTIALIZE:TRUEの効果を逆にする。
DEMOIVRE(exp)は、そのスイッチの設定やEVによる式の再評価無しでその変換を行う。
(* 訳者注: Maximaではloadに失敗する。原因として存在しないFASLファイル等の読込みを実行し ようとする為らしい。他に関数名が現状のMaximaで用いるものと異っている点もある。 実際に利用する為には、これらの修正が必要である。 *) |
EXPONENTIALIZE(exp)でスイッチの設定やEVによる式の再評価なしで式を指数関数形式 に変換する。
二変数以上の関数Fに対して"線型性"が定義されていると、'SUMや'INTEGRATEの場合、
Xを持たないA,Bに対してはF(A*X+B,X)->A*F(X,X)+B*F(1,X)となる(LINEARは丁度 ADDITIVE+OUTATIVEとなる)。
この簡易化はFがPRODUCT(X[I],I,下限,上限)の形式の式に作用させる時には生じない。
(*訳者注: (C1) NEGSUMDISPLAG; (D1) TRUE (C2) A+%I*B; (D2) %I B + A (C3) A-%I*B; (D3) A - %I B (C4) NEGSUMDISPFLAG:FALSE; (D4) FALSE (C4) A+%I*B; (D4) %I B + A (C5) A-%I*B; (D5) - %I B + A となる。 *) |
(*訳者注:
(C1) SUBST(X^2,R,R+R[0]);
2 2
(D1) X + (X )
0
(C2) (OPSUBST:FALSE,SUBST(X^2,R,R+R[0]));
2
(D2) X + R
0
と、R[0]に安易な代入が行われていない事に注目。
*)
|
最初は'SUM,'INTEGRATEや'LIMITがOUTATIVEと宣言されている。
%E_TO_NUMLOG(デフォルト値:[FALSE]) - TRUEであれば、ある有理数"r"と、ある式 "x"に対して%E^(r*LOG(X))はX^rに簡易化される。
RADEXPAND[TRUE] - FALSEであれば、ある変換を禁止する:RADCAN(SQRT(1-X))は SQRT(1-X)のままで%I SQRT(X-1)とはならない。RADCAN(SQRT(X^2-2*X+1))は SQRT(X^2-2*X+1)のままでX-1に変換されない。例はEXAMPLE(RADCAN);を実行せよ。
例えば:
SUMEXPAND:TRUE$
SUM(F(I),I,0,M)*SUM(G(J),J,0,N); ->
'SUM('SUM(F(I1)*G(I2),I2,0,N),I1,0,M)
SUM(F(I),I,0,M)^2; -> 'SUM('SUM(F(I3)*F(I4),I4,0,M),I3,0,M)
|
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |