What you'll learn
- Pythonで科学技術計算や数値計算を行う上で必要なプログラミングの知識
- 数値計算で使用頻度の高いNumpy, Scipy, Numba, Cupyといった数値計算ライブラリの使い方
- 計算の前後で必要となってくるファイル入出力を様々な形式(json, hdf, xlsx)で行える
- 科学技術計算コード開発で必要となってくるPyCharmの基本の使い方やデバッグの方法、VCSとの連携方法
Requirements
- 必須:パソコンの基礎的な知識(コマンドプロンプト ターミナルの使い方)
- 必須:高校レベルの数学(微分、積分とは何か)
- ベター:C言語やFortranなどプログラミングの経験
Description
【このコースは誰に向けたものか?】
本コースは、Pythonで科学技術計算や数値シミュレーションに取り組みたいという方に向けたPythonの入門講座です。
科学技術計算や数値シミュレーションといえば、今でもよく使われていますが、C言語やFortranというコンパイル型の言語がメインでした。
しかしながら、今後のプログラミング言語としてのポテンシャルを考えると、今後は5 ~ 10年という中長期的な視点で、科学技術計算でもC言語やFortranの代わりにPythonを使うという機会が増えてくる事は間違いないでしょう。
この為、
これから大学の研究室に配属されて数値計算のコードを書く学生さん
今までC言語・Fortranで数値計算コードを書かれていた若手の研究者・エンジニア
企業で内製ソルバーの開発担当を任された研究者・技術者の方
この講座はそういった方々に向けて作られた講座です。
【Pythonで数値計算なんて大丈夫か?】
結論から申し上げますと大丈夫です。
Pythonはインタプリタ型の言語だから計算速度が要求される科学技術計算には向かない、やっぱりコンパイル型の言語であるC言語やFortranの方が望ましい、そう考える人もいるかもしれません。
しかしながら、Pythonは数値計算を高速化するライブラリが数多くあります。例えば、代表的なライブラリがNumpyです。
Numpyの演算は基本的にC言語と同じくらいの速度が出ると考えていただいても、そんなに大きな間違いではありません。
またNumpyの他にScipy, NumbaといったCPUベースの高速化ライブラリもありますし、CupyというGPUによる演算をサポートしたライブラリもあります。これらのライブラリのおかげで、Pythonの最大の欠点である計算が遅いという欠点はほぼ克服されていると考えてOKです。
【Python x 数値計算の組み合わせ】
Pythonは数値計算のライブラリだけでなく、ファイル入出力や可視化のライブラリも充実しています。
この為、計算結果を読みだしたり、吐き出したりするのにいちいち自分でゼロからプログラムを書く必要はありません。
つまり、Pythonを使うことで科学技術計算をトータル的にカバー可能です。
ライブラリのお陰で短く、そして強力な機能を実装できます。
コードをたくさん書く必要がないおかげでバグも少ないし、成果(計算結果)が出始めるまでも早いという、いいことづくめだと思います。
私は日本で科学技術計算向けのコードをPythonで書くということがもっと普及したらいいなと思っています。
こういうモチベーションで、この講座を作成しました。Python x 科学技術計算という組み合わせの教材はまだそこまで多くありません。
【何が学べる?】
科学技術計算や数値計算で必要となってくるプログラミングの知識全般です。
具体的にはコースの概要を見ていただきたいですが、以下にも挙げておきます
・数値計算で必要となってくるPythonの基礎知識(四則演算 ~ オブジェクト指向まで)
・シミュレーションコード開発時に使う統合開発環境(PyCharm)の使い方とデバッグの基礎
・Gitによるコードの管理
・数値計算で非常によく使うNumpy, Scipy, Matplotlibの基礎知識
・前処理、後処理などで使うことになる種々のファイル入出力
・数値計算を高速化するためのNumba, Cupyの基礎
・可視化ツールとして使う可能性の高いParaViewの使い方
など
Who this course is for:
- 研究室に配属されて数値計算コードを開発することになった学生
- 科学技術計算に興味のある大学の研究者や企業の研究者
- 昔はC言語やFortranでコードを書いていたが、Pythonでの科学技術計算コードの開発に興味のある数値計算エンジニア
Instructor
企業の研究/開発者
R&D部門にてPythonによるソフトウェア開発/データ分析を行っている。
実験/数値シミュレーションの両方の経験があり、その経験を生かしたデバイス開発を行っていた。
近年は、ソフトウェア開発に専従し、HPC(High Performance Computing)を用いた深層学習/数値シミュレーションのプログラム開発やデータ分析が中心。
PythonとCUDA Cを用いた大規模な数値解析ソルバーの開発経験あり。
数値解析については分野横断的な解析経験があり、
統計解析、第一原理計算、CAE(流体解析 / 電磁場解析など)、モンテカルロ法による相転移解析の他、
OpenCVを用いた画像処理など分野を超えた様々な領域に従事。
大阪大学大学院理学研究科修了。
学生時代はOpenMPとMPIによるスパコンでの大規模数値シミュレーション(256~1024コア程度)を行っていた。
Udemyでは各学問分野における"基礎力"や"ベースとなる土台"を重視した講座を複数展開中。
講座のポリシー:
各学問分野における
1. なぜこうなるのかという原理・原則に基づいた理解
2. その為のベースとなる数学力
3. プログラミング力
の3つを身に付けることでブレない基礎力を獲得できる講座