XLPack API: VB.Net 使用例

VB.NetからXLPackを呼び出す

VB.NetからXLPackを呼び出すためにはDLLを直接使う必要があります.
SDKにはDLLインターフェースプログラムxlpack.vbが入っています. これを使うと, 呼び出しプログラムは “Imports XLPack” と宣言するだけでDLLインターフェースの詳細を気にせず組込み関数のように簡単にXLPackを呼び出すことができます.
係数行列aは2次元配列, 右辺行列bは1次元配列を使います.
VB.NetはExcelのVBAと異なり, 2次元配列はC/C++やC#と同じく行優先です. また, 32ビット整数型はLongではなくIntegerです.

VB.Netプログラム例 (例題(1))

Imports XLPack

Class Test

Shared Sub TestDgesv
    Const N = 3
    Dim A(,) As Double = {
        { 0.2, -0.32, -0.8 },
        { -0.11, 0.81, -0.92 },
        { -0.93, 0.37, -0.29 } }
    Dim B() As Double = { -0.3727, 0.4319, -1.4247 }
    Dim IPiv(N - 1) As Integer
    Dim Info As Integer

    Call Dgesv(N, A, IPiv, B, Info)
    Console.WriteLine("X = {0}  {1}  {2}", B(0), B(1), B(2))
    Console.WriteLine("Info = {0}", Info)
End Sub

Public Shared Sub Main(ByVal args() As String)
    Call TestDgesv
End Sub

End Class

実行結果

x = 0.86  0.64  0.51
info = 0

VB.Netプログラム例 (例題(2))

例題(2)ではf(x)の積分をqk15を使って求めます. qk15はf(x)を定義する外部関数を必要とします. 外部関数はVB.Netで作成することができ, qk15は必要なときにそれを呼び出します.

Imports XLPack

Class Test

Shared Function F(X As Double) As Double
    F = 1/(1 + X ^ 2)
End Function

Shared Sub TestQk15
    Dim A As Double, B As Double, Result As Double, AbsErr As Double

    A = 0: B = 4
    Call Qk15(AddressOf F, A, B, Result, AbsErr)
    Console.WriteLine("Result = {0}, AbsErr = {1}", Result, AbsErr)
End Sub

Public Shared Sub Main(ByVal args() As String)
    Call TestQk15
End Sub

End Class

実行結果

Result = 1.32581766136379, AbsErr = 0.00148272394121622