はじめに
私は建設系のエンジニアです。
普段は力学系(地盤や構造物)の数値計算を仕事としています。
個人的には理系が増えてほしいし同じようなエンジニアが育ってほしいと思っています。
ただ、ここ最近、そのためには座って待っているだけではなのではないか?と思ったので自分の考えを書いてみたいと思います。
なぜこう思ったか
私の専門の地盤工学では、他の分野と同様数値計算が重要になっています。
(地盤工学の数値解析については以下も参照)
例えば、有限要素法である力学現象の挙動をシミュレートするとしましょう。
自分で計算プログラムを実装するところまで考えると以下の学問が必要になると想定されます。
- 数学(微分・積分、線形代数、微分方程式など、理論を記述・計算するための基礎)
- 連続体力学(変位、ひずみ、応力、保存則、つり合い方程式など、現象を数式で表すための基礎)
- 材料力学・材料モデル(弾性、塑性など、材料が荷重に対してどう応答するかを表すための知識)
- 数値解析・有限要素法(支配方程式を離散化して、コンピュータで解ける形に変換するための理論)
- プログラミング(有限要素法や材料モデルを実装し、実際に計算するための手段)
この中で、数学は高校でも高専でもきっちり学習します。
プログラミングもPythonなら最近は教わることが多いでしょう。
材料力学や材料モデルは簡単なものなら高専では専門科目として教わるでしょう。
しかし、これら学んだものを組合せて有限要素法のように1つのものに落とし込む授業というのはあまり見たことがありません。
最近、某高専のシラバスを見る機会がありました。
専門科目はきっちり学習しますが、広く浅くという感じで連続体や塑性といった用語が全く出てきませんでした。
一方で、連続体力学や塑性、非線形数値解析のような内容はほとんど登場せず、数学・物理・プログラミングを横断的に扱う機会は少ないように見えました。
私はここに少しもったいなさを感じました。
数学や物理を個々に学ぶだけでは、それが実社会でどう使われるのかを実感しにくく、学んだ知識同士もつながりにくいのではないかと思っています。
計算力学という授業をつくりたい
そこで私は数学$\times$物理$\times$プログラミングを組み合わせて学ぶ「計算力学」という授業を作りたいと思っています(当方教育者ではないので構想だけですが)。
例えばこんな授業構想です(高校生を想定)。
- 現実世界と数学の関係:実社会問題の映像とその解析結果を見せ、「これを起きる前に予測したい」という目的づくり
- 運動を数学で表す:位置・速度・加速度と微分、Newtonの運動方程式を通じて物理と数学の関係を知る
- 複雑な物体:ベクトル、行列、連立方程式など、「なぜこれらを習うのか」を明らかにする
- 材料の変形:応力・ひずみ、弾性と塑性など、実現象を仮想世界へ落とし込む準備をする
- 物体を小さく分ける:FEMを題材に複雑な物体を計算する手法を知る
- 仮想世界を作る:簡単なPython FEMを動かして結果を可視化することで、仮想世界を生み出すことを経験する
もちろんただの構想なのでこれが良いというわけではないと思いますが、数学と物理とプログラミングがどう結びつけられるかはわかるかなと思います。
ここで強調しておきたいのは、私はが高校生に有限要素法の理論を完全に理解してほしいわけではないということです。
微分方程式を厳密に解けるようになってほしいわけでもありません。
大事なのは、「現実の現象を数学で表す」、「それをコンピュータが解ける形にする」、「得られた結果が正しいか考える」という流れを一度経験することだと思っています。
最後に失敗を経験する授業を入れたいと思います。
コンピューターシミュレーションは安全に何度も失敗できる数少ないコンテンツだと思います。
例えばあえて計算を破綻させ、その原因を突き止めるというのは謎解きのようで楽しいかもしれません。
さいごに
数学を学び、物理を学び、プログラミングを学ぶ。
そして最終的に、自分で作った仮想世界を発散させる。
そんな授業が1つくらいあってもいいんじゃないでしょうか。
教育に携わっている皆様、いかがでしょうか?