⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accessingmatrixcomponents.vb

📁 这里是用VB写的数学库。以前用C、C++写的比较多。内容有:复数运算、矩阵运算、解方程、积分微分等。非常有用。
💻 VB
字号:
' Matrix and Vector classes reside in the
' Extreme.Mathematics.LinearAlgebra namespace.
Imports Extreme.Mathematics.LinearAlgebra

Namespace Extreme.Mathematics.QuickStart.VB
    ' Illustrates accessing matrix components and iterating 
    ' through the rows and columns of a matrix. Matrix classes
    ' reside in the Extreme.Mathematics.LinearAlgebra namespace 
    ' of the Extreme Optimization Mathematics Library for .NET.
    Module AccessingMatrixComponents

        Sub Main()
            ' We'll work with this matrix:
            Dim m As Matrix = New GeneralMatrix(2, 3, New Double() {1, 2, 3, 4, 5, 6})

            '
            ' Individual components
            '

            ' The Matrix class has an indexer property that takes two arguments:
            ' the row and column index. Both are zero based.
            Console.WriteLine("m(1,1) = {0:F4}", m(1, 1))

            '
            ' Rows and columns
            '

            ' Indexed range access

            ' The indexer property is overloaded to allow for direct indexed access 
            ' to complete or partial rows or columns.

            Dim row1 As Vector = m(0, New Range(1, 2))
            ' This prints "(3, 5)":
            Console.WriteLine("row1 = {0:F4}", row1)

            ' The special range Range.All lets you access an entire row
            ' or column without having to specify any details about the range.
            Dim row2 As Vector = m(1, Range.All)
            ' This prints "(2, 4, 6)":
            Console.WriteLine("row1 = {0:F4}", row2)
            Dim column1 As Vector = m(Range.All, 0)
            ' This prints "(1, 2)":
            Console.WriteLine("column1 = {0:F4}", column1)

            ' We can assign to rows and columns, too:
            m(Range.All, 0) = row2
            ' This prints "((3, 3, 5) (5, 4, 6)"
            Console.WriteLine("m = {0:F4}", m)

            ' GetRow and GetColumn provide an alternate mechanism 
            ' for achieving the same result.

            ' Passing just one parameter retrieves the specified row or column:
            row1 = m.GetRow(1)
            ' This prints "(2, 4, 6)":
            Console.WriteLine("row1 = {0:F4}", row1)
            column1 = m.GetColumn(0)
            ' This prints "(1, 2)":
            Console.WriteLine("column1 = {0:F4}", column1)

            ' You can also pass a start and end index:
            row2 = m.GetRow(0, 1, 2)
            ' This prints "(3, 5)":
            Console.WriteLine("row2 = {0:F4}", row2)

            ' We can assign to rows and columns, too, using CopyTo:
            row2.CopyTo(m.GetColumn(0))
            ' This prints "((3, 3, 5) (5, 4, 6)"
            Console.WriteLine("m = {0:F4}", m)

            ' Enumeration

            ' The Rows and Columns methods allow you to enumerate over 
            ' the rows and columns of a matrix.

            ' For example: this calculates the sum of the absolute values
            ' of the components of the matrix m:
            Dim sum As Double = 0
            Dim column As Vector
            For Each column In m.Columns
                sum += column.OneNorm()
            Next

            '
            ' Accessing diagonals
            '

            ' Diagonals are retrieved using the GetDiagonal method:
            Dim mainDiagonal As Vector = m.GetDiagonal()
            ' An optional parameter specifies which diagonal:
            '   n < 0 means subdiagonal
            '   n > 0 means nth superdiagonal:
            Dim superDiagonal As Vector = m.GetDiagonal(1)

            '
            ' Accessing submatrices
            '

            ' Indexed range access

            ' A fourth overload of the indexer property lets you 
            ' extract a part of a matrix. Both parameters are Range 
            ' structures:
            Dim a As Matrix = New GeneralMatrix(10, 10)
            ' Extract the 2nd to the 5th row of m:
            Dim a1 As Matrix = a(New Range(1, 4), Range.All)
            ' Extract the odd columns:
            Dim a2 As Matrix = a(Range.All, New Range(1, 10, 2))
            ' Extract the 4x4 leading submatrix of m:
            Dim a3 As Matrix = a(New Range(0, 3), New Range(0, 3))

            ' You can also assign to submatrices:
            Dim identity5 As Matrix = GeneralMatrix.GetIdentity(5)
            a(New Range(0, 4), New Range(5, 9)) = identity5
            a(New Range(5, 9), New Range(0, 4)) = identity5

            ' The same results can be achieved with the GetSubmatrix method.

            ' Extract the 2nd to the 5th row of m. 
            ' Start and end columns are supplied manually.
            Dim a4 As Matrix = a.GetSubmatrix(1, 4, 0, 9)
            ' Extract the odd columns:
            ' Here we need to supply the transpose parameter.
            Dim a5 As Matrix = a.GetSubmatrix(0, 9, 1, 1, 10, 2, _
             TransposeOperation.None)
            ' Extract the 4x4 leading submatrix of m.
            ' And let's get its transpose, just because we can.
            ' We need to specify the row and column stride:
            Dim a6 As Matrix = a.GetSubmatrix(0, 3, 1, 0, 3, 1, _
                TransposeOperation.Transpose)

            ' You can still assign to submatrices, using the
            ' CopyTo method:
            identity5.CopyTo(a.GetSubmatrix(0, 4, 5, 9))
            identity5.CopyTo(a.GetSubmatrix(5, 9, 0, 4))

            Console.WriteLine("Press Enter key to continue.")
            Console.ReadLine()
        End Sub

    End Module

End Namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -