|
|
◆ 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
|