Mathematicaクックブック

[cover photo]
TOPICS
クックブック , Programming , Math
発行年月日
PRINT LENGTH
672
ISBN
978-4-87311-483-5
原書
Mathematica Cookbook
FORMAT

Mathematicaを使って数多くの問題を「料理」することを通じ、Mathematicaで何ができるのか、その威力と魅力を伝えるレシピ集。Mathematicaは数学、物理、工学、化学、統計、天文、金融工学、建築、音楽等々、幅広い分野で利用されており、本書でカバーするトピックも同様に多岐にわたっています。数多くの事例を取り上げており、サンプルコードも満載です。Mathematicaの可能性を拡げる意欲作。リファレンスとしても役に立つ一冊です。バージョン8対応。

関連ファイル

目次

序
訳者前書き
前書き

1章 数
    1.0 序
    レシピ1.1 精度と確度を制御する
    レシピ1.2 異なる数値型を組み合わせる
    レシピ1.3 異なる底による数の表現
    レシピ1.4 数を数字列に分解する
    レシピ1.5 区間機能
    レシピ1.6 数値型同士の型変換について
    レシピ1.7 数を様々な形式で表す

2章 関数型プログラミング
    2.0 序
    レシピ2.1 2引数以上の関数を写像する
    レシピ2.2 任意引数の評価を保留する
    レシピ2.3 リストに対し自分自身を写像する関数を作る
    レシピ2.4 複数の関数を一度に写像する
    レシピ2.5 写像対象の位置を追跡する
    レシピ2.6 部分移動リストに関数を写像する
    レシピ2.7 読みやすいコードを生成するために前置および後置形式を使う
    レシピ2.8 添字付き関数を定義する
    レシピ2.9 畳み込みを再帰の代わりに使う
    レシピ2.10 漸増的にリストを構成する
    レシピ2.11 関数を繰り返し適用することで計算する
    レシピ2.12 繰り返しによる関数の構築
    レシピ2.13 関数合成と逆関数の利用
    レシピ2.14 閉包を実装する
    レシピ2.15 Mathematicaにおけるカリー化
    レシピ2.16 引数に既定値を持った関数を作成する
    レシピ2.17 オプションを受け付ける関数の作成

3章 データ構造
    3.0 序
    レシピ3.1 数値リストの最も効率的な表現を提供する
    レシピ3.2 リストを並び替える
    レシピ3.3 並び替え無しに順序を決定する
    レシピ3.4 行列の対角要素を取り出す
    レシピ3.5 特定の形を持った行列を構成する
    レシピ3.6 交換行列と循環行列を構成する
    レシピ3.7 行列の行と列を操作する
    レシピ3.8 メモリ節約のために疎行列を使う
    レシピ3.9 何重にも入れ子になったリストをレベルごとに操作する
    レシピ3.10 ビットベクトルの実装と表現の改変
    レシピ3.11 リストによる木作成と木の走査
    レシピ3.12 2色木を使い順序付き連想検索を実装する
    レシピ3.13 Mathematicaの組み込み連想検索を利用する
    レシピ3.14 Combinatorica`パッケージを使いグラフを作成する
    レシピ3.15 グラフアルゴリズムを用いてグラフから情報を取り出す

4章 パターンとルール型プログラミング
    4.0 序
    レシピ4.1 パターンに対し一致(あるいは不一致)要素を集める
    レシピ4.2 一致(あるいは不一致)要素を取り除く
    レシピ4.3 パターンに一致する要素数を数える
    レシピ4.4 式の一部を置き換える 
    レシピ4.5 最長一致(最短一致)を見つける
    レシピ4.6 ルールの言葉でアルゴリズムを書く
    レシピ4.7 ReplaceRepeatedにおける永久ループをデバッグする
    レシピ4.8 置換が完遂するまで評価を中断する
    レシピ4.9 パターンをパターンで操作する
    レシピ4.10 ルールを最適化する
    レシピ4.11 問い合わせ言語にパターンを使う
    レシピ4.12 セマンティックパターンマッチング
    レシピ4.13 ユニフィケーションパターンマッチング

5章 文字列とテキスト処理
    5.0 序
    レシピ5.1 文字列の比較
    レシピ5.2 文字列の削除と置換
    レシピ5.3 内容と部分文字列の取り出し
    レシピ5.4 文字列の複製
    レシピ5.5 テキストの一致と探索
    レシピ5.6 テキストをトークンに分割
    レシピ5.7 自然言語の辞書に応用
    レシピ5.8 XMLを取り込む 
    レシピ5.9 パターンとルールを使いXMLを変換する
    レシピ5.10 再帰関数によるXML変換(XSLT風)
    レシピ5.11 Mathematicaで構文解析と文法を記述する

6章 2次元グラフィックスとプロット
    6.0 序
    レシピ6.1 直交座標上で関数をプロットする
    レシピ6.2 極座標上でプロットする
    レシピ6.3 パラメトリックプロットを生成する
    レシピ6.4 データのプロット
    レシピ6.5 複数のグラフを1つにする
    レシピ6.6 複数のグラフを格子形式で表示する
    レシピ6.7 凡例付きプロットを作成する
    レシピ6.8 2D幾何形状を描く
    レシピ6.9 テキストグラフィックス
    レシピ6.10 矢印を描く

7章 3次元グラフィックスとプロット
    7.0 序
    レシピ7.1 直交座標系で2変数関数をプロットする
    レシピ7.2 球面座標系で関数をプロットする
    レシピ7.3 円筒座標系での表面をプロットする
    レシピ7.4 3Dパラメトリック表面をプロットする
    レシピ7.5 3D等高線をプロットする
    レシピ7.6 3Dプロットを2D等高線と組み合わせる
    レシピ7.7 指定した範囲でプロット領域を制約する
    レシピ7.8 3Dデータをプロットする
    レシピ7.9 制約付き3D領域をプロットする
    レシピ7.10 3D幾何形状を表示する
    レシピ7.11 メッシュからワイヤフレームモデルを構成する
    レシピ7.12 視点を制御する
    レシピ7.13 照明と表面特徴を制御する
    レシピ7.14 3Dグラフィックスを変換する
    レシピ7.15 多面体を探求する
    レシピ7.16 CADや他の3Dソフトウェアから3Dグラフィックスを取り込む

8章 画像処理
    8.0 序
    レシピ8.1 画像情報を取り出す
    レシピ8.2 画像をRGB色空間からHSV色空間に変換する
    レシピ8.3 ヒストグラム平滑化によって画像解像度を向上させる
    レシピ8.4 ヒストグラムを仕様として画像を修正する
    レシピ8.5 ラプラシアン変換を使い画像を鮮明にする
    レシピ8.6 フーリエ変換を使い画像を鮮明、滑らかにする
    レシピ8.7 エッジ検出
    レシピ8.8 固有ベクトル(固有画像)を使い画像を認識する

9章 音声・音楽処理
    9.0 序
    レシピ9.1 音符を作る
    レシピ9.2 音階、旋律を作る
    レシピ9.3 旋律にリズムを与える
    レシピ9.4 音量を制御する
    レシピ9.5 和音を作る
    レシピ9.6 和音進行を演奏する
    レシピ9.7 伝統的な和音表記を使い音楽を書く
    レシピ9.8 打楽器演奏を作る
    レシピ9.9 さらに複雑な打楽器演奏を作る
    レシピ9.10 MIDIファイルを書き出す
    レシピ9.11 関数を演奏する
    レシピ9.12 トレモロを加える
    レシピ9.13 ビブラートを加える
    レシピ9.14 信号にエンベロープを加える
    レシピ9.15 調律を変える
    レシピ9.16 デジタル音源ファイルを取り込む
    レシピ9.17 デジタル音源ファイルを解析する
    レシピ9.18 サンプルをスライスする

10章 代数
    10.0 序
    レシピ10.1 代数方程式を解く
    レシピ10.2 根から多項式を見つける
    レシピ10.3 式を変形する
    レシピ10.4 多項式の生成
    レシピ10.5 多項式を構成要素に分割する
    レシピ10.6 多項式を多項式で割る

11章 連続解析と離散解析
    11.0 序
    レシピ11.1 極限を求める
    レシピ11.2 区分関数を使う
    レシピ11.3 冪級数表現を使う
    レシピ11.4 微分方程式
    レシピ11.5 積分
    レシピ11.6 微分方程式を解く
    レシピ11.7 最小値、最大値問題を解く
    レシピ11.8 ベクトル解析問題を解く
    レシピ11.9 和と積を含む問題を解く
    レシピ11.10 差分方程式を解く
    レシピ11.11 生成関数と数列の認識

12章 統計とデータ解析
    12.0 序
    レシピ12.1 数値データ、記号データに対し一般的な統計値を計算する
    レシピ12.2 分布に従う乱数を生成する
    レシピ12.3 確率分布を使う
    レシピ12.4 中心極限定理を説明する
    レシピ12.5 ベクトルと行列の分散、相関を計算する
    レシピ12.6 データ形状を測定する
    レシピ12.7 外れ値を発見し調整する
    レシピ12.8 線形モデルを使いデータをフィットする
    レシピ12.9 非線形モデルを使いデータをフィットする
    レシピ12.10 データから内挿関数を生成する
    レシピ12.11 ANOVAを用いグループ間の統計的有意差を検定する
    レシピ12.12 範疇データを仮説検定する
    レシピ12.13 データをクラスタ分割する
    レシピ12.14 一般的な統計プロットを作る
    レシピ12.15 準乱数の生成
    レシピ12.16 確率論的シミュレーションを作る

13章 科学と工学
    13.0 序
    レシピ13.1 元素データを活用する
    レシピ13.2 化学データを活用する
    レシピ13.3 素粒子データを活用する
    レシピ13.4 遺伝子データとタンパク質データを活用する
    レシピ13.5 捕食-被捕食動力学をモデル化する
    レシピ13.6 基本的な剛体問題を解く
    レシピ13.7 動力学の問題を解く
    レシピ13.8 バネマス系で基準振動モードを計算する
    レシピ13.9 振動する弦をモデル化する
    レシピ13.10 電気回路をモデル化する
    レシピ13.11 有限要素法を使いトラス構造をモデル化する

14章 金融工学
    14.0 序
    レシピ14.1 Mathematica組み込みの金融データを活用する
    レシピ14.2 ウェブサイトから金融データを取り込む
    レシピ14.3 将来発生するキャッシュフローの現在価値
    レシピ14.4 債券に対する金利感応度
    レシピ14.5 利回り曲線をグラフ化し操作する
    レシピ14.6 Black-Scholesによるヨーロピアンオプションの評価
    レシピ14.7 金融デリバティブの予想変動率を計算する
    レシピ14.8 Black-Scholesおよび他の偏微分方程式を解くのにNDSolveを高速化する
    レシピ14.9 Black-Scholesモデルを有限差分法で実現する
    レシピ14.10 アメリカンオプション評価関数をコンパイラによって高速化する
    レシピ14.11 モンテカルロを使いポートフォリオVaR指標をモデル化する
    レシピ14.12 金利感応商品に対応するモデル木を可視化する

15章 対話環境
    15.0 序
    レシピ15.1 変数を操作する
    レシピ15.2 記号式を操作する
    レシピ15.3 プロットを操作する
    レシピ15.4 動的更新部分を持つ式を作る
    レシピ15.5 Dyanamic式に付随する制御値を横取りする
    レシピ15.6 値の動的更新を制御したい
    レシピ15.7 DynamicModuleを使い変数スコープを制御する
    レシピ15.8 スクラッチ変数を使いDynamicModuleの速度/メモリバランスを図る
    レシピ15.9 格納済みManipulateを作る
    レシピ15.10 Manipulateを使い発見した結果を保存する
    レシピ15.11 演算を分離することでManipulate性能を向上させる
    レシピ15.12 Manipulateで関数を局所化する
    レシピ15.13 DynamicModuleの変数をセル間、ノートブック間で共有する
    レシピ15.14 自前の制御を作る
    レシピ15.15 式のアニメーション
    レシピ15.16 自前のインタフェースを作る
    レシピ15.17 制限された画面内で多くの制御を管理する

16章 並列Mathematica
    16.0 序
    レシピ16.1 ローカルカーネルを構成する
    レシピ16.2 リモートサービスカーネルを構成する
    レシピ16.3 並列計算コマンドを複数のカーネルに送る
    レシピ16.4 既存の逐次式を自動で並列化する
    レシピ16.5 データを並列に分配し結果を統合する
    レシピ16.6 ParallelMapを使いデータ並列アルゴリズムを実装する
    レシピ16.7 問題を並列データセットに分割する
    レシピ16.8 適切な分散配置法を選択する
    レシピ16.9 異なるアルゴリズムを並列実行し最初に得られた結果を採用する
    レシピ16.10 並列カーネル間でデータを共有する
    レシピ16.11 共有資源に対する複数カーネル間の競合を防ぐ
    レシピ16.12 パイプラインを使い並列処理を実現する
    レシピ16.13 Map-Reduce技術を使い大量ファイルを処理する
    レシピ16.14 並列処理性能を診断する
    レシピ16.15 並列処理のオーバヘッドを測定する

17章 Mathematicaインタフェース
    17.0 序
    レシピ17.1 Mathematicaから外部コマンドを呼び出す
    レシピ17.2 MathematicaからWindowsのプログラムを起動する
    レシピ17.3 フロントエンドからリモートカーネルに接続する
    レシピ17.4 MathematicaからC、C++を使う
    レシピ17.5 MathematicaからJavaを使う
    レシピ17.6 Mathematicaを使いMicrosoft .NET Frameworkと対話する
    レシピ17.7 .NETアプリケーションからMathematicaを使う
    レシピ17.8 データベースに問い合わせる
    レシピ17.9 データベースを更新する
    レシピ17.10 データベースを検査する

18章 プログラミングの秘訣
    18.0 序
    レシピ18.1 段階的な開発では整理整頓が大事
    レシピ18.2 組み込み関数と定数を変更する
    レシピ18.3 ドキュメント化されていない関数を見つける
    レシピ18.4 解をパッケージ化する
    レシピ18.5 性能を向上させるためにコンパイルする 
    レシピ18.6 スタイルシートを使いノートブックの外観を制御する
    レシピ18.7 ノートブックを他の形式に変換する
    レシピ18.8 Mathematicaフロントエンドを呼び出す
    レシピ18.9 プログラムを自動実行する
    レシピ18.10 フロントエンド環境を変更する

19章 デバッグとテスト
    19.0 序
    レシピ19.1 印字によってデバッグする
    レシピ19.2 大量に実行される関数をデバッグする
    レシピ19.3 再帰関数のデバッグにスタックトレースを使う
    レシピ19.4 Traceを使いこなし有用なデバッグ情報を取り出す
    レシピ19.5 Mathematica向けにささやかなデバッガを作る
    レシピ19.6 EvaluationMonitorとStepMonitorを使い、組み込み関数をデバッグする

索引