| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
22.1 命令行について 22.2 命令行に関する諸定義
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
(*訳者注: SIN(%pi/4)の名詞型-> SQRT(2)/2, SIN(%pi/4)の動詞型-> 0.70710678118655 この様に名詞型では或程度簡易化されるものの一部の評価が残されている。これに 対し、動詞型では徹底的に評価が行われる。 *) |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
任意の別の関数名(例えば、SUM)がexp中に現われると、これらの名前を動詞型である かの様に評価する。加えて、expに現われる関数(F(args)とする)をexpの評価の為に EVの引数としてF(args):=bodyを与えて局所的に定義しても良い。もし、上で言及さ れていない原子、添字された変数、又は添字された式が引数として与えられていれば、 それは評価され、その結果が方程式や割り当てであれば指定された束縛や代入が実行 される。もし、結果がリストであれば、そのリストの成分は、それらがEVに対して 与えられた追加の引数であるかの様に扱われる。この為、方程式のリスト(例えば、 [X=1,Y=A**2])やSOLVEで返されるものの様な方程式の名前のリスト(例えば、 [E1,E2]。ここで、E1とE2は方程式である)で与えても良い。 EVのargiは、左から右への順番で処理される方程式の代入を除いて、任意の順序で 与えられる。そして、EV(exp,RATSIMP,REALPART)の様に合成されたEVFUNCは、 REALPART(RATSIMP(exp))として処理される。 SIMP、NUMER、FLOATとPREDスイッチはBLOCKの中で局所的に、又はMACSYMAのトップ レベルで大域的にそれらが再設定される迄、効果を持ち続ける様に設定していても 良い。expがCRE形式であれば、EVは結果をCRE形式で返し、NUMERとFLOATスイッチが 両方共TRUEではない。
例
(C1) SIN(X)+COS(Y)+(W+1)**2+'DIFF(SIN(W),W);
d 2
(D1) COS(Y) + SIN(X) + -- SIN(W) + (W + 1)
dW
(C2) EV(%,SIN,EXPAND,DIFF,X=2,Y=1);
2
(D2) COS(W) + W + 2 W + COS(1) + 1.90929742
|
別のトップレベルの構文はEVに対して提供され、EV()無しにその引数を何処でも入力 しても良い。つまり、次の様に簡単に書いて良い。
exp, arg1, ...,argn. |
これは他の式、つまり、関数やBLOCK等での成分として許容されていない。
(C4) X+Y,X:A+Y,Y:2;
(D4) Y + A + 2
(並行した束縛の過程に注意せよ)
(C5) 2*X-3*Y=3$
(C6) -3*X+2*Y=-4$
(C7) SOLVE([D5,D6]);
SOLUTION
1
(E7) Y = - -
5
6
(E8) X = -
5
(D8) [E7, E8]
(C9) D6,D8;
(D9) - 4 = - 4
(C10) X+1/X > GAMMA(1/2);
1
(D10) X + - > SQRT(%PI)
X
(C11) %,NUMER,X=1/2;
(D11) 2.5 > 1.7724539
(C12) %,PRED;
(D12) TRUE
|
FLOAT, PRED, SIMP, NUMER, DETOUT, EXPONENTIALIZE, DEMOIVRE, KEEPFLOAT, LISTARITH, TRIGEXPAND, SIMPSUM, ALGEBRAIC, RATALGDENOM, FACTORFLAG, %EMODE, LOGARC, LOGNUMER, RADEXPAND, RATSIMPEXPONS, RATMX, RATFAC, INFEVAL, %ENUMER, PROGRAMMODE, LOGNEGINT, LOGABS, LETRAT, HALFANGLES, EXPTISOLATE, ISOLATE_WRT_TIMES, SUMEXPAND, CAUCHYSUM, NUMER_PBRANCH, M1PBRANCH, DOTSCRULESとLOGEXPAND |
KILL(VALUES)やKILL(variabkes)で同じ式を指定するラベルが消去される迄、その占有 された保存領域を解放しない事に注意せよ。それ故、もしも、大きな式がC7行のXに 対して割り当てられていた場合、占有された保存領域を解放する為には、KILL(X)と KILL(D7)も実行しなければならない。
KILL(ALLBUT(name1,...,namek)はKILL(ALL)を、その名前をALLBUTで指定したものを 除外して実行する(注意:nameiは、U,V,F,Gの様な名前を意味し、FUNCTIONSの様な infolistでは無い)。KILLは与えられた引数から全ての属性を削除し、それ故、 KILL(VALUES)はVALUESリストの全ての項目に関連する全ての属性を削除するが、 REMOVE関数群(REMVALUE,REMFUNCTION,REMARRAY,REMRULE)は指定した属性を削除する。 又、後者はリストの名前か指定した引数が存在しなければFALSEを出力するが、 KILLは指定した項目がたとえ存在しなくても常に値"DONE"である。
式の削除は、あまりにも多くのFASLファイルが読み込まれたり、メモリの割当ての 水準が高くなり過ぎたかの何れかの理由により、"NO CORE -FASLOAD"と云う文句が MCで出る問題への何等の対処方法にならない事に注意せよ。この両方の場合、 これらの領域を減ずる為に削除すべきものが無い。式の削除は単に幾つかの領域を 空にするだけで、より小さくする事では無い。
FIRST(REST(LABELS(C))) |
とすれば、最新のC-ラベルが何であるかが判る。
LABELSは引数として任意の記号名を取り、そうして、もしINCHAR,OUTCHARやLINECHAR を再設定すると、ラベルのリストを返すが、ラベルの最初の文字はLABELSに与えた 引数の最初の文字に適合する。変数のLABELSはデフォルト値:[]のC,DとE行の値が設定 されたもののリストである。
もし、arg=TIMEであれば、計算時間が式と同様に表示される。もし、arg=GCTIMEか TOTALTIMEであれば、SHOWTIME:ALL;を用いたのと同じ様に計算時間の完全な詳細が 表示される。arg=STRINGであれば、全ての入力行を文字列として返し(STRING関数を 見よ)、それらを表示すると云うよりは後戻しをする。arg=GRINDであれば、"grind" モードに(入力行の進行に対して)切り替わる(GRINDを見よ)。 PLAYBACK([5,10],20,TIME,SLOW)の中のオプションの様に任意の数を含んで良い。
(* 訳者注: (C1) to_lisp(); Type (run) to restart MAXIMA[1]> (+ 1 2); 3 MAXIMA[2]> (setq a 'neko) NEKO MAXIMA[3]> a NEKO MAXIMA[4]> (run) Maxima 5.6 日 7月 8 14:00:42 JST 2001 (with enhancements by W. Schelter). Licensed under the GNU Public License (see file COPYING) (C2) この様に、to_lisp();を実行するとlispに入り、(run)でMaximaに戻る。 尚、:qで戻らないので注意する。 MAXIMA[5]> :q :Q MAXIMA[6]> (run) Maxima 5.6 日 7月 8 14:00:42 JST 2001 (with enhancements by W. Schelter). Licensed under the GNU Public License (see file COPYING) (C3) *) |
TTYINTFUN:PRINTI$ PRINTI():=PRINT(I)$ |
すると、(例えば)^Uを打ち込めば何時でも検査が行える。
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |