実践 Pythonライブラリー 計算物理学I ―数値計算の基礎/HPC/フーリエ・ウェーブレット解析―

小柳 義夫(監訳)/秋野 喜彦小野 義正狩野 覚小池 崇文善甫 康成(訳)

小柳 義夫(監訳)/秋野 喜彦小野 義正狩野 覚小池 崇文善甫 康成(訳)

定価 5,940 円(本体 5,400 円+税)

A5判/376ページ
刊行日:2018年04月20日
ISBN:978-4-254-12892-5 C3341

ネット書店で購入する amazon e-hon 紀伊國屋書店 honto Honya Club Rakutenブックス くまざわ書店

書店の店頭在庫を確認する 紀伊國屋書店

内容紹介

Landau et al., Computational Physics: Problem Solving with Python, 3rd ed.を2分冊で。理論からPythonによる実装まで解説。〔内容〕誤差/モンテカルロ法/微積分/行列/データのあてはめ/微分方程式/HPC/フーリエ解析/他。

編集部から

目次

1. はじめに
 1.1 計算物理と計算科学
 1.2 本書が扱うテーマ
 1.3 本書に収録した課題
 1.4 本書で用いる言語:Pythonエコシステム
  1.4.1 Pythonのパッケージ(ライブラリ)
  1.4.2 本書で用いるパッケージ
  1.4.3 簡便なやり方:Pythonディストリビューション(パッケージコレクション)
 1.5 Pythonの可視化ツール
  1.5.1 Visual(VPython)の2次元プロット
  1.5.2 VPythonのアニメーション
  1.5.3 Matplotlibの2次元プロット
  1.5.4 Matplotlibの3次元サーフェスプロット
  1.5.5 Matplotlibのアニメーション
  1.5.6 プロットを超えるMayaviの可視化
 1.6 演習(プロット)
 1.7 Pythonの数式処理ツール

2. 計算機ソフトウェアの基礎
 2.1 コンピュータを意のままに操る
 2.2 プログラミングの準備
  2.2.1 構造化された再現可能なプログラムのデザイン
  2.2.2 シェル,エディター,実行
 2.3 PythonのI/O
 2.4 コンピュータにおける数の表現(理論)
  2.4.1 IEEE方式の浮動小数点数
  2.4.2 PythonとIEEE754規格
  2.4.3 オーバーフローとアンダーフローの演習
  2.4.4 計算機イプシロン(モデル)
  2.4.5 実験:計算機イプシロンεmを求める
 2.5 課題:級数の計算
  2.5.1 数値的に総和を計算する(手法)
  2.5.2 実装と評価

3. 数値計算の誤差と不確実さ
 3.1 誤差の種類(理論)
  3.1.1 災難のモデルケース:引き算で起きる桁落ち
  3.1.2 桁落ち,演習
  3.1.3 丸め誤差
  3.1.4 丸め誤差の蓄積
 3.2 球ベッセル関数における誤差(課題)
  3.2.1 数値計算に適した漸化式(手法)
  3.2.2 プログラミングと検討:漸化式
 3.3 誤差を実験的に調べる
  3.3.1 誤差を評価する

4. モンテカルロ法:乱数,ランダムウォーク,減衰
 4.1 コンピュータで生成する擬似的な乱数
 4.2 乱数列(理論)
  4.2.1 乱数発生(アルゴリズム)
  4.2.2 実装:乱数列
  4.2.3 ランダム性と一様性の評価
 4.3 ランダムウォーク(課題)
  4.3.1 ランダムウォークのシミュレーション
  4.3.2 実装:ランダムウォーク
 4.4 拡張:タンパク質のフォールディングと自己回避ランダムウォーク
 4.5 放射性崩壊(課題)
  4.5.1 離散的な崩壊(モデル)
  4.5.2 連続的な崩壊(モデル)
  4.5.3 ガイガー・カウンターの音が出る崩壊のシミュレーション
 4.6 崩壊のシミュレーションの実装と可視化

