Pythonで学ぶ線型代数

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。
 

講座の概要

科学技術計算に Python を活用する場合、解くべき問題は可能な限り行列(より一般的にはテンソル)で表現し、コンピュータに配列処理を実行させます。なぜなら、科学技術計算用パッケージ NumPy は、大規模な配列演算を高速処理するように設計されており、Python エンジニアはその処理速度を減速させないコードを書くことが求められるからです。
 
配列演算の基盤となる数学は 線型代数 (linear algebra) です。NumPy および、NumPy をベースに構築された SciPy は、linalg というモジュールに線型代数演算用の関数をまとめています。
 
Python で学ぶ線型代数 では、テーマごとに行列やベクトル演算のコードを実装しながら、線型代数の数理構造を解説します。このシリーズの記事を読み進めることによって、配列を用いたプログラミングと線型代数の知識を同時進行で習得できる構成になっています。当講座は「プログラミングを活用しながら線型代数に登場する式や定理の意味を読み解く」という方針で執筆しています。純粋数学としての線型代数を講義する内容ではないので、難解な証明などはざっくり端折っています (Web で長い証明を読みたいと思う人はあまりいないでしょう)。厳密な形式に拘りたい人は、基礎数学シリーズの『線型代数入門』で学ぶことをおすすめします(線型代数について網羅された古典的名著です)。

本講座に掲載するコードを実行するためには、Python 本体に加えて以下の4 つの拡張パッケージが必要となります。

 ・NumPy
 ・Scipy
 ・SymPy
 ・Matplotlib
 
足りないものがあったらインストールしておいてください (Anaconda にはすべて含まれています)。このうち NumPy については、必要最低限の知識 (基本演算、ブロードキャスト、numpy.sum()関数の使い方など) は身につけておいてください。SciPy や NumPy の関数を使うときには、その都度説明します。
 
線型代数は大学の初年度に履修する学問なので、高校数学までの基本的知識は必要となります。基本的知識とは、教科書をひと通り読んで簡単な練習問題を解けるというレベルです。忙しくて教科書を全部読み直す時間がないという人は、文字式の変形、因数分解、一次方程式、連立方程式、ベクトルの計算、三角関数あたりを重点的に復習しておいてください。

Python線形代数プロジェクト

【AI連載小説】科学とコードの交差点(60)
 
サークルメンバーたちは新しいプロジェクトにワクワクしています。Pythonを使った線形代数の計算プロジェクトが発足したことで、開誠、明信、美純は興奮冷めやらぬ様子で最初のミーティングを行っています。

開誠(期待に胸を膨らませながら):「みんな、新しいプロジェクトの発足、楽しみだね!」
美純(ノートパソコンを開きながら):「そうね、Pythonで線形代数を学びながらプログラムを組むって、すごく面白そう!」
明信(手帳を広げながら):「まずはどんなことをやりたいか、アイディアを出し合おう」

開誠(ホワイトボードにアイディアを書き出しながら):「基本的な行列の演算から、特異値分解や固有値問題、さらには応用として画像処理や機械学習も視野に入れてみたらどうだろう?」
美純(興奮して):「確かに線形代数は様々な分野で使われているから、そういった応用も面白いね!」
明信(ニッコリしながら):「PythonならNumPyやSciPyを使って効率的に計算できるし、グラフ化も簡単だ」
美純(アイディアを出しながら):「例えば、特異値分解を使った画像圧縮の実装とか、機械学習のアルゴリズムに線形代数を組み込むのも面白そう」
開誠(まとめながら):「素晴らしいアイディアだね。それでは、次回のミーティングで詳細な計画を練りましょう」