[VBA] 正弦積分 Si(x) と余弦積分 Ci(x)

積分三角関数(正弦積分と余弦積分)

 次のような積分で定義される関数

\[\begin{align*}\mathrm{Si}\,(x)&=\int_{0}^{x}\frac{\sin t}{t}dt\\[6pt]
\mathrm{Ci}\,(x)&=-\int_{x}^{\infty}\frac{\cos t}{t}dt\end{align*}\]

のことを、それぞれ 正弦積分関数余弦積分関数 といい、まとめて 積分三角関数 とよばれます。余弦積分関数は次のように書けることも知られています。
 
\[\mathrm{Ci}\,(x)=\gamma+\log x-\int_{0}^{x}\frac{\cos t-1}{t}dt\]
 ここで $\gamma$ はオイラーの定数
 
\[\gamma=\lim_{n\rightarrow \infty}\left(1+\frac{1}{2}+\cdots+\frac{1}{n}-\log n\right)=0.5772156649\]
です。
 

正弦積分関数を計算します

 シンプソンの公式 を用いて正弦積分関数 $\mathrm{Si}\,(x)$ を計算するプロシージャです。

 '正弦積分関数 (C)BlogCat

 Function SI(x As Double) As Double

 Dim p As Double, q As Double, r As Double
 Dim h As Double, s As Double
 Dim m As Integer, k As Integer

 m = 100
 h = x / (2 * m)

 s = 1 + Sin(h) / h + Sin(2 * h) / (2 * h)

 For k = 1 To m - 1

 p = 2 * k * h

 q = (2 * k + 1) * h

 r = (2 * k + 2) * h

 s = s + Sin(p) / p + 4 * Sin(q) / q + Sin(r) / r

 Next k

 SI = s * h / 3

 End Function

 SI関数をワークシートで使用するときは

=SI(数値)

と入力します。
 

余弦積分関数を計算します

 シンプソンの公式 を用いて余弦積分関数 $\mathrm{Ci}\,(x)$ を計算するプロシージャです。

 余弦積分関数 (C)BlogCat

 Function CI(x As Double) As Double

 Dim p As Double, q As Double, r As Double
 Dim h As Double, s As Double, gm As Double
 Dim m As Integer, k As Integer

 gm = 0.5772156649

 m = 100
 h = x / (2 * m)

 s = (Cos(h) - 1) / h + (Cos(2 * h) - 1) / (2 * h)

 For k = 1 To m - 1
 p = 2 * k * h

 q = (2 * k + 1) * h

 r = (2 * k + 2) * h

 s = s + (Cos(p) - 1) / p + 4 * (Cos(q) - 1) / q + (Cos(r) - 1) / r

 Next k

 CI = gm + Log(x) + s * h / 3

 End Function

 CI関数をワークシートで使用するときは

=CI(数値)

と入力します。SI関数とCI関数を使って正弦関数と余弦関数のグラフを描くと次のようになります。

 ExcelVBA正弦積分関数と余弦積分関数
 ≫ VBA 数値計算

スポンサーリンク
スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください