∫(coskx)^ndx

cosnkx を積分するユーザー定義関数

 ICOS 関数は $\cos^n kx$ の任意の範囲における積分値を返します。
 
\[\int_{a}^{b}\cos ^nkxdx\]
という形の積分に対応して

=ICOS(a,b,k,n)

というように 4 つの引数を指定します。たとえば
 
\[\int_{0}^{\pi}\cos ^3 2xdx\]
という積分を計算したい場合は

=ICOS(0,pi(),2,3)

と入力します。

ICOS 関数のコード

 以下のコードを標準モジュールに貼りつけると使用することができるようになります。

 Function ICOS(a As Double, b As Double, _
 k As Integer, n As Integer) As Double

 Dim h As Double, s As Double
 Dim m As Integer, i As Integer

 m = 1000
 h = Abs(b - a) / (2 * m)

 For i = 0 To m - 1
  s = s + Cos(k * (a + 2 * i * h)) ^ n _
  + 4 * Cos(k * (a + (2 * i + 1) * h)) ^ n _
  + Cos(k * (a + (2 * i + 2) * h)) ^ n
 Next i

 If a = b Then
  ICOS = 0

 ElseIf a < b Then
  ICOS = s * h / 3

 Else
  ICOS = -s * h / 3

 End If

 End Function

 シンプソンの公式 を用いています。分割数 m は 1000 としてありますが、より高い精度を求める場合はこの部分を増やしてください。
 

ICOS 関数の精度の検証

 たとえば $n=2$ とした $\cos^2 2x$ の積分は
 
\[\int\cos ^2 2xdx=\frac{x}{2}+\frac{\sin 4x}{8}\]
で求められます。下に区間ごとの積分値の真値と ICOS 関数による戻り値の比較を載せておきます。

積分区間 真値 ICOS 関数の戻り値
0-1 0.405399688 0.405399688
0-10 5.093139145 5.093139145
0-50 24.967203143 24.890837777
0-100 49.893635080 49.893634130

 

sinnkx を積分するユーザー定義関数

 ISIN 関数は $\sin^n kx$ の任意の範囲における積分値を返します。
 
\[\int_{a}^{b}\sin ^nkxdx\]
という形の積分に対応して

=ISIN(a,b,k,n)

と入力します。たとえば
 
\[\int_{0}^{1}\sin ^2 4xdx\]
という積分を計算したいときはセルに

=ISIN(0,1,4,2)

と入力します。

ISIN 関数のコード

 ISIN 関数のマクロは次のようになります。

 Function ISIN(a As Double, b As Double, _
 k As Integer, n As Integer) As Double

 Dim h As Double, s As Double
 Dim m As Integer, i As Integer

 m = 1000
 h = Abs(b - a) / (2 * m)

 For i = 0 To m - 1
  s = s + Sin(k * (a + 2 * i * h)) ^ n _
  + 4 * Sin(k * (a + (2 * i + 1) * h)) ^ n _
  + Sin(k * (a + (2 * i + 2) * h)) ^ n
 Next i

 If a = b Then
  ISIN = 0

 ElseIf a < b Then
  ISIN = s * h / 3

 Else
  ISIN = -s * h / 3

 End If

 End Function

 たとえば
 
 \[\int_{0}^{1}\sin ^2 2xdx=0.594600312\]
という真値に対して、

=ISIN(0,1,2,2)

は 0.594600312 を返し、9 桁以上の精度で一致します。

 言葉の工房あとりえこばと

コメントをどうぞ

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

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