計算の進め方
% | 直前の結果を引用 |
%% | 2つ手前の結果を引用 |
%%…% (k 回) | k 個前の結果を引用 |
%n | Out[n]に出力された結果を引用(使用には注意が必要) |
テキスト型インターフェースを使って計算を進めると,入力行と出力行が交互に続いて表示される.しかし,ノートブック型インターフェースでは,入力行と出力行は必ずしも交互に表示されない(詳しくは「ノートブック型インターフェース」を参照).例えば,ユーザがどこか前の入力行までスクロール移動してそこで新しい式を挿入したとすると,古い入力行の次に最新の入力行が続くようになり,その後に,また,古い出力行が続くことになってしまう.% 記号を使う上で,それが,必ずしもノートブック文面の現在位置から見てすぐ上にある結果になるとは限らないことに注意してほしい.% は常に過去直前の結果を示す.ノートブック型インターフェースでは,結果がいつ出されたものか確実に知るには,必ず行番号Out[n]を参照する.ノートブック文書ではいつでもどこでも式を挿入したり削除したりできるので結果が処理された時間通りに順序よく並んでいるとは限らない.
x=value | 値を変数 x に割り当てる |
x=y=value | 値を変数 x と y に割り当てる |
x=. または Clear[x] | 変数 x に割り当てられている値を消去する |
Wolfram言語の計算でよく見掛ける間違いは,ユーザが前に定義した変数を消し忘れたことが原因で起こるものである.例えば,x=5と割り当てたら,明確に消去しない限り5の値を持ったxが存在し続ける.必要なくなったら,変数が保持する値は消去しておく.
変数にはどんな名前を付けても構わない(一部例外あり).名前の長さには制限はないが,名前は数字で始まってはいけない.例えば,x2は変数名として有効だが,これに似た2xは2*xと同義であるから,変数名としては使えない.
Wolfram言語にx+xと式を入力すると2xの答が返ってくる.Wolfram言語では,変数xは純粋なシンボルとして認識され形式的な扱いを受ける.シンボルとしてあるとき,xはどのような式でも表すことができる.
1+2x等の式を入力し,その中にあるシンボルxを特定の値に置き換えるには,まずWolfram言語の変換規則を作り,次に,その規則を式に適用すればよい.xを値3で置き換えるには,変換規則x->3を作成する.ここで,->は2つの文字から構成され,間にスペースは入れないことに注意してほしい.x->3は「xが3になる」規則としてとらえるとよいだろう.
置換の演算子/.は,特定の式に限って変換規則を適用するときに使う.変換規則をどんな式にでも適用可能としたい場合はどうしたらよいだろうか.例えば,xが現れるたびにxを3に変えたい場合はどうしたらよいだろう.
シンボルの値は数だけでなくどんな式としても定義することができる.ただし,一度,等号関係を定義したら,値を明確に変更もしくは除去するまでは,定義した値が内部に残るので注意が必要である.除去のし忘れが,ユーザの間違いの最も大きな共通した原因になっている.
Wolfram言語ではxのようなシンボルはいろいろ違った用途に対して使うことができる.事実,Wolfram言語の持つ高い汎用性は,このように必要に応じて各種の用途に対応できる,という機能性に負うところが大きい.ただし,間違いを避けるためどんな用途でxを使っているのか,常に把握しておく必要はある.特に,xが別の式を表す名前として働くときの用途と,純粋な未知数としての用途は,きちんと区別しておく必要がある.
記号代数的な処理ができない従来のプログラミング言語では,変数を単なるオブジェクトの名前としてしか使うことができない.ここでオブジェクトとは数値を指し,その数値が変数の値として割り当てられる.一方,Wolfram言語では,xは各種変換規則が適用可能な純粋に形式的な変数として扱われる.もちろん,一度,x=3のような割当て関係を定義したなら,xは常に3に置き換えられることになり,形式的な変数としては働かなくなってしまう.
x=3のような明確な割当て定義を行うと,それは大域的な効果を持つ.一方,expr/.x->3のような置換は,特定の式 expr だけに対して有効である.まぎらわしくならないように,必要不可欠でない限り,明確な割当ては行わない方がよいだろう.
(term) | 丸カッコは式の項をまとめる |
f[x] | 角カッコは関数に引数を与える |
{a,b,c} | 中カッコはリストを定義する |
v[[i]] | 二重角カッコはリスト要素を抽出する(Part[v,i]に等しい) |
リストを使い複雑な式を構築するときは,角カッコの中に余分にスペースを入れておくと式全体が読みやすくなる.カッコの数を合わせるのにも楽になる.例えば,v[[{a,b}]]よりv[[ {a,b} ]]の方が読みやすい.
計算を進める上で,複数のステップを踏んで処理をしなければいけないことがよくある.各ステップの処理を別々の入力行(セル)を使って行ってもよいが,簡単にするため,いくつかのステップを単一行にまとめてもよい.そうした場合,式のステップごとにセミコロンで分ける.