1次元拡散方程式(陰解法)をExcel VBAで計算。
さて、昨日Numerical Recipesの三重対角行列を計算するルーチンを作ったのは、この計算をするため。
∂u(t,x) /∂t = D ∂2u(t,x) / ∂x2
を陰的に差分化すると、
uik+1 = uik + s * (ui-1k+1 +ui+1k+1 -2*uik+1 )
となる。なので三重対角行列が計算できればこれも計算できる。
こんなルーチンでどうでしょう。
Option Explicit
Private Sub CommandButton1_Click()
Dim n As Long
Dim a() As Double, b() As Double, c() As Double
Dim r() As Double, u() As Double
Dim i As Integer, k As Integer
Dim s As Double
Application.ScreenUpdating = False
s = 1#
n = 128
ReDim a(n), b(n), c(n), r(n), u(n)
For i = 1 To n
b(i) = 1# + 2# * s
a(i) = -s#
c(i) = -s#
Next i
c(1) = -2# * s
a(n) = -2# * s
For i = 1 To n
If i > 0.5 * n - 5 And i < 0.5 * n + 5 Then
r(i) = 1#
Else
r(i) = 0#
End If
Worksheets("Sheet1").Cells(i + 1, 2) = r(i)
Next i
For k = 1 To 500
Call tridag(a, b, c, r, u, n)
For i = 1 To n
r(i) = u(i)
Worksheets("Sheet1").Cells(i + 1, k + 2) = r(i)
Next i
Next k
Application.ScreenUpdating = True
End Sub
で計算した結果がこちら。s=1でも計算出来てるようだ。
で、まだこれで終わりじゃなくてまだまだ続きが、、、
« Numerical Recipes in Cの三重対角行列の方程式を解く関数をExcel VBAに移植 | トップページ | SMAPのソフトバンク プラチナバンドスタートのCMを見た。民放各局放映はチキンラーメンのCM以来かな? »
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年1月23日 5G Americasの新ホワイトペーパー「AI時代のセルラーネットワークの信頼性とセキュリティ」、KyoceraAVXの新薄膜フィルタ、TDKの車載/一般用C0G特性1,250V 3225サイズMLCC、Semtechの5G LPWAモジュール(2025.01.23)
- 高周波・RFニュース 2025年1月22日 everythingRFマガジンにMarkiの宇宙向けミリ波部品の記事、NordicのRF52810を使った太陽電池で動き暗闇でも3週間持つアセットトトラッカー、KnowlessのMRIの技術解説記事、Broadcomの3.5Dパッケージング解説(2025.01.22)
- UnityでVisual C#用の数値計算ライブラリMath.NET numericsを使う(3) 3D画面に補間(Interpolate) を行って表示する。リニア、3次スプライン、有理関数などいろいろ使える。(2025.01.23)
« Numerical Recipes in Cの三重対角行列の方程式を解く関数をExcel VBAに移植 | トップページ | SMAPのソフトバンク プラチナバンドスタートのCMを見た。民放各局放映はチキンラーメンのCM以来かな? »
コメント