5. 微分と積分
 5.1 微分
 5.2 前進差分(アルゴリズム)
 5.3 中心差分(アルゴリズム)
 5.4 高精度の中心差分(アルゴリズム)
 5.5 誤差の評価
 5.6 2次微分係数(課題)
  5.6.1 2次微分係数の評価
 5.7 積分
 5.8 長方形の個数を数えて数値積分を行う(数学)
 5.9 アルゴリズム:台形則
 5.10 アルゴリズム:シンプソン則
 5.11 数値積分の誤差(評価)
 5.12 アルゴリズム:ガウス求積法
  5.12.1 変数変換により積分点の位置を変える
  5.12.2 ガウス求積法の積分点の決め方
  5.12.3 数値積分の誤差の評価
 5.13 高次式を用いる数値積分(アルゴリズム)
 5.14 石を投げて面積を測るモンテカルロ法(課題)
  5.14.1 「石投げ」の実装
 5.15 平均値の定理を用いた積分(理論と数学)
 5.16 数値積分の演習
 5.17 多次元モンテカルロ積分(課題)
  5.17.1 多次元積分の誤差の評価
  5.17.2 実装:10次元モンテカルロ積分
 5.18 急激に変化する関数の積分(課題)
 5.19 分散低減法1(手法)
 5.20 分散低減法2(手法)
 5.21 フォン・ノイマンの棄却法(手法)
  5.21.1 正規分布に従う乱数の簡単な発生法
  5.21.2 非一様分布の評価
 5.22 実装

6. 行列の数値計算
 6.1 課題3:N次元ニュートン-ラフソン;糸で結ばれた2個の物体
  6.1.1 理論:静力学
  6.1.2 アルゴリズム:多次元の探索
 6.2 なぜ行列計算ライブラリを使うか?
 6.3 行列問題のパターン(数学)
  6.3.1 現実的な行列計算
 6.4 Pythonにおける配列としてのリスト
 6.5 NumPy(Numerical Python)の配列
  6.5.1 NumPyのパッケージlinalg
 6.6 演習:行列のプログラムをテストする
  6.6.1 糸でつるした物体の平衡状態を行列計算で解く
  6.6.2 課題3の拡充と展開(発展課題)

7. 試行錯誤による解の探索,およびデータへのフィッティング
 7.1 課題1:箱の中の量子状態の探索
 7.2 アルゴリズム:二分法を用いた試行錯誤による解の探索
  7.2.1 実装:二分法
 7.3 改良されたアルゴリズム:ニュートン-ラフソン法
  7.3.1 バックトラッキング付きニュートン-ラフソン法
  7.3.2 実装:ニュートン-ラフソン法
 7.4 課題2:磁化の温度依存性
  7.4.1 探索の演習
 7.5 課題3:実験的なスペクトルに曲線をフィットする
  7.5.1 ラグランジュ補間,検討
  7.5.2 3次スプライン補間(手法)
 7.6 課題4:指数関数的減衰のフィッティング
 7.7 最小2乗法(理論)
  7.7.1 最小2乗法:理論と実装
 7.8 演習:指数関数的減衰,熱流,ハッブル則に関係するフィッティング
  7.8.1 最小2乗法による2次式のフィッティング
  7.8.2 課題5:ブライト-ウィグナー公式のフィッティング

8. 微分方程式を解く:非線形振動
 8.1 非線形振動子の自由振動
 8.2 非線形振動子(モデル)
 8.3 微分方程式の種類(数学)
 8.4 ODEの標準的な形(理論)
 8.5 ODEアルゴリズム
  8.5.1 オイラー法
 8.6 ルンゲ-クッタ法
 8.7 アダムス-バシュフォース-ムルトンの予測子・修正子法
  8.7.1 評価:rk2, rk4, rk45の比較
 8.8 非線形振動子の解(評価)
  8.8.1 精度の評価:エネルギー保存
 8.9 非線形振動子の共鳴,うなり,摩擦(発展課題)
  8.9.1 摩擦(モデル)
  8.9.2 共鳴とうなり:モデルと実装
 8.10 時間的に変化する駆動力(発展課題)

9. ODEの応用:固有値問題,散乱問題,放物体の運動
 9.1 課題:いろいろなポテンシャルによる量子力学的な固有値
  9.1.1 モデル:箱の中の粒子
 9.2 ふたつの要素をもつアルゴリズム:ODEソルバーと探索で求める固有値
  9.2.1 ヌメロフ法のシュレーディンガー方程式型ODEへの適用
  9.2.2 実装:ODEソルバーと二分法による固有値の探索
 9.3 ポテンシャル井戸の形を変える(発展課題)
 9.4 課題:古典力学のカオス的散乱問題
  9.4.1 モデルと理論
  9.4.2 実装
  9.4.3 評価
 9.5 課題:上空から落ちてくるボール
 9.6 理論:空気抵抗を受ける放物体の運動
  9.6.1 連立2階ODE
  9.6.2 評価
 9.7 演習:惑星運動の2体および3体問題とカオス的天候

10. ハイ・パフォーマンス・コンピューティングのためのハードウェアと並列計算機
 10.1 ハイ・パフォーマンス・コンピュータ
 10.2 メモリの階層構造
 10.3 中央演算処理ユニット(CPU)
 10.4 CPUの設計:RISC
 10.5 CPU設計:マルチコア・プロセッサ
 10.6 CPU設計:ベクトル・プロセッサ
 10.7 並列計算入門
 10.8 並列計算のセマンティクス(理論)
 10.9 分散メモリ・プログラミング
 10.10 並列性能
  10.10.1 通信のオーバーヘッド
 10.11 並列化の戦略
 10.12 並列処理から見たMIMDメッセージ・パッシング
  10.12.1 高級言語から見たメッセージ・パッシング
  10.12.2 メッセージ・パッシングの例と演習
 10.13 スケーラビリティ
  10.13.1 スケーラビリティ(演習)
 10.14 データ並列と領域分割
  10.14.1 領域分割(演習)
 10.15 例:IBM Blue Geneスーパーコンピュータ
 10.16 マルチノード・マルチコアGPUを使ったエクサスケールの計算

11. HPC(応用編):最適化,チューニング,GPUプログラミング
 11.1 プログラムの最適化(一般論)
  11.1.1 仮想メモリを使うときのプログラミング(手法)
  11.1.2 最適化(演習)
 11.2 NumPyを使った行列の最適化プログラミング
  11.2.1 NumPyにおける最適化(演習)
 11.3 ハードウェアのパフォーマンス(実験)
  11.3.1 PythonとFortran/Cのスピード競争
 11.4 データキャッシュのためのプログラミング(手法)
  11.4.1 キャッシュミス(演習1)
  11.4.2 キャッシュ内のデータの動き(演習2)
  11.4.3 大きな行列の乗算(演習3)
 11.5 ハイパフォーマンス・コンピューティングのためのGPU
  11.5.1 GPUカード
 11.6 マルチコアとGPUプログラミングのための実用的なヒント
  11.6.1 CUDAにおけるメモリの利用
  11.6.2 CUDAプログラミング(演習)

12. フーリエ解析:信号とフィルタ
 12.1 非線形振動のフーリエ解析
 12.2 フーリエ級数(数学)
  12.2.1 例:のこぎり波と半波整流波
 12.3 演習:フーリエ級数の部分和
 12.4 フーリエ変換(理論)
 12.5 離散フーリエ変換
  12.5.1 エイリアシング(評価)
  12.5.2 フーリエ級数を入力とするDFT(例)
  12.5.3 評価
  12.5.4 非周期関数のDFT(発展課題)
 12.6 ノイズを含む信号にフィルタをかける
 12.7 自己相関関数を利用したノイズの除去(理論)
  12.7.1 自己相関関数の演習
 12.8 フーリエ変換を用いたフィルタ(理論)
  12.8.1 フィルタ:sincフィルタ(発展課題)
 12.9 高速フーリエ変換(FFT)
  12.9.1 ビットの逆転
 12.10 FFTの実装
 12.11 FFTプログラムの評価

13. ウェーブレット解析と主成分分析:非定常信号とデータ圧縮
 13.1 課題:非定常的な信号のスペクトル解析
 13.2 ウェーブレットの基礎
 13.3 波束と不確定性原理(理論)
  13.3.1 波束の評価
 13.4 短時間フーリエ変換(数学)
 13.5 ウェーブレット変換
  13.5.1 ウェーブレット基底の生成
  13.5.2 連続ウェーブレット変換の実装
 13.6 離散ウェーブレット変換,多重解像度解析
  13.6.1 ピラミッド・アルゴリズムの実装
  13.6.2 フィルタ係数からドブシー・ウェーブレットへ
  13.6.3 DWTの実装と演習
 13.7 主成分分析
  13.7.1 PCAの実例
  13.7.2 PCAの演習

文献
索引

(II巻目次)
14. 離散的非線形系のダイナミクス
15. 連続的非線形系のダイナミクス
16. フラクタルとランダムな成長モデル
17. 熱力学シミュレーションとファインマン経路積分
18. 分子動力学シミュレーション
19. 偏微分方程式の復習と差分法による静電場の解析
20. 熱伝導の解析と時間発展
21. 波動方程式1:弦と膜
22. 波動方程式11:量子力学の波束,電磁波
23. 有限要素法による静電場の解析
24. 衝撃波とソリトン
25. 流体力学
26. 量子力学の積分方程式

執筆者紹介

ジャンル一覧

ジャンル一覧

  • Facebook
  • Twitter
  • 「愛読者の声」 ご投稿はこちら 「愛読者の声」 ご投稿はこちら
  • EBSCO eBooks
  • eBook Library