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

◆ Qk15_r()

Sub Qk15_r ( A As  Double,
B As  Double,
Result As  Double,
XX As  Double,
YY As  Double,
IRev As  Long,
Optional AbsErr As  Double,
Optional ResAbs As  Double,
Optional ResAsc As  Double 
)

有限区間の積分 (固定分点) (15点ガウス・クロンロッド則) (リバースコミュニケーション版)

目的
本ルーチンルーチンは
  I = [a, b]におけるfの積分値(誤差推定付き) および
  J = [a, b]におけるabs(f)の積分値
を求める. ここで, fは与えられた関数である. ユーザーは変数IRevに従って必要なfの関数値を計算しなければならない.
積分は15点ガウス・クロンロッド則を用いて計算される.
引数
[in]A積分区間の下限 a.
[in]B積分区間の上限 b.
[out]Result求められた I = [a, b]におけるfの積分値.
[out]XXIRev = 1の場合, 関数値を求めるべき点を返す.
[in]YYIRev = 1の場合, 再呼び出し時に関数値を与えること.
[in,out]IRevリバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の場合, 下記処理を行いIRevを変更せずに再び本ルーチンを呼び出すこと.
= 0: 処理終了.
= 1: XXにおける関数値を求めYYに設定する. YY以外の変数を変更してはならない.
[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))
Sub Ex_Qk15_r()
Dim A As Double, B As Double, Result As Double
Dim XX As Double, YY As Double, IRev As Long
A = 0: B = 4
IRev = 0
Do
Call Qk15_r(A, B, Result, XX, YY, IRev)
If IRev = 1 Then YY = 1 / (1 + XX ^ 2)
Loop While IRev <> 0
Debug.Print "S =", Result, "S(true) =", Atn(4)
End Sub
実行結果
S = 1.32581766136379 S(true) = 1.32581766366803