• 大小: 98KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C#
  • 标签: c#  矩阵  

资源简介

这是一个用c#语言写成的矩阵类,可以完成矩阵的各种准确的数学计算,如:矩阵的加减乘除、转置、逆运算、 复矩阵的乘法、求行列式值、 求矩阵秩、一般实矩阵的奇异值分解、求广义逆、约化对称矩阵为对称三对角阵、实对称三对角阵的全部特征值与特征向量的计算、求赫申伯格矩阵全部特征值、求实对称矩阵特征值与特征向量等.可以将其做成dll用到其他的环境下。填补了.net中没有矩阵的空白,是你进行科学计算不可或缺的插件之一。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Text;

namespace Matrix
{
    public class Matrix
    {
        private int numColumns = 0; // 矩阵列数
        private int numRows = 0; // 矩阵行数
        private double eps = 0.0; // 缺省精度
        private double[] elements = null; // 矩阵数据缓冲区

        /**
         * 属性: 矩阵列数
         */
        public int Columns
        {
            get
            {
                return numColumns;
            }
        }

        /**
         * 属性: 矩阵行数
         */
        public int Rows
        {
            get
            {
                return numRows;
            }
        }

        /**
         * 索引器: 访问矩阵元素
         * @param row - 元素的行
         * @param col - 元素的列
         */
        public double this[int row int col]
        {
            get
            {
                return elements[col + row * numColumns];
            }
            set
            {
                elements[col + row * numColumns] = value;
            }
        }

        /**
         * 属性: Eps
         */
        public double Eps
        {
            get
            {
                return eps;
            }
            set
            {
                eps = value;
            }
        }

        /**
         * 基本构造函数
         */
        public Matrix()
        {
            numColumns = 1;
            numRows = 1;
            Init(numRows numColumns);
        }

        /**
         * 指定行列构造函数
         * 
         * @param nRows - 指定的矩阵行数
         * @param nCols - 指定的矩阵列数
         */
        public Matrix(int nRows int nCols)
        {
            numRows = nRows;
            numColumns = nCols;
            Init(numRows numColumns);
        }

        /**
         * 指定值构造函数
         * 
         * @param value - 二维数组,存储矩阵各元素的值
         */
        public Matrix(double[] value)
        {
            numRows = value.GetLength(0);
            numColumns = value.GetLength(1);
            double[] data = new double[numRows * numColumns];
            int k = 0;
            for (int i = 0; i < numRows; ++i)
            {
                for (int j = 0; j < numColumns; ++j)
                {
                    data[k++] = value[i j];
                }
            }
            Init(numRows numColumns);
            SetData(data);
        }

        /**
         * 指定值构造函数
         * 
         * @param nRows - 指定的矩阵行数
         * @param nCols - 指定的矩阵列数
         * @param value - 一维数组,长度为nRows*nCols,存储矩阵各元素的值
         */
        public Matrix(int nRows int nCols double[] value)
        {
            numRows = nRows;
            numColumns = nCols;
            Init(numRows numColumns);
            SetData(value);
        }

        /**
         * 方阵构造函数
         * 
         * @param nSize - 方阵行列数
         */
        public Matrix(int nSize)
        {
            numRows = nSize;

评论

共有 条评论