XLPack for Matplotlib Experimental Version 0.1
例題集
読み取り中…
検索中…
一致する文字列を見つけられません

2 次元ポアソン方程式の 5 点差分近似による連立一次方程式の係数行列 (CSR 形式) の疎行列パターンをプロットする.


Sub GenMat_5DF_CSX(N As Long, Nnz As Long, Value() As Double, Index() As Long, Ptr() As Long)
    Dim NN As Long, II As Long, I As Long, J As Long, Ctr As Long
    NN = N * N
    Ctr = 0
    For II = 0 To NN - 1
        I = Int(II / N)
        J = II - I * N
        If I > 0 Then
            Index(Ctr) = II - N
            Value(Ctr) = -1
            Ctr = Ctr + 1
        End If
        If I < N - 1 Then
            Index(Ctr) = II + N
            Value(Ctr) = -1
            Ctr = Ctr + 1
        End If
        If J > 0 Then
            Index(Ctr) = II - 1
            Value(Ctr) = -1
            Ctr = Ctr + 1
        End If
        If J < N - 1 Then
            Index(Ctr) = II + 1
            Value(Ctr) = -1
            Ctr = Ctr + 1
        End If
        Index(Ctr) = II
        Value(Ctr) = 4
        Ctr = Ctr + 1
        Ptr(II + 1) = Ctr
    Next
    Ptr(0) = 0
    Nnz = Ctr
End Sub

Sub Test_Spy_CSR()
    Const N = 10, NN = N * N
    Dim Fig As Figure, Ax As Axs
    Dim Val(5 * NN - 1) As Double, Ind(5 * NN - 1) As Long, Ptr(NN) As Long
    Dim Nnz As Long
    Call GenMat_5DF_CSX(N, Nnz, Val(), Ind(), Ptr())
    Set Fig = Plt.Figure()
    Set Ax = Fig.Gca()
    Call Ax.Spy_CSR(NN, NN, Nnz, Val(), Ptr(), Ind(), "markersize=5")
    Call Plt.Show
End Sub