XLPack 6.1
Excel VBA 数値計算ライブラリ(基本モジュール) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ Qk15()

Sub Qk15 ( F As  LongPtr,
A As  Double,
B As  Double,
Result As  Double,
Optional AbsErr As  Double,
Optional ResAbs As  Double,
Optional ResAsc As  Double 
)

有限区間の積分 (15点ガウス・クロンロッド則)

目的
本ルーチンルーチンは
  I = [a, b]におけるfの積分値(誤差推定付き) および
  J = [a, b]におけるabs(f)の積分値
を求める. ここで, fはユーザー定義サブルーチンにより与えられる関数である.
積分は15点ガウス・クロンロッド則を用いて計算される.
引数
[in]F被積分関数f(x)を求めるユーザー定義サブルーチンで, 次のように定義すること.
Function F(X As Double) As Double
F = f(X)
End Function
Xを変更しないこと.
[in]A積分区間の下限 a.
[in]B積分区間の上限 b.
[out]Result求められた I = [a, b]におけるfの積分値.
[out]AbsErr(省略可)
絶対誤差の推定値. 真の誤差に等しいかそれより大きい.
[out]ResAbs(省略可)
求められた J = [a, b]におけるabs(f)の積分値.
[out]ResAsc(省略可)
求められた [a, b]におけるabs(f - I/(b - a))の積分値.
出典
SLATEC (QUADPACK)
使用例
次の定積分を求める.
∫ 1/(1 + x^2) dx [0, 4] (= atan(4))
Function F1(X As Double) As Double
F1 = 1 / (1 + X ^ 2)
End Function
Sub Ex_Qk15()
Dim A As Double, B As Double, Result As Double
A = 0: B = 4
Call Qk15(AddressOf F1, A, B, Result)
Debug.Print "S =", Result, "S(true) =", Atn(4)
End Sub
Sub Qk15(F As LongPtr, A As Double, B As Double, Result As Double, Optional AbsErr As Double, Optional ResAbs As Double, Optional ResAsc As Double)
有限区間の積分 (15点ガウス・クロンロッド則)
実行結果
S = 1.32581766136379 S(true) = 1.32581766366803