__は、現在評価中の入力式です。
すなわち、入力式 exprが評価されている間、 __は exprです。
__は、入力が整理されたり評価されたりする前に入力式に割り当てられます。
しかし表示される時、__の値は(評価はされませんが)整理されます。
batchと loadは __を認識します。
batchが処理するファイル内では、
__は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
__は対話プロンプトやバッチファイルの中で直前に入力された入力式にバインドされています;
__は処理中のファイル内の入力式にはバインドされません。
特に、 load (filename)が対話プロンプトからコールされた時、
__は、ファイルが処理されている間、
load (filename)にバインドされます。
例:
(%i1) print ("I was called as", __);
I was called as print(I was called as, __)
(%o1) print(I was called as, __)
(%i2) foo (__);
(%o2) foo(foo(__))
(%i3) g (x) := (print ("Current input expression =", __), 0);
(%o3) g(x) := (print("Current input expression =", __), 0)
(%i4) [aa : 1, bb : 2, cc : 3];
(%o4) [1, 2, 3]
(%i5) (aa + bb + cc)/(dd + ee + g(x));
cc + bb + aa
Current input expression = --------------
g(x) + ee + dd
6
(%o5) -------
ee + dd
_は直前の入力式です。
(例えば、%i1, %i2, %i3, …)
_は、入力が整理されたり評価されたりする前に、入力式に割り当てられます。
しかし、
_の値は、表示される時(評価はされませんが)整理されます。
batchと loadは _を認識します。
batchが処理するファイル内では、
_は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
_は、対話プロンプトやバッチファイルの中で、直前に入力された入力式にバインドされます;
_は処理中のファイル内の入力式にはバインドされません。
例:
(%i1) 13 + 29; (%o1) 42 (%i2) :lisp $_ ((MPLUS) 13 29) (%i2) _; (%o2) 42 (%i3) sin (%pi/2); (%o3) 1 (%i4) :lisp $_ ((%SIN) ((MQUOTIENT) $%PI 2)) (%i4) _; (%o4) 1 (%i5) a: 13$ (%i6) b: 29$ (%i7) a + b; (%o7) 42 (%i8) :lisp $_ ((MPLUS) $A $B) (%i8) _; (%o8) b + a (%i9) a + b; (%o9) 42 (%i10) ev (_); (%o10) 42
%はMaximaが直前に計算した出力式です。
(例えば、 %o1, %o2, %o3, …)
出力の表示には無関係です。
batchと loadは%を認識します。
batchが処理するファイル内では、
%は対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
%は、対話プロンプトやバッチファイルの中で、直前に計算された出力式にバインドされます;
%は、処理中のファイル内の出力式にはバインドされません。
合成文、すなわちblock, lambda,
もしくは(s_1, ..., s_n)の中で、 %%は前の文の値です。
合成文の最初の文もしくは合成文の外側では%%は未定義です。
%%は、batchや loadで認識され、
対話プロンプトでのそれと同じ意味になります。
%も参照してください。
例:
以下の二つの例は同じ結果になります。
(%i1) block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
21
(%o1) --
2
(%i2) block ([prev], prev: integrate (x^5, x),
ev (prev, x=2) - ev (prev, x=1));
21
(%o2) --
2
合成文は他の合成文を含むかもしれません。
文が単文か合成文かに関係なく、
%%は前の文の値です。
(%i3) block (block (a^n, %%*42), %%/6);
n
(%o3) 7 a
合成文の中ではブレイクプロンプトで%%の値を検査することができます。
ブレイクプロンプトは break関数を実行することで開きます。
例えば、以下の例で%%;を入力すると、42が出力されます。
(%i4) block (a: 42, break ())$ Entering a Maxima break point. Type 'exit;' to resume. _%%; 42 _
i番前の出力式の値。
すなわち、計算される次の式をn番目の出力とすると
%th (m)は、(n - m)番目の出力です。
batchとloadは%thを認識されます。
batchが処理するファイル内では、
%thは、対話プロンプトでのそれと同じ意味になります。
loadが処理するファイル内では、
%thは、対話プロンプトやバッチファイルの中で、直前に計算された出力式にバインドされます;
%thは、処理中のファイル内の出力式にはバインドされません。
例:
batchファイルの中でとか、出力式のグループを参照する時%thは役立ちます。
この例はsを最後の5つの出力式の和に設定します。
(%i1) 1;2;3;4;5; (%o1) 1 (%o2) 2 (%o3) 3 (%o4) 4 (%o5) 5 (%i6) block (s: 0, for i:1 thru 5 do s: s + %th(i), s); (%o6) 15
関数名や変数名の前置としての?は、
名前が、Maximaの名前ではなくLispの名前であることを意味します。
例えば、?roundは、Lisp関数ROUNDを意味します。
この点に関して更に知るにはLisp and Maximaを参照してください。
表記? word (空白を空けて単語が続くクエスチョンマーク)は
describe("word")と同値です。
クエスチョンマークは入力ラインの先頭になければいけません;
そうでなければドキュメンテーションのリクエストとして認識されません。
describeも参照してください。
表記?? word(空白を空けて単語が続く??)は
describe("word", inexact)と同値です。
クエスチョンマークは入力行の先頭になければいけません;
そうでなければドキュメンテーションのリクエストとして認識されません。
describeも参照してください。
デフォルト値: %i
incharはユーザーが入力した式のラベルの前置です。
Maximaは、
incharとlinenumを連結することで、
入力式それぞれのラベルを自動的に構成します。
incharは単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければkill(inlables)のようないくつかのコマンドは期待通りに動きません。
labelsも参照してください。
例:
(%i1) inchar: "input";
(%o1) input
(input2) expand((a+b)^3);
3 2 2 3
(%o2) b + 3 a b + 3 a b + a
(input3)
デフォルト値: []
infolistsはMaximaに関する情報リストすべての名前のリストです。
これらは以下の通りです:
labelsすべてのバインドされた%i, %o, %tラベル
values:や::や関数バインドが生成する、
ユーザー変数であって、Maximaオプションやスイッチでない、
すべてのバインドされたアトム
functionsarrays:, ::, または:=が生成するすべての宣言配列と未宣言配列
macros::=が生成したすべてのユーザー定義マクロ関数
myoptions(それらが後にデフォルト値に再設定されようがされまいが) ユーザーが再設定したすべてのオプション
rulestellsimp, tellsimpafter, defmatch,
またはdefruleが生成するすべてのユーザー定義パターンマッチングと整理規則
aliasesalias, ordergreat, orderless関数が生成するか、
declareを使ってアトムをnounとして宣言することで生成された、
ユーザー定義エーリアスを持つすべてのアトム
dependenciesgradefsgradef関数が生成するユーザー定義の導関数を持つすべての関数
propsdeclare関数で確立されるプロパティはもちろん、
atvalueやmatchdeclareなどが確立するプロパティで、
上で述べたもの以外の任意のプロパティを持つすべてのアトム
let_rule_packages特別パッケージdefault_let_rule_packageに加えて
すべてのユーザー定義let規則パッケージ
(default_let_rule_packageは、
ユーザーが陽に設定していない時使われる規則パッケージの名前です。)
引数a_1, …, a_nからすべてのバインド(値、関数、配列、ルール)を解除します。
引数a_kはシンボルか配列要素を取り得ます。
a_kが配列要素の時、killは配列の他の要素には影響することなくその要素をアンバインドします。
いくつかの特殊な引数が認識されます。
例えば、kill (inlabels, functions, allbut (foo, bar))のように、異なる引数の種類が組み合わされます。
kill (labels)はそれまでに作られた入力、出力、中間式のラベルすべてをアンバインドします。
kill (inlabels)は incharの現在の値で始まる入力ラベルのみをアンバインドします。
同様に、
kill (outlabels)は outcharの現在の値で始まる出力ラベルのみをアンバインドし、
kill (linelabels)は linecharの現在の値で始まる中間式ラベルのみをアンバインドします。
kill (n)(nは整数)は入力、出力ラベルの最近のn個をアンバインドします。
kill ([m, n])は入力、出力ラベルmからnまでをアンバインドします。
kill (infolist)は infolistの中のすべての項目をアンバインドします。
ここで、infolistは(values, functions, arraysのような)
infolistsの中の任意の項目です。
infolistsも参照してください。
kill (all)はinfolistsのすべての項目をアンバインドします。
kill (all)はグローバル変数をデフォルト値にリセットしません;
この点に関してはresetを参照してください。
kill (allbut (a_1, ..., a_n))は、
a_1, ..., a_nを除いて
すべてのinfolistsの中のすべての項目をアンバインドします。
kill (allbut (infolist))は
infolist(infolistはvalues, functions, arraysなど)
上の項目を除いてすべての項目をアンバインドします。
バインドされたプロパティによって使われたメモリは、すべてのシンボルがプロパティからアンバインドされるまで解放されません。 特に、シンボルの値によって使われているメモリを解放するには、 シンボルそのもののアンバインドだけでなく、バインドされた値を表示する出力ラベルをアンバインドします。
killは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
kill (symbol)はシンボルのすべてのプロパティをアンバインドします。
対照的に、関数remvalue, remfunction, remarray,
remruleは特定のプロパティをアンバインドします。
kilは常に、たとえ引数がバインドされていなくても、doneを返します。
symbolで始まる入力、出力、中間式ラベルのリストを返します。
symbolは、inchar, outchar, もしくはlinecharの値が典型的です。
ラベル文字はパーセント記号ありでもあしでもかまいませんので、
例えば、iと%iは同じ結果になります。
もしsymbolで始まるラベルがなければ、labelsは空のリストを返します。
関数labelsは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
例えば,
labels (''inchar)は、現在の入力ラベル文字で始まる入力ラベルを返します。
変数labelsは入力、出力、中間式ラベルのリストです。
inchar, outchar, もしくはlinecharが再定義されても、以前のラベルすべてを含みます。
デフォルトで、Maximaはそれぞれのユーザー入力式の結果を表示し、結果に出力ラベルが与えられます。
入力を;(セミコロン)の代わりに$(ドル記号)で終了することで、出力表示は抑制されます。
出力ラベルが構成され、結果にバインドされますが、表示されません。
ラベルは表示された出力ラベルと同じ方法で参照できます。
%や%%, %thも参照してください。
いくつかの関数では中間式ラベルが生成されることがあります。
フラグprogrammodeは
solveや他の関数が式のリストを返す代わりに中間式ラベルを生成するかどうかを制御します。
ldisplayのようないくつかの他の関数は常に中間式ラベルを生成します。
デフォルト値: %t
linecharは
Maximaが生成する中間式のラベルの前置です。
Maximaは(もし表示されるなら)
linecharとlinenumを連結することで
中間式それぞれのラベルを構成します。
linecharは単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に
前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければ kill(inlables)のようないくつかのコマンドは期待通りに動きません。
中間式は表示されるかもしれませんし、表示されないかもしれません。
programmodeとlabelsも参照してください。
入力出力式の現在のペアの行番号。
デフォルト値: []
myoptionsはユーザーが再設定したオプションすべてのリストです。
初期値に再設定されたか否かに関わらずです。
デフォルト値: false
nolabelsはtrueであれば、
入力と出力結果のラベル(それぞれ%iと%o)は表示されますが、
ラベルは結果にバインドされず、labelsリストにも追加されません。
ラベルは結果にバインドされないので、
ガーベッジコレクションは結果が使ったメモリを回復することができます。
そうでなければ、入力と出力の結果のラベルは結果にバインドされ、labelsリストに追加されます。
中間式ラベル(%t)はnolabelsに影響されません;
nolabelsがtrueでもfalseでも、中間式ラベルはバインドされ、labelsリストに追加されます。
デフォルト値: false
optionsetがtrueの時、Maximaは、Maximaオプションが再設定されるといつでも、メッセージを表示します。
もしユーザーがあるオプションの綴りが怪しく、割り当てた変数が本当にオプション変数か確認したいなら便利です。
例:
(%i1) optionset:true; assignment: assigning to option optionset (%o1) true (%i2) gamma_expand:true; assignment: assigning to option gamma_expand (%o2) true
デフォルト値: %o
outcharはMaximaが計算した式のラベルの前置です。
outcharとlinenumを連結することで、
Maximaは計算された式それぞれのラベルを自動的に構成します。
outcharは、単一文字である必要はなく、
任意の文字列もしくはシンボルを割り当てられます。
Maximaは内部的に前置の最初の文字だけを考慮するので、
前置inchar, outchar, linecharは異なる最初の文字を持たなければいけません。
そうでなければ、kill(inlables)のようないくつかのコマンドは期待通りに動きません。
labelsも参照してください。
例:
(%i1) outchar: "output";
(output1) output
(%i2) expand((a+b)^3);
3 2 2 3
(output2) b + 3 a b + 3 a b + a
(%i3)
入力、出力、中間式を表示します。再計算はしません。
playbackはラベルにバインドされた式表示するだけです;
(printやdescribeで表示されたテキストやエラーメッセージなど)他の出力は表示されません。
labelsも参照してください。
playbackは引数をクォートします。
引数を評価するにはクォートクォート演算子''を使います。
playbackは常にdoneを返します。
playback ()(引数なし)は今までに生成された入力、出力、中間式すべてを表示します。
たとえ計算時に$終端子で出力が抑制されていても、
出力式は表示されます。
playback (n)は最近のn個の式を表示します。
入力、出力、中間式それぞれを1と数えます。
playback ([m, n])は
m番目からn番目までの入力、出力、中間式を表示します。
playback ([m])は playback ([m, m])と同値です;
これは普通、入力と出力の式のペアを1つ表示します。
playback (input)は今までに生成された入力式をすべて表示します。
playback (slow)は式の間でポーズし、ユーザーが
enterを入力するのを待ちます。
これは demoと似たような振る舞いです。
playback (slow)は、saveやstringoutと関連して、
役立つ式を取り出すために2次記憶ファイルを生成するときに便利です。
playback (time)はそれぞれの式の計算時間を表示します。
playback (grind)は入力式を grind関数と同じ形式で表示します。
出力式は grindオプションで影響を受けません。
grindを参照してください。
例えば、playback ([5, 10], grind, time, slow)のように、
引数を組み合わせられます。
デフォルト値: _
promptは、demo関数やplayback (slow)モード、
(breakで呼び出された)Maximaブレイクループのプロンプトシンボルです。
Maximaセッションを終了します。
関数は、quitではなく、quit();もしくはquit()$として呼び出さなければいけないことに注意してください。
長い計算を中断するには control-Cをタイプしてください。
デフォルトの動作では Maximaプロンプトに戻ります。
もし*debugger-hook*がnilなら、
control-CはLispデバッガを開きます。
debuggingも参照してください。
expr_1, …, expr_nを表示し、
コンソールから式1つを読み込み、評価された式を返します。
式はセミコロン;もしくはドル記号$で終了します。
readonlyも参照してください。
(%i1) foo: 42$
(%i2) foo: read ("foo is", foo, " -- enter new value.")$
foo is 42 -- enter new value.
(a+b)^3;
(%i3) foo;
3
(%o3) (b + a)
expr_1, …, expr_nを表示し、
コンソールから式を1つ読み込み、
式を(評価せずに)返します。
式はセミコロン;もしくはドル記号$で終了します。
readも参照してください。
例:
(%i1) aa: 7$
(%i2) foo: readonly ("Enter an expression:");
Enter an expression:
2^aa;
aa
(%o2) 2
(%i3) foo: read ("Enter an expression:");
Enter an expression:
2^aa;
(%o3) 128
多くのグローバル変数やオプション、いくつかの他の変数をデフォルト値に再設定します。
resetは Lispリスト*variable-initial-values*上の変数を処理します。
Lispマクロdefmvarは(他の動作の間に)このリストに変数を置きます。
すべてではありませんが多くのグローバル変数やオプションがdefmvarによって定義されており、
また、defmvarで定義されたいくつかの変数はグローバル変数でもオプションでもありません。
デフォルト値: false
showtimeがtrueの時、出力式と一緒に計算時間と経過時間を表示します。
計算時間は常に記録されており、
showtimeがfalseの時でも、
timeやplaybackで計算時間を表示することができます。
timerも参照してください。
Maximaの下のLispシステムに入ります。(to-maxima)でMaximaに戻ります。
例:
関数を定義し、Maximaの下のLispシステムに入ります。 定義をプロパティリスト上で検査します。そして、関数定義を抽出し、因数分解し、 変数$resultに格納します。 変数はMaximaに戻った後、Maximaで使うことができます。
(%i1) f(x):=x^2+x;
2
(%o1) f(x) := x + x
(%i2) to_lisp();
Type (to-maxima) to restart, ($quit) to quit Maxima.
MAXIMA> (symbol-plist '$f)
(MPROPS (NIL MEXPR ((LAMBDA) ((MLIST) $X)
((MPLUS) ((MEXPT) $X 2) $X))))
MAXIMA> (setq $result ($factor (caddr (mget '$f 'mexpr))))
((MTIMES SIMP FACTORED) $X ((MPLUS SIMP IRREDUCIBLE) 1 $X))
MAXIMA> (to-maxima)
Returning to Maxima
(%o2) true
(%i3) result;
(%o3) x (x + 1)
初期値: []
valuesは(Maximaのオプションやスイッチではなく)バインドされたユーザー変数すべてのリストです。
リストは、:や::でバインドされたシンボルを含みます。
もし変数の値がコマンドkillや, remove, remvalueで削除されたら、
変数はvaluesから削除されます。
ユーザー定義関数のリストに関しては functionsを参照してください。
例:
最初、valuesはシンボルa, b, cを示しますが、
dも―それは値にバインドされていません―ユーザー関数fも示しません。
値は変数から削除されます。valuesは空のリストです。
(%i1) [a:99, b::a-90, c:a-b, d, f(x):= x^2];
2
(%o1) [99, 9, 90, d, f(x) := x ]
(%i2) values;
(%o2) [a, b, c]
(%i3) [kill(a), remove(b,value), remvalue(c)];
(%o3) [done, done, [c]]
(%i4) values;
(%o4) []
デフォルト値: false
%edispflagがtrueの時、
Maximaは %eの負の指数乗を商として表示します。
例えば、%e^-xは 1/%e^xと表示されます。
exptdispflagも参照してください。
例:
(%i1) %e^-10;
- 10
(%o1) %e
(%i2) %edispflag:true$
(%i3) %e^-10;
1
(%o3) ----
10
%e
デフォルト値: !
absboxcharは1行より広い式の回りに絶対値記号を描くのに使われる文字です。
例:
(%i1) abs((x^3+1));
! 3 !
(%o1) !x + 1!
displayのようですが、
等式ではなく引数の値だけが表示されます。
これは名前を持たない複雑な引数や引数の値だけに興味があって
名前には興味がない引数に役立ちます。
例:
(%i1) b[1,2]:x-x^2$
(%i2) x:123$
(%i3) disp(x, b[1,2], sin(1.0));
123
2
x - x
.8414709848078965
(%o3) done
左辺が未評価のexpr_iで、右辺が式の値の等式を行の中央に表示します。
この関数は、中間結果を表示するのにブロックやfor文の中で役立ちます。
displayの引数は、通常アトムや、添字付き変数、関数コールです。
dispも参照してください。
ldisplay, disp, ldispも参照してください。
例:
(%i1) b[1,2]:x-x^2$
(%i2) x:123$
(%i3) display(x, b[1,2], sin(1.0));
x = 123
2
b = x - x
1, 2
sin(1.0) = .8414709848078965
(%o3) done
デフォルト値: true
display2dがfalseの時、
コンソール表示は(2次元)形式ではなく文字列(1次元)形式です。
例:
(%i1) x/(x^2+1);
x
(%o1) ------
2
x + 1
(%i2) display2d:false$
(%i3) x/(x^2+1);
(%o3) x/(x^2+1)
デフォルト値: false
display_format_internalがtrueの時、
式は数学的内部表現を隠すように変換されることなく表示されます。
表示はpartではなくinpartが返すものに対応します。
例:
User part inpart
a-b; a - b a + (- 1) b
a - 1
a/b; - a b
b
1/2
sqrt(x); sqrt(x) x
4 X 4
X*4/3; --- - X
3 3
exprをパーツ毎に一行ずつ使って表示します。
すなわち、最初にexprの演算子が表示され、
それぞれの項が別々に表示されます。
もしexprが他の方法で表示するには大きすぎるなら、
これは役に立ちます。
例えば、もしP1, P2, ...が非常に大きな式なら、
P1 + P2 + ...を一度に表示しようとする場合、
表示プログラムは保存の空き領域を使い尽くすかもしれません。
しかしながら、
dispterms (P1 + P2 + ...)は、
P1を表示し、その下にP2を表示し、という具合です。
disptermsを使わない時、
もし指数式がA^Bのように表示するには広すぎるなら、
それはexpt (A, B)
(もしくはA^^Bの場合、ncexpt (A, B))のように現れます。
もし指数式がa^bのように表示するには広すぎるなら、
expt (a, b)
(もしくは、a^^bの場合、ncexpt (a, b)
のように現れます。
exptやncexptは入力では認識されません。
デフォルト値: true
exptdispflagがtrueの時、
Maximaは式を商を使って負の指数の式を表示します。
例:
(%i1) exptdispflag:true;
(%o1) true
(%i2) 10^-x;
1
(%o2) ---
x
10
(%i3) exptdispflag:false;
(%o3) false
(%i4) 10^-x;
- x
(%o4) 10
関数grindは
コンソールにMaximaへの入力に適した形でexprを印刷します。
grindはいつもdoneを返します。
exprが関数名やマクロ名の時、
grindは、名前だけでなく関数やマクロ定義を出力します。
stringも参照してください。
それは出力を印刷する代わりに文字列を返します。
grindは
stringの出力より若干読みやすい方法で
式を印刷しようとします。
変数grindがtrueの時、
stringやstringoutの出力は
grindのそれと同じフォーマットです;
そうでなければ、それらの関数の出力を特別にフォーマットしようとはしません。
変数grindのデフォルト値はfalseです。
grindは playbackの引数としても指定できます。
grindが存在する時、
playbackは grind関数と同じフォーマットで入力式を印刷します。
そうでなければ、入力式を特にフォーマットしようとはしません。
grindは引数を評価します。
例:
(%i1) aa + 1729;
(%o1) aa + 1729
(%i2) grind (%);
aa+1729$
(%o2) done
(%i3) [aa, 1729, aa + 1729];
(%o3) [aa, 1729, aa + 1729]
(%i4) grind (%);
[aa,1729,aa+1729]$
(%o4) done
(%i5) matrix ([aa, 17], [29, bb]);
[ aa 17 ]
(%o5) [ ]
[ 29 bb ]
(%i6) grind (%);
matrix([aa,17],[29,bb])$
(%o6) done
(%i7) set (aa, 17, 29, bb);
(%o7) {17, 29, aa, bb}
(%i8) grind (%);
{17,29,aa,bb}$
(%o8) done
(%i9) exp (aa / (bb + 17)^29);
aa
-----------
29
(bb + 17)
(%o9) %e
(%i10) grind (%);
%e^(aa/(bb+17)^29)$
(%o10) done
(%i11) expr: expand ((aa + bb)^10);
10 9 2 8 3 7 4 6
(%o11) bb + 10 aa bb + 45 aa bb + 120 aa bb + 210 aa bb
5 5 6 4 7 3 8 2
+ 252 aa bb + 210 aa bb + 120 aa bb + 45 aa bb
9 10
+ 10 aa bb + aa
(%i12) grind (expr);
bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
+252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
+10*aa^9*bb+aa^10$
(%o12) done
(%i13) string (expr);
(%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
+252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
bb+aa^10
(%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
p : makelist (0, i, 1, length (A))], for i thru n do
for j : i thru n do
(x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1),
if i = j then p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]),
for i thru n do L[i, i] : 1 / p[i],
for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
(%i15) grind (cholesky);
cholesky(A):=block(
[n:length(A),L:copymatrix(A),
p:makelist(0,i,1,length(A))],
for i thru n do
(for j from i thru n do
(x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
if i = j then p[i]:1/sqrt(x)
else L[j,i]:x*p[i])),
for i thru n do L[i,i]:1/p[i],
for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
(%o15) done
(%i16) string (fundef (cholesky));
(%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
n do (for j from i+1 thru n do L[i,j]:0),L)
デフォルト値: 10
ibaseは Maximaが読む整数の基数です。
ibaseは2から(十進数で)36までの任意の整数を割り当てられます。
ibaseが10よりも大きい時、
数値は十進数字0から9に加えて、
ibaseディジットに必要なアルファベットA, B, C, …で構成されます。
最初のディジットが0から9の時だけ文字はディジットとして解釈されます。
大文字小文字は区別されません。
許容される最も大きな基数36の数値は0から9までとAからZまでから構成されます。
ibaseの値がいくつでも、
整数が小数点で終了する時は基数10として解釈されます。
obaseも参照してください。
例:
ibase less than 10.
(%i1) ibase : 2 $ (%i2) obase; (%o2) 10 (%i3) 1111111111111111; (%o3) 65535
10より大きなibase。
最初のディジットが0から9までの時だけ文字はディジットとして解釈されます。
(%i1) ibase : 16 $ (%i2) obase; (%o2) 10 (%i3) 1000; (%o3) 4096 (%i4) abcd; (%o4) abcd (%i5) symbolp (abcd); (%o5) true (%i6) 0abcd; (%o6) 43981 (%i7) symbolp (0abcd); (%o7) false
整数が小数点で終了する時、基数10として解釈されます。
(%i1) ibase : 36 $ (%i2) obase; (%o2) 10 (%i3) 1234; (%o3) 49360 (%i4) 1234.; (%o4) 1234
式expr_1, ..., expr_nをコンソールに印刷出力として表示します。
ldispは
引数それぞれに中間式ラベルを割り当て、ラベルのリストを返します。
disp, display, ldisplayも参照してください。
例:
(%i1) e: (a+b)^3;
3
(%o1) (b + a)
(%i2) f: expand (e);
3 2 2 3
(%o2) b + 3 a b + 3 a b + a
(%i3) ldisp (e, f);
3
(%t3) (b + a)
3 2 2 3
(%t4) b + 3 a b + 3 a b + a
(%o4) [%t3, %t4]
(%i4) %t3;
3
(%o4) (b + a)
(%i5) %t4;
3 2 2 3
(%o5) b + 3 a b + 3 a b + a
式expr_1, ..., expr_nをコンソールに印刷出力として表示します。
式それぞれは、
lhsがldisplayの引数の1つで、rhsがその値の、
形式lhs = rhsの等式として表示されます。
典型的には引数それぞれは変数です。
ldispは式それぞれに中間式ラベルを割り当て、ラベルのリストを返します。
例:
(%i1) e: (a+b)^3;
3
(%o1) (b + a)
(%i2) f: expand (e);
3 2 2 3
(%o2) b + 3 a b + 3 a b + a
(%i3) ldisplay (e, f);
3
(%t3) e = (b + a)
3 2 2 3
(%t4) f = b + 3 a b + 3 a b + a
(%o4) [%t3, %t4]
(%i4) %t3;
3
(%o4) e = (b + a)
(%i5) %t4;
3 2 2 3
(%o5) f = b + 3 a b + 3 a b + a
デフォルト値: 79
linelはコンソールディスプレイの仮定された(文字単位の)幅です。
linelはユーザーによって任意の値に割り当てられます。
非常に小さい値や非常に大きな値は実用的ではありませんが。
エラーメッセージやdescribeの出力のように、
Maximaの組み込み関数が表示するテキストはlinelの影響を受けません。
デフォルト値: false
lispdispがtrueの時、
Lispシンボルはクエスチョンマーク?を先頭文字として表示されます。
そうでなければ、Lispシンボルは先頭文字を持ちません。
例:
(%i1) lispdisp: false$ (%i2) ?foo + ?bar; (%o2) foo + bar (%i3) lispdisp: true$ (%i4) ?foo + ?bar; (%o4) ?foo + ?bar
デフォルト値: true
negsumdispflagがtrueの時、
x - yは - y + xでなくx - yと表示されます。
falseに設定すると、
2つの式の違いに関する表示での特殊なチェックがされないようになります。
1つの応用は、例えば、a + %i*bとa - %i*bを同じ表示にすることです。
デフォルト値: 10
obaseはMaximaが表示する整数の基数です。
obaseは2から(十進数で)36までの任意の整数を割り当てられます。
obaseが10よりも大きい時、
数値は十進数字0から9に加えて、
必要な大文字アルファベットA, B, C, ...で構成されます。
もし先頭ディジットがそうでなければ文字なら、0ディジットが先頭に表示されます。
許容される最も大きな基数36の数値は0から9までとAからZまでから構成されます。
ibaseも参照してください。
例:
(%i1) obase : 2; (%o1) 10 (%i2) 2^8 - 1; (%o10) 11111111 (%i3) obase : 8; (%o3) 10 (%i4) 8^8 - 1; (%o4) 77777777 (%i5) obase : 16; (%o5) 10 (%i6) 16^8 - 1; (%o6) 0FFFFFFFF (%i7) obase : 36; (%o7) 10 (%i8) 36^8 - 1; (%o8) 0ZZZZZZZZ
デフォルト値: false
pfeformatがtrueの時、
整数の比は斜線(スラッシュ)文字で表示され、
整数分母nは掛け算項1/nとして先に表示されます。
(%i1) pfeformat: false$
(%i2) 2^16/7^3;
65536
(%o2) -----
343
(%i3) (a+b)/8;
b + a
(%o3) -----
8
(%i4) pfeformat: true$
(%i5) 2^16/7^3;
(%o5) 65536/343
(%i6) (a+b)/8;
(%o6) 1/8 (b + a)
デフォルト値: false
powerdispがtrueの時、
べきを増やす順に項を使って和が表示されます。
例えば、
多項式は切り詰められたべき級数として表示され、
最初に定数項最後に最高次項となります。
デフォルトでは和の項はべきを減らす順に表示されます。
expr_1, …, expr_nを1つ1つ、左から右へ評価し、 コンソールディスプレイの左端から表示します。
printが返す値は最後の引数の値です。
printは中間式ラベルを生成しません。
display, disp, ldisplay, ldispも参照してください。
これらの関数は一行ずつ1つの式を表示しますが、
printは一行に2つ以上の式を表示しようとします。
ファイルの中身を表示するには printfileを参照してください。
例:
(%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
radcan (log (a^10/b)))$
3 2 2 3
(a+b)^3 is b + 3 a b + 3 a b + a log (a^10/b) is
10 log(a) - log(b)
(%i2) r;
(%o2) 10 log(a) - log(b)
(%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
radcan (log (a^10/b)))$
(a+b)^3 is
3 2 2 3
b + 3 a b + 3 a b + a
log (a^10/b) is
10 log(a) - log(b)
デフォルト値: true
sqrtdispflagがfalseの時、
sqrtを指数1/2で表示するようにします。
デフォルト値: false
stardispがtrueの時
掛け算はオペランドの間のアスタリスク*で表示されます。
デフォルト値: false
ttyoffがtrueの時、
出力式は表示されません。
出力式は計算され、ラベルに割り当てられます。
labelsを参照してください。
エラーメッセージやdescribeの出力のように、組み込みMaxima関数によって出力されたテキストは ttyoffの影響を受けません。