特殊な関数と記号[top]
プログラミングでは簡略化のために特殊な記号が使われることが多い.これらは主に,関数の定義を簡単にするために利用される.
1)純関数 # と & の組合せ
関数定義でしたことを簡単に行えるのが純関数.1度だけ使う定義関数は,純関数を使う方がよい.純関数は引数を
# で表す.引数を#で表し,式を( )でくくって最後に & をつける.&
の後の expr は引数 # が受ける.
(#がついた式)& [expr] ここで,expr はリストでもよい.
Function[fbody,x] [expr] または fbody[#]& [expr]
例 (1 + #^2)& [a + b] → 1 + (a + b)^2
Slot[1] または,# は純関数の第1引数を表す.
Slot[n] または,#n はn 番目の引数を表す.
2)ルールを式にあてはめる
ReplaceAll[expr, rules] あるいは expr /. rules
式expr に含まれる部分式にルールrulesを適用する.
記号 /. は右にあるルールを左の式にあてはめる.
例 1 + x^2 /. x -> a + b → 1 + (a + b)^2
Replace[expr, rule] は式expr全体にルールruleを適用する.ルールは式の部分には適用されない.ルールは
lhr ->> rhs の形でかかれる.
Rule[ lhs, rhs] または lhs -> rhs は左辺lhsを右辺rhsに変換するルールを示す.
3)//. は式がそれ以上変化しなくなるまで置き換えが行われる.
& /@ の組合せ.& は純関数,/@ はMap を意味する.
例 In[1]:= f[#]+g[#] & /@ {a,b,c}
上の式を実行すると次のようになる.
Out[1]:= {f[a] + g[a], f[b] + g[b], f[c] + g[c]}
上の入力式は以下と同じこと.
In[1]:= h[x_]:= f[x] + g[x]
In[2]:= Map[h, {a,b,c}]
あるいは次の1つの式と同じ.
In[1]:= Map[f[#]+g[#] &, {a,b,c}]
4)シンボルに割り当てられた値をクリアするには Clear関数
Mathematica を終了しないかぎり,計算結果はメモリに保存されているから,同じ記号を使って別の計算をする場合は,その変数に割り当てた値をクリアしておく必要がある.
Clear[z] z の値をクリア. z =. でも同じこと.
Clear[symb1, symb2, ... ] 定義,値を消去.
ClearAll[symb1, symb2, ... ] 定義,値,属性,メッセージ,デフォルト値を消去.
5)その他
* 掛け算記号.あるいは,記号と記号の間にスペースを1つ入れる.
% 直前の出力
%% 2つ前の出力
%n n 個前の出力
= 値の割り当て(Set).右辺から左辺へ
== 方程式(Equal).あるいは等式の真偽テスト
: = 遅延割り当て(SetDelayed).関数の定義
=. 定義を解除する(Unset)
// 後置形式.(式 // 関数)
# Slot は純関数の第1引数を表す
## SlotSequence は純関数の引数すべての列を表す
& 関数
&& 論理関数AND
|| 論理関数OR
/@ Map
(* *) コメント文を入れる
Hold[expr] と Evaluate[ expr] Holdは式expr を未評価のまま保持する.Evaluateは引数を評価しないような属性をもつ関数(例えばTable関数)においても強制的に式exprを評価する.
経済・金融関数[top]
Sum[f, {i, imax}] f の総和をi からimax に対して求める.
Sum[f, {i, imin, imax}] imin から総和を求める.
Sum[f, {i, imin, imax, di}] ステップ幅di で和を求める.
Sum[f, {i, imin, imax}, {j, jmin, jmax}] 多重和を求める.外側のj から計算を行う.
Round[x] 小数点第1位を四捨五入して,整数を返す.ただし,1.5では1となる.
Floor[x] 実数を,それを超えない最大の整数に変換する.
Ceiling[x] 小数点を切り上げて得られる整数を返す.
Chop[x] は切り捨て.ある許容範囲より小さい任意の数を0にする