Pythonからはじめる数学入門

[cover photo]
TOPICS
Programming , Math , Python
発行年月日
PRINT LENGTH
304
ISBN
978-4-87311-768-3
原書
Doing Math with Python
FORMAT
Print PDF
Ebook
3,080円
Ebookを購入する
Print
3,080円

Pythonは書きやすくて読みやすい、使うのが楽しいプログラミング言語です。本書では、学生や生徒、プログラミングの初心者が、数学の問題を具体的に解く楽しみをPythonを用いて体験します。方程式の解を求めたり、統計や確率を計算したり、放物線運動をプロットしたり、フラクタル図形を描いたり、フィボナッチ数と黄金比の関係を探ったりします。同時に、matplotlibとSymPyの使い方も学びます。数学とプログラミングの両方の知識と技術を身につけることができる、まさに一石二鳥の一冊です。

目次

目次
日本語版まえがき
謝辞
はじめに

1章 数を扱う
    1.1 基本数学演算
    1.2 ラベル:名前に数を割り当てる
    1.3 さまざまな種類の数
        1.3.1 分数を扱う
        1.3.2 複素数
    1.4 ユーザ入力を受け取る
        1.4.1 例外と不当入力の処理
        1.4.2 分数と複素数を入力
    1.5 数学を行うプログラムを書く
        1.5.1 整数の因数を計算する
        1.5.2 乗算表を生成する
        1.5.3 測定単位を変換する
        1.5.4 2次方程式の解を求める
    1.6 学んだこと
    1.7 プログラミングチャレンジ
        問題1-1 奇数偶数自動判別プログラム
        問題1-2 乗算表生成器の拡張
        問題1-3 単位変換プログラムの拡張
        問題1-4 分数電卓
        問題1-5 ユーザに脱出能力を与える

2章 データをグラフで可視化する
    2.1 デカルト座標平面を理解する
    2.2 リストとタプルの操作
        2.2.1 リストやタプルで繰り返す
    2.3 matplotlibでグラフを作る
        2.3.1 グラフで点を作る
        2.3.2 ニューヨーク市の年間平均気温をグラフ化する
        2.3.3 ニューヨーク市の月間気温傾向を比較する
        2.3.4 グラフのカスタマイズ
        2.3.5 プロットの保存
    2.4 式をプロットする
        2.4.1 ニュートンの万有引力の法則
        2.4.2 投射運動
    2.5 学んだこと
    2.6 プログラミングチャレンジ
        問題2-1 1日の間に気温はどのように変化するか
        問題2-2 2次関数を視覚的に探索する
        問題2-3 投射軌跡比較プログラムの拡張
        問題2-4 支出を可視化する
        問題2-5 フィボナッチ数列と黄金比の関係を調べる

3章 データを統計量で記述する
    3.1 平均を求める
    3.2 中央値を求める
    3.3 最頻値を求め度数分布表を作る
        3.3.1 一番多い要素を見つける
        3.3.2 最頻値を探す
        3.3.3 度数分布表を作る
    3.4 散らばりを測る
        3.4.1 数集合の範囲を決める
        3.4.2 分散と標準偏差を求める
    3.5 2つのデータセットの相関を計算する
        3.5.1 相関係数を計算する
        3.5.2 高校の成績と大学入試の点数
    3.6 散布図
    3.7 ファイルからデータを読み込む
        3.7.1 テキストファイルからデータを読み込む
        3.7.2 CSVファイルからデータを読み込む
    3.8 学んだこと
    3.9 プログラミングチャレンジ
        問題3-1 よりよい相関係数を求めるプログラム
        問題3-2 統計電卓
        問題3-3 他のCSVデータでの実験
        問題3-4 百分位を求める
        問題3-5 グループ度数分布表を作る

4章 SymPyで代数と式を計算する
    4.1 式の記号と記号演算を定義する
    4.2 式を扱う
        4.2.1 式の因数分解と展開
        4.2.2 プリティプリント
        4.2.3 値に代入する
        4.2.4 文字列を数式に変換する
    4.3 方程式を解く
        4.3.1 2次方程式を解く
        4.3.2 1変数を他の変数について解く
        4.3.3 連立方程式を解く
    4.4 SymPyを使ってプロットする
        4.4.1 ユーザが入力した式をプロットする
        4.4.2 複数の関数をプロットする
    4.5 学んだこと
    4.6 プログラミングチャレンジ
        問題4-1 因数ファインダ
        問題4-2 グラフを使った方程式ソルバー
        問題4-3 級数の和
        問題4-4 1変数の不等式を解く
        ヒント:役立つ関数

5章 集合と確率を操作する
    5.1 集合とは何か
        5.1.1 集合の構成
        5.1.2 部分集合、上位集合、べき集合
        5.1.3 集合演算
    5.2 確率
        5.2.1 事象Aまたは事象Bの確率
        5.2.2 事象Aおよび事象Bの確率
        5.2.3 乱数生成
        5.2.4 非一様乱数
    5.3 学んだこと
    5.4 プログラミングチャレンジ
        問題5-1 ベン図を使って集合の関係を可視化する
        問題5-2 大数の法則
        問題5-3 お金がなくなるまで何回硬貨を投げられるか
        問題5-4 トランプをよく切る
        問題5-5 円の領域を推定する
        πの値を推定する

6章 幾何図形とフラクタルを描画する
    6.1 matplotlibのパッチで幾何図形を描く
        6.1.1 円を描く
        6.1.2 図形のアニメーションを作る
        6.1.3 投射軌跡のアニメーション
    6.2 フラクタルを描く
        6.2.1 平面上の点の変換
        6.2.2 バーンスレイのシダを描く
    6.3 学んだこと
    6.4 プログラミングチャレンジ
        問題6-1 正方形に円を詰める
        問題6-2 シェルピンスキーの三角形
        問題6-3 エノンの関数を調べる
        問題6-4 マンデルブロ集合を描く
        imshow()関数
        リストのリストを作る
        マンデルブロ集合を描く

7章 初等解析問題を解く
    7.1 関数とは何か
        7.1.1 関数の定義域と値域
        7.1.2 よく使われる数学関数
    7.2 SymPyでの仮定
    7.3 関数の極限を求める
        7.3.1 連続複利(Continuous Compound Interest)
        7.3.2 瞬間変化率
    7.4 関数の微分を求める
        7.4.1 微分電卓
        7.4.2 偏微分を求める
    7.5 高階微分と極大極小の計算
    7.6 勾配上昇法を用いて最大値を求める
        7.6.1 勾配上昇法のジェネリックなプログラム
        7.6.2 初期値について一言
        7.6.3 ステップサイズとイプシロンの役割
    7.7 関数の積分を求める
    7.8 確率密度関数
    7.9 学んだこと
    7.10 プログラミングチャレンジ
        問題7-1 ある点での関数の連続性を検証する
        問題7-2 勾配降下法を実装する
        問題7-3 2曲線で囲まれた領域の面積
        問題7-4 曲線の長さを求める

付録A ソフトウェアのインストール
    A.1 Microsoft Windows
        A.1.1 SymPyの更新
        A.1.2 matplotlib-vennのインストール
        A.1.3 Pythonシェルの開始
    A.2 Linux
        A.2.1 SymPyの更新
        A.2.2 matplotlib-vennのインストール
        A.2.3 Pythonシェルの開始
    A.3 Mac OS X
        A.3.1 SymPyの更新
        A.3.2 matplotlib-vennのインストール
        A.3.3 Pythonシェルの開始

付録B Pythonについて
    B.1 if __name__ == '__main__' 
    B.2 リスト内包表記
    B.3 辞書データ構造
    B.4 複数戻り値
    B.5 例外処理
        B.5.1 複数の例外型を指定する
        B.5.2 elseブロック
    B.6 Pythonでのファイル読み込み
        B.6.1 全行を一度に読み込む
        B.6.2 ファイル名を入力で指定する
        B.6.3 ファイル読み込み時のエラー処理
    B.7 コードの再利用

あとがき
用語集
訳者あとがき
索引