世界を動かす技術を、日本語で。

線形代数を考える (2023)

概要

Think Linear Algebra は、 実践的な線形代数 の学習書。 Pythonコード現実世界の課題 を中心に構成。 NumPySciPy など主要ライブラリを活用。 Jupyterノートブック で即時フィードバック。 Creative Commonsライセンス で利用・改変が可能。

Think Linear Algebra 概要

  • コードファーストケーススタディ重視 の線形代数入門書
  • 抽象的な理論 ではなく、 実用的な応用例 から学ぶ構成
  • 各章ごとに 現実世界の問題 (ウェブのトラフィック, 鳥の群れのシミュレーション, 電気回路解析など)を中心に展開
  • PythonNumPy/SciPy/SymPy/NetworkX 等のライブラリを利用した実装例
  • Jupyterノートブック でコードを実行し、 即時に結果を可視化・検証 できる設計
  • 数学の公式や証明から始めるのではなく、 「なぜ必要か」から理論を構築
  • 線形代数機械学習・科学計算・コンピュータグラフィックス などの基礎であることを強調
  • Creative Commonsライセンス により、 非営利かつ出典明記で自由に利用・改変 が可能

学べること

  • ベクトルと行列 を使って 現実問題の定式化・解決
  • Python での システムシミュレーション・射影計算・方程式解法・行列分解
  • ベクトル空間・変換・システム挙動可視化インタラクティブな学習
  • エンジニアリング・データサイエンス・グラフィックス・ロボティクス などへの応用力
  • 数式とコード相互変換 能力と 計算的思考 の習得

収録章(抜粋)

  • Chapter 1: The Power of Linear Algebra
    • 行列積・固有ベクトル の導入
    • 博物館のトラフィックモデルPageRankアルゴリズム の実装例
  • Chapter 2: A Day At the Track
    • ベクトルの加減算GPSトラッキングデータ で解説
    • 速度・加速度の推定ノイズのあるデータの課題 を扱う
  • Chapter 4: Projection
    • ベクトル射影・直交性・ドット積 の解説
    • ビリヤードの衝突 を例に、 射影と拒否ベクトル の理解
  • Chapter 5: To Boldly Go
    • 行列による拡大・回転・せん断・並進 の応用
    • 2DコンピュータグラフィックスAsteroidsゲーム の再現
  • Chapter 7: Systems of Equations
    • LU分解行列方程式 を使った 電気回路解析
    • 実際のエンジニアリング問題 への応用
  • Chapter 8: Null Space
    • 化学量論 を多解系として分析
    • ランク・零空間 の概念で 解空間 を説明
  • Chapter 9: Truss In the System
    • 構造力学 における トラス構造 の力解析
    • ブロック行列・ランク解析 による 内部応力計算
  • Chapter 10: Regression
    • 最小二乗回帰QR分解 による解法
    • General Social Survey (GSS) データを使った 多変量回帰分析

推奨対象

  • 従来の数学教育 に苦手意識のある人
  • 直感的・体験的に線形代数を学びたい人
  • 実際のコードとシミュレーション を通じて 理解を深めたい エンジニア・学生

利用方法

  • 各章は Colab上で実行可能なノートブック として公開
  • 自分のペースコードを書き、シミュレーションを行い、可視化 しながら学習
  • ライセンス条件 (非営利・出典明記)を守れば 自由に再利用・改変 が可能

Hackerたちの意見

行列の掛け算がベクトルの足し算の前に出てくるなんて…「線形代数を正しく学ぶ」って本が頭の中で叫んでるよ。でも、Jupyterノートブックを使った実践的な線形代数の例があるのは確かにクールだね。

しかも、最初のレッスンで固有ベクトルが出てくるなんて!

これに対して、どんな補完的なリソースを勧める?

これは意図的な教育的選択で、ジェレミー・ハワードのディープラーニングコースを受けた人には馴染みがあると思う。線形代数を学ぶ上での課題の一つは、どこから始めるかなんだ。ほとんどの教科書はベクトル演算から始まるけど、紙と鉛筆でやるならそれも理解できる。でも、役に立つ内容にたどり着くまでに時間がかかるんだよね。計算的アプローチを取れば、トップダウンで進める選択肢がある。つまり、線形代数のコアアルゴリズムを実装したライブラリから始めて、後でその仕組みを学ぶことができる。これなら、いい部分に早くたどり着けるよ。

ベクトルの加算は、同次座標系での行列の掛け算に過ぎないんだから、何が問題なの?

スタンフォードのMath 55の教科書を手に入れて、numpyで演習をやってみたよ。

上の著者、アレン・ダウニーはコンピュータサイエンス関連の本をいくつか出してるよ。ハードコピーも買えるけど、全部無料で手に入ると思う。いくつか紹介するね:Think Complexity https://github.com/AllenDowney/ThinkComplexity2 Think DSP https://github.com/AllenDowney/ThinkDSP Think Stats https://github.com/AllenDowney/ThinkStats/ Think Bayes https://github.com/AllenDowney/ThinkBayes2/

「コンピュータサイエンティストのように考える方法」を見逃してるよ。ネット上にはいろんな場所にあるけど、Runestoneが一番役立つかも。お気に入りのクラシックなやつも下に載せておくね。 http://www.openbookproject.net/thinkcs/python/english3e/

ところで、もしアレン・ダウニーがこれを読んでいたら、ちょっと愛を送っておきたいな。インターネットの始まりを見てきたけど、みんな情報の自由な流れや共有可能な知識に夢を抱いてた。特にそれを象徴するのが実行可能なコードだったよね。今は壁に囲まれた庭や悪い億万長者に囲まれてるけど、アレンはいつも世界中に自分の知識をシェアしてくれてる。ありがとう。

あと、 - Think Python - Think Data Structures - Think Java - Think Perl6 (!) - Modeling and Simulation in Python - おそらく考えすぎてる などなど。彼は prolific な作家で、たくさんの本を無料で提供してくれてるのがとてもありがたい。いくつかはオンラインやオライリーで読んで、印刷版も買って彼の作品を楽しんでる。『Think DSP』や『Think Complexity』、『Think Bayes』とか、本当に楽しんだよ。 [1] https://www.amazon.com/stores/Allen-Downey/author/B001O8NBPS

彼のブログも大好き!たぶん考えすぎてるけど。

回帰分析を超えて、PCAやCCAみたいな統計トピックの章も見てみたいな。この教科書の形式は、コードと文章が交互に出てくるから、scikit-learnのdecomposition.ccaやdecomposition.pcaの実装方法を見せるのにぴったりだと思う。例えば、SVD行列分解とかね。

ループの例って何なの?この内容を理解する前に、これが何を表してるのか分かっておくべきなの?

Klongはここで輝いてるよ: https://www.t3x.org/klong/ クイックリファレンス: https://www.t3x.org/klong/klong-qref.txt.html イントロ: https://www.t3x.org/klong/klong-intro.txt.html Kユーザー向けのKlong: https://www.t3x.org/klong/klong-vs-k.txt.html

2022年くらいにTwitterで線形代数の「教科書」を見たことがあるんだけど、黒い背景に明るい文字で、すごく長いブログ記事みたいにグラフがたくさん載ってたんだ。何度か探してみたけど、全然見つからなかった。これも少し難しそうだけど、素敵だから挑戦してみようと思う。『Think Bayes』を読んで、すごく良かったと思ったよ。

『Coding the Matrix』は黒い表紙に白い/明るい文字が書いてあるよ。

ダウニーの「Think X」シリーズは、数学を学ぶ前にコーディングを学んだ人たちにとって、いつも入り口みたいなもんだよね。正直、今の時代は全部線形代数って感じだし。