数学とか語学とか楽しいよね

フランス語、ドイツ語、ロシア語、アラビア語、オランダ語、英語、スペイン語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、格子ボルツマン法、数理最適化、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。Amazonアソシエイトを使用しています。

数値計算

【有限体積法】1次元定常移流拡散方程式を風上差分で解く C++コード付き

今回は1次元定常移流拡散方程式を有限体積法(風上差分)で解いていきます。C++コード付きです。1次元定常移流拡散方程式とは のような二階の常微分方程式のことをいいます。ここで、 は溶質の濃度、 は風などによる移流速度、 は拡散の効果を表す拡散係数と…

【有限体積法】1次元定常移流拡散方程式を中心差分で解く C++コード付き

今回は1次元定常移流拡散方程式を有限体積法(中心差分法)で解いていきます。C++コード付きです。ただし今回は風上化は入れていません。1次元定常移流拡散方程式とは のような二階の常微分方程式のことをいいます。ここで、 は溶質の濃度、 は風などによる…

【有限体積法】1次元Poisson方程式(ポアソン方程式)を有限体積法で解く C++コード付き

有限体積法のほうもぼちぼち1次元の場合から解説していきます!今回は有限体積法の勉強で最初に解くであろう、1次元Poisson方程式を有限要素法(Galerkin法)で解くC++コードを公開します。普通の有限体積法で離散化します。二次元配列は一次元配列に収納し…

【有限要素法】Cole-Hopf変換による1次元Burgers方程式(バーガース方程式)の解析解

1次元Burgers方程式の解析解を求めます。『偏微分方程式の数値シミュレーション』のpp.219-220と以下のリンクを参照しています。偏微分方程式の数値シミュレーション作者: 登坂宣好,大西和栄出版社/メーカー: 東京大学出版会発売日: 1991/04メディア: 単行本…

【有限要素法】1次元Fisher-KPP方程式(フィッシャーKPP方程式)をGalerkin法で解く C++コード付き

今回は1次元Fisher-KPP方程式(フィッシャーKPP方程式)を有限要素法(Galerkin法)で解いていきます。C++コード付きです。おそらくFisher-KPP方程式を有限要素法で解くコードが載っているネット上唯一のページです。Fisher-KPP方程式は半線型反応拡散方程式…

【有限要素法】1次元Burgers方程式(バーガース方程式)をGalerkin法で解く C++コード付き

今回は1次元Burgers方程式(バーガース方程式)を有限要素法(Galerkin法)で解いていきます。C++コード付きです。1次元Burgers方程式は、前に書いた記事「有限要素法のプログラミングを勉強するときにどの順序で学ぶのがよいか?」で紹介した、有限要素法を…

【有限要素法】1次元非定常移流拡散方程式をGalerkin法で解く C++コード付き

今回は1次元非定常移流拡散方程式を有限要素法(Galerkin法)で解いていきます。C++コード付きです。1次元非定常移流拡散方程式は、前に書いた記事「有限要素法のプログラミングを勉強するときにどの順序で学ぶのがよいか?」で紹介した、有限要素法を学ぶ場…

【有限要素法】無限領域における拡散方程式の解析解

今回は無限領域における拡散方程式の解析解をフーリエ変換を使って導きたいと思います。松下泰雄『フーリエ解析』のpp.126-127を参照します。フーリエ解析―基礎と応用作者: 松下泰雄出版社/メーカー: 培風館発売日: 2001/11/01メディア: 単行本 クリック: 1…

【有限要素法】1次元非定常移流拡散方程式の解析解を導く

今回は一次元非定常移流拡散方程式の解析解を導きたいと思います(実は途中まで)。有限要素法のプログラムがきちんと動くかどうか確かめるために使いたいのです。これ意外と本に載っていないのではないでしょうか。一次元非定常移流拡散方程式とは in のよ…

【連立一次方程式】TDMA(三重対角行列アルゴリズム、Tri-Diagonal Matrix Algorithm)C++コード付き

今回は連立一次方程式の係数が三重対角行列のときにとても効率の良い、TDMA(三重対角行列アルゴリズム、Tri-Diagonal Matrix Algorithm)のC++コードを公開します。TDMAは直接法に分類される手法で、流体計算の際のソルバーとして用いられています。理論はh…

【有限要素法】2次元有限要素法における面積座標(局所座標)の積分公式

今回は、2次元の有限要素法における面積座標(局所座標)の積分公式 を示します。ここで は2次元の三角形要素、 はその面積、、、 は形状関数で、それぞれ とあらわされます。係数は で与えられます。 と はそれぞれ三角形要素の頂点の座標です。 これを知っ…

【有限要素法】1次元有限要素法における面積座標(局所座標)の積分公式

今回は、1次元の有限要素法における面積座標(局所座標)の積分公式 を示します。ここで は要素の長さ、 と は形状関数で、それぞれ とあらわされます。これを知っていると積分がサクサクできます。 まず、 とおきます。すると、 より とかけるので上式に代…

【数値計算】LU分解 C++コード付き

今回は連立一次方程式に対する直接法である、LU分解のC++コードを公開します。行列を上三角行列Uと下三角行列Lに分解します。一度分解してしまえば、前進代入と後退代入という簡単な操作で連立一次方程式を解くことができるのです。理論はhttp://www.ced.is.…

【有限要素法】『よくわかる有限要素法』

有限要素法の解説書である、福森栄次著『よくわかる有限要素法』を読み終わったので、内容に関して書いていきたいと思います。ページ数は304でそれなりに読みごたえがあります。私は2日ほどで通読しました。初心者向けとのことですが、本当の初心者には通読…

【有限体積法】有限体積法の入門書

有限体積法を学びたいと考えている方はたくさんいると思いますが、如何せん有限体積法を解説している和書は少ないです(洋書まで含めればそれなりにあります)。それに加えて、ネット上にも有限体積法の情報は少ないように見受けられます。私が有限体積法を…

【連立一次方程式】双共役勾配法(BiCG法) C++コード付き

今回は正定値対称行列にしか適用できない共役勾配法(Conjugate Gradient法)をパワーアップした手法である双共役勾配法(Bi-Conjugate Gradient法)のC++コードを公開します。CG法についてはこちらをご覧下さい。しくみはおいおい説明するとして、とりあえ…

【連立一次方程式】安定化双共役勾配法(Bi-CGSTAB法) C++コード付き

今回は正定値対称行列にしか適用できない共役勾配法(Conjugate Gradient法)をパワーアップした手法である双共役勾配法(Bi-Conjugate Gradient法)を安定化した、安定化双共役勾配法(Bi-conjugate gradient stabilized法)のC++コードを公開します。やや…

【連立一次方程式】共役勾配法(CG法) C++コード付き

今回は正定値対称行列に対して適用可能な、共役勾配法(Conjugate Gradient法)のC++コードを公開します。CG法は連立一次方程式の解法のひとつであり、有限回数の反復で解へと収束する面白い方法です(ただし丸め誤差に弱く、必ずしも理論通りにはいってくれ…

【数物リンク】浅水流方程式の数値計算手法とRiemann問題についての解説

A. Siviglia著、"A short introduction to Finite volumes numerical methods for the solution of the Saint-Venant equations"のリンクです。浅水流方程式の数値計算手法とRiemann問題についての解説です。https://www.ethz.ch/content/dam/ethz/special-i…

【数値流体力学】"Shock-Capturing Methods for Free-Surface Shallow Flows"を読んでまとめます!

夏です!Toro著"Shock-Capturing Methods for Free-Surface Shallow Flows"を読んで内容をまとめていこうと思います!夏といったら浅水流方程式でしょう!Shock-Capturing Methods for Free-Surface Shallow Flows作者: Eleuterio F. Toro出版社/メーカー: W…

【数値計算】Roe平均の見つけ方 -そのアイディア

1, 保存量 とヤコビアン をあるパラメータ で表現する。2, 保存量とヤコビアンのそのパラメータ に対するヤコビアン を計算する。3,「流束の差=近似ヤコビアン×保存量の差」という関係式 を用いて、パラメータ によるヤコビアン の線積分を考える。4, すると…

【連立一次方程式】ガウスの消去法 C++コード付き

今回は連立一次方程式の直接解法の代表である、ガウスの消去法のC++コードを公開します。しくみはおいおい説明するとして、とりあえずコードをおいておきます。反復がi, j, kと出てきて少々ややこしい形になります。 今回解く連立一次方程式はとあらわされま…

【数値計算】一次元配列で二次元配列を表現しよう C++コード付き

今回はC++において、一次元配列で二次元配列を表現する方法を説明します。二次元配列でコードを書くと非常に読みやすく、理解しやすいものになるのですが、二次元配列は一次元配列に比べて重いです。そこで、よく一次元配列で二次元配列を表現する方法が使わ…

【有限要素法】有限要素法の誤差解析ーそのアイディア

有限要素法が様々な分野の問題に適用されている理由の一つに、一般的な「誤差解析が行いやすい」ということがあります。以下にそのアイディアを示します。 Ceaの補題(セアの補題)を用いて、有限要素解と真の解との誤差を、有限要素解と補間関数との誤差の…

【数値計算】数理モデルと離散化の関係とか

今回は「数理モデル」と「離散化」の関係を説明します。いろいろ書こうとするとどうしてもこの二つの概念を説明する必要があることに気づきました。 まず、考えたい(解析したい)現象があります。今回は玉が重力の下で自由落下する運動を考えたい現象である…

【数値計算】単調性保存(monotonicity preserving)

単調性保存(monotonicity preserving)は数値計算のスキームを考える際に必要となる概念です。単調性保存の定義は離散化された方程式のすべての節点 にたいしてならば が成り立つとき、このスキームを単調性保存(monotonicity preserving)である、という…

【有限要素法】有限要素法で局所座標の積分公式を証明する際に用いる定積分の公式

今回は、有限要素法で局所座標の積分公式を証明する際に用いる、定積分の公式 を示します。簡単そうに見えますが、計算するのには一手間かかります。 まず、 を以下の式 で定義します。漸化式にして求めます。部分積分を一回して を得ます。同じように を部…

【読書リンク】『数値計算のための解析力学』

今回は陰山聡さん著、『数値計算のための解析力学』のリンクです。現在解析力学と取っ組み合いをしているので、目途が立ったら読ませていただきます。このように誰にでも読める形でまとめて公開していただけると、独学の際とても助かります。http://www.rese…

【数値計算】二次精度風上差分の導出

二次精度風上差分の導出をやります。備忘録みたいなものです。点 を中心に上流側二点の値を使うのが二次精度風上差分です。具体的には、流速が のときは と と の情報を使います。一方、流速が のときは と と の情報を使います。まず、 のときから考えてい…

【数値計算】風上差分の中心差分+数値拡散表示

風上差分の中心差分+数値拡散表示の導出をやります。ポイントは風向きの正負によらない表示です。まず、 を節点 における濃度ないしは熱、 を節点 における流速、 を空間座標としたとき、風上差分は のように書けます。風上側(情報が伝わってくる側)の値を…