こんにちは、トライです。
今回はプログラムのカテゴリーの最初の記事として、本ブログ内で扱うプログラミング言語MATLABと有限要素法についての解説記事となります。
本ブログではMATLAB(MATrix LABoratryの略:マトラボ)というプログラミング言語を用いて有限要素法(FEM:Finite Element Method)の具体的なコードを解説します。
私のように普通の脳みそしか持っていない人間でも大学4年からプログラミングを独学で勉強し、有限要素法のプログラムをすべて自作して無事に修士号を獲得しました。
本ブログでは普通の脳みそしか持っていない人間だからこそ可能な
とにかくとっかかりやすく、分かりやすい解説
を意識していきます。
具体的なMATLABのコードも公開していくので、プログラミングを始めたばかりの人でも理解しやすいと思います。
プログラミング言語MATLABとは

まず初めにMATLABというプログラミング言語の概要を確認します。
MATLAB(マトラボ)は、アメリカ合衆国のMathWorks社が開発している数値解析ソフトウェアであり、その中で使うプログラミング言語の名称でもある。MATLABは、数値線形代数、関数とデータの可視化、アルゴリズム開発、グラフィカルインターフェイスや、他言語(C言語/C++/Java/Python)とのインターフェイスの機能を有している。MATLABは、主に、数値計算を扱う事ができるが、追加のオプションSymbolic Math Toolboxを使うことで、数式処理の能力を得ることができる。2019年時点でMATLABのユーザー数は400万人を超えており、100,000以上の企業・政府・大学で、工学・理学・経済学など幅広い分野に利用されている。
出典: フリー百科事典『ウィキペディア(Wikipedia)』

上記のほかに、最近注目されている人工知能・AIの分野でも
MATLABによるディープラーニングが大きく注目されています。
MATLABの公式サイトにも人工知能(AI)についてその重要性が述べられています。
マッキンゼーの予測によると、AIは2030年までに世界中で13兆ドルの経済的価値を生み出すと推定されているそうです。自動運転だけでなく、AIは機械の故障を予測するモデルにも使用され、メンテナンスが必要となる時期を示します。医療分野における患者モニタリングシステムのヘルスケアとセンサー分析や、経験から学び改善していくロボットシステムにも適用されています。これは、AIがほぼすべての業界および産業用途でエンジニアリングに変革を起こしているからといえます。
https://jp.mathworks.com/discovery/artificial-intelligence.html
私が勤めている建設業界でも、将来の職人不足に対する対応策として、
AIやビッグデータ等のICTを導入し、建設生産システム全体の生産性向上を図ろうとしています。
類似言語 Python(パイソン)との比較
よくMATLABと比較されるプログラム言語としてPython(パイソン)というものがあります。
私自身はPythonを触ったことはないので調べた内容でしかありませんが、
Python(パイソン)はインタープリタ型の高水準汎用プログラミング言語である。グイド・ヴァン・ロッサムにより創り出され、1991年に最初にリリースされたPythonの設計哲学は、有意なホワイトスペース(オフサイドルール)の顕著な使用によってコードの可読性を重視している。その言語構成とオブジェクト指向のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
人工知能(AI)・ディープラーニングの分野ではこのPythonとMALABが特に注目されています。
「TIOBE」というサイトによると、あまた存在するプログラム言語の需要を調査した結果
1位はC言語、MATLABとよく比較されるPythonは3位、MATLABは19位とやや低い結果となりました。
特にPythonは利用者の割合が
- 2020年:9.09%
- 2021年:10.95%(前年+1.86%)
と急激に増えており、今一番アツいプログラム言語だと言えます。
出典:TIOBE Index for July 2021
有限要素法とは

次に有限要素法について解説します。
名前くらいは聞いたことがあるかも知れませんが、初めに概要を確認しておきましょう。
有限要素法(FEM : Finite Element Method)は数値解析手法の一つ。解析的に解くことが難しい微分方程式の近似解を数値的に得る方法の一つであり、Turner-Clough-Martin-Toppによって導入された。方程式が定義された領域を小領域(要素)に分割し、各小領域における方程式を比較的単純で共通な補間関数で近似する。構造力学分野で発達し、他の分野でも広く使われている手法である。その背景となる理論は、関数解析(リースの表現定理、ラックス=ミルグラムの定理など)と結びついて、数学的に整然としている。FEMを用いて現象を研究・分析することを「有限要素解析(FEA)」と呼ぶことがある。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
有限要素法は、機械工学や建築構造の分野で、変形性状や応力状態を把握するのに幅広く利用されています。
建設業界では「MIDAS iGen」というソフトが最も多く用いられています。


今後、プログラミングの需要はますます高まることが予想されています。
本ブログではその第一歩として、MATLAB言語を用いた有限要素法のプログラミング方法を紹介していきます。
ちなみにこのブログで解説する有限要素法のコードはこの文献をベースに作成しています。
今後、この文献に掲載されているコードを、より汎用性が高くなるように私なりに改善したコードを無料公開していきます。
今後公開予定の有限要素解析プログラムについて

今後、以下の有限要素解析プログラムを公開する予定です。
- 平面トラス要素
- 立体トラス要素
- 平面骨組(梁)要素
- 立体骨組(梁)要素
- 線形三角形要素
この中で、平面トラス要素は有限要素法の基本となるので、数回に分けて詳しく理論から解説していく予定です。
因みに、このブログのために久し振りに0からプログラムを組んでみました。
暗記物ではないので数年振りでも意外とすぐ思い出せたため、

プログラミングの知識は一生ものだな…。
としみじみ感じました。
その際に疑問に思ったことや、プログラムを組む際に意識したほうが良いことも解説します。
乞うご期待下さい。
コメント