精华内容
参与话题
问答
  • 矩阵乘法 C#

    千次阅读 2012-03-19 10:56:25
    这里使用最传统的方法:  矩阵A的行 乘以矩阵B的列 来计算矩阵的乘法的,所以比较简单 using System; using System.Collections.Generic;...namespace 矩阵乘法 { class Program { static void

    这里使用最传统的方法:  

     矩阵A的行 乘以矩阵B的列 来计算矩阵的乘法的,所以比较简单


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 矩阵乘法
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[,] a = { { 1, 2, 3 }, { 4, 5, 6 } };
                int[,] b = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
                int[,] c = new int[2, 2];
                matrixMultipy(a, b, c, 2, 3, 3, 2);
                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        Console.Write("{0}   ", c[i, j]);
                        if ((j + 1) % 2 == 0)
                        {
                            Console.WriteLine();
                        }
                    }
                }
    
                Console.Read();
            }
    
            /// <summary>
            /// 矩阵的乘法
            /// </summary>
            /// <param name="a">第一个矩阵</param>
            /// <param name="b">第二个矩阵</param>
            /// <param name="c">算出来的矩阵</param>
            /// <param name="ra">第一个的行数</param>
            /// <param name="ca">第一个的列数</param>
            /// <param name="rb">第二个的行数</param>
            /// <param name="cb">第二个的列数</param>
            static void matrixMultipy(int[,] a, int[,] b, int[,] c, int ra, int ca, int rb, int cb)
            {
                if (ca != rb)
                {
                    throw new Exception("行与列要相等");
                }
    
                for (int i = 0; i < ra; i++)
                {
                    for (int j = 0; j < cb; j++)
                    {
                        int sum = a[i, 0] * b[0, j];
                        for (int k = 1; k < ca; k++)
                        {
                            sum += a[i, k] * b[k, j];
                        }
                        c[i, j] = sum;
                    }
                }
            }
        }
    }
    


    展开全文
  • 主要介绍了C#实现矩阵乘法的方法,实例分析了通过C#数组构造矩阵及实现矩阵乘法的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • C#矩阵乘法

    2018-11-27 22:12:02
    ///<summary> ///<summary> ///矩阵乘法 ///</summary> ///<paramname=”matrix1″>矩阵1</param> ///<paramname=”ma...
    /// <summary>   
            /// <summary>   
            /// 矩阵乘法   
            /// </summary>   
            /// <param name=”matrix1″>矩阵1</param>   
            /// <param name=”matrix2″>矩阵2</param>   
            /// <returns>积</returns>   
            private static double[][] MatrixMult(double[][] matrix1, double[][] matrix2)  
            {  
                //matrix1是m*n矩阵,matrix2是n*p矩阵,则result是m*p矩阵   
                int m = matrix1.Length, n = matrix2.Length, p = matrix2[0].Length;  
                double[][] result = new double[m][];  
                for (int i = 0; i < result.Length; i++)  
                {  
                    result[i] = new double[p];  
                }  
                //矩阵乘法:c[i,j]=Sigma(k=1→n,a[i,k]*b[k,j])   
                for (int i = 0; i < m; i++)  
                {  
                    for (int j = 0; j < p; j++)  
                    {  
                        //对乘加法则   
                        for (int k = 0; k < n; k++)  
                        {  
                            result[i][j] += (matrix1[i][k] * matrix2[k][j]);  
                        }  
                    }  
                }  
                return result;  
            }  
    

     

     
    /// <summary>   
            /// 打印矩阵   
            /// </summary>   
            /// <param name=”matrix”>待打印矩阵</param>   
            private static void PrintMatrix(double[][] matrix)  
            {  
                for (int i = 0; i < matrix.Length; i++)  
                {  
                    for (int j = 0; j < matrix[i].Length; j++)  
                    {  
                        Console.Write(matrix[i][j] + “\t”);  
                    }  
                    Console.WriteLine();  
                }  
            }  

     

    展开全文
  • C# 矩阵乘法实现

    2013-11-13 13:07:00
    矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法。矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它...

    矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法。矩阵,是线性代数中的基本概念之一。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。矩阵乘法看起来很奇怪,但实际上非常有用,应用也十分广泛。

    只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×n的矩阵a(m,n)左乘一个n×p的矩阵b(n,p),会得到一个m×p的矩阵c(m,p),满足矩阵乘法满足结合律,但不满足交换律 一般的矩乘要结合快速幂才有效果。(基本上所有矩阵乘法都要用到快速幂的)   在计算机中,一个矩阵实际上就是一个二维数组。一个n行m列的矩阵与一个m行p列的矩阵可以相乘,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数为第一个矩阵第i行上的m个数与第二个矩阵第j列上的m个数对应相乘后所得的m个乘积之和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。

    其中,结果矩阵的那个4(结果矩阵中第二(i)行第二(j)列)

    =

    2(第一个矩阵第二(i)行第一列)*2(第二个矩阵中第一行第二(j)列)   +   0(第一个矩阵第二(i)行第二列)*1(第二个矩阵中第二行第二(j)列)

     

            static void Main(string[] args)
            {
    
    
                //定义三个数组,分别存储矩阵A,B,C
                float[,] a = new float[100,100];
                float[,] b = new float[100,100];
                float[,] c = new float[100,100];
    
                int n, m, mB, p;
    
                float[,] s = new float[100,100];
                //矩阵A行数m1,列数n1
                n = 2;
                m = 3;
                //矩阵B行数m2,列数n2
                mB = 3;
                p = 2;
    
                if (m != mB)
                {
                    //判断是否可以相乘
                    Console.WriteLine("不可以相乘!!!");
                    return;
                }
    
                a[1, 1] = 1;
                a[1, 2] = 2;
                a[1, 3] = 4;
    
                a[2, 1] = 7;
                a[2, 2] = 9;
                a[2, 3] = 6;
    
    
                b[1, 1] = 1;
                b[1, 2] = 7;
    
                b[2, 1] = 2;
                b[2, 2] = 9;
    
                b[3, 1] = 4;
                b[3, 2] = 6;
    
                Console.WriteLine("矩阵A:\n"); 
                for (var i = 1; i <= n; i++)
                {
                    for (var j = 1; j <= m; j++)
    
                    {
                        Console.Write("{0}-", a[i, j]);
                        if (j == m)Console.Write("\n");
                    }
                }
    
                Console.WriteLine("矩阵B:\n"); 
                for (var i = 1; i <= m; i++)
                {
                    for (var j = 1; j <= p; j++)
                    {
                        Console.Write("{0}-",b[i, j]);
                        if (j == p)Console.Write("\n");
                    }
    
                }
                Console.WriteLine("矩阵C=A*B:\n");
                for (var i = 1; i <= n; i++)
                {
                    for (var j = 1; j <= p; j++)
                    {
                        for (var k = 1; k <= m; k++)
                        {
    
                            s[i,j] = s[i,j] + a[i,k]*b[k,j];
                        }
                        c[i,j] = s[i,j]; 
                        Console.Write("{0}-",c[i,j]);
                        if (j == p) Console.Write("\n");
                    }
                }
    
                Console.Read();
            }

     

    转载于:https://www.cnblogs.com/blackice/p/3421199.html

    展开全文
  • 利用随机数初始化数组,并计算不同量数据所消耗的时间
    利用随机数初始化数组,并计算不同量数据所消耗的时间using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BigArray{ class Program { static void Main(string[] args) { DateTime d1 = System.DateTime.Now; const long M = 500;
     const long N = 500; long [,] A = new long [500 , 500]; long[,] B = new long[500, 500]; var listA = new List<List> (); var listB = new List<List>(); var listC = new List<List>(); Random random = new Random(); var itemA = new List(); var itemB = new List();
     var itemC = new List(); for (long i = 0; i < M; i++) { for (long j = 0; j < N; j++) { int random_x = random.Next(0, 10); A[i, j] = random_x; int random_y = random.Next(0, 10); B[i, j] = random_y; // itemC.Add(random_y*random_x ); } /* listA.Add(itemA); listB.Add(itemB);
     listC.Add(itemC); */ } Multiply multiply = new Multiply(); long [,]MM= multiply.MatrixMultiply (A, B); DateTime d2 = System.DateTime.Now; TimeSpan ts = d2.Subtract(d1); Console.WriteLine("program'time_spend is:{0}ms", ts.TotalMilliseconds); Console.ReadLine();
     } public class Multiply { public long[,] MatrixMultiply(long[,] A, long[,] B) { int rowA = A.GetLength(0); int colA = A.GetLength(1); int rowB = B.GetLength(0); int colB = B.GetLength(1); long[,] C = new long[rowA, colB]; try { for (long i = 0; i < rowA; i++)
     { for (long j = 0; j < colB; j++) { C[i, j] = 0; for (long k = 0; k < colA; k++) { C[i, j] = A[i, k] * B[k, j]; } } } return C; } catch { System.Exception exp = new Exception("前者矩阵列数不等于后者矩阵行数,不能相乘!"); throw exp; } } } }}
    
    展开全文
  • 矩阵乘法计算脚本代码(C#

    千次阅读 2016-11-28 17:59:52
    代码: using System; using System.Collections.Generic; using System.Windows.Forms; class Script { public class Matrix { public List> array = null; public int Row {
  • //三元组数据结构表示的矩阵相乘 class Program { //矩阵的非零元素的表示 struct Triple { public int i, j;//该非零元素位于矩阵的行号和列号 public int element;//该非零元素的值 } //矩阵的表示 ...
  • 用数组实现矩阵乘法

    2019-09-27 23:50:33
    刚开始学c#,下面列出用数组实现矩阵乘法碰到的问题。 1、如何运行c#程序 1)新建一个控制台应用程序项目 2)在该项目上右键新建类 3)在类中添加逻辑代码 示例: using System; using System....
  • c#实现二维矩阵的输入与矩阵加法乘法转置三种运算 by wfmin using System; namespace 矩阵运算 { class Program { static void Main(string[] args) ... Console.WriteLine("矩阵加法输入1,矩阵乘法输入2,矩阵...
  • 按照举例代码内容如下: 矩阵乘法是搞笑算法,把一维递归优化到logn,求路径方案等. using System; using System.Collections.Generic; using System.Co...
  • 主要介绍了C#实现矩阵加法、取负、数乘、乘法的方法,涉及C#针对矩阵的数学运算相关实现技巧,需要的朋友可以参考下
  • /////////问题:实现两个N*N矩阵乘法矩阵必须由一维数组表示//// /////////////////////////////////////////////////////////////// ////////未使用递归版本,相关异常未写入,只完成实现。 /* * 理
  • 矩阵乘法的动态规划算法,使用C#实现 50X10,10X40,40X30,30X5 这是示例用的测试数据,输入示例数据可以得到结果
  • C#矩阵相乘

    千次阅读 2018-09-20 15:46:49
    /// 矩阵乘法 /// &lt;param name="matrix1"&gt;矩阵1&lt;/param&gt; /// &lt;param name="matrix2"&gt;矩阵2&lt;/param&gt; /// &lt;...
  • 1)判断一个二维数组是否为矩阵:如果每行的列数都相等则是矩阵,没有元素的二维数组是矩阵 /// <summary> /// 判断一个二维数组是否为矩阵 /// </summary> /// <param name="matrix">二维...
  • 辛苦找到的非常全面的C#矩阵运算的代码,附有源码,接口说明书,和DLL文件,绝对好东西! 这个得珍藏!
  • C#矩阵计算类代码

    2018-06-07 00:04:25
    该文件为C#矩阵计算了类的封装代码,可以实现矩阵的加法、减法、乘法、转置以及矩阵求逆等各种运算。
  • 定义了一个矩阵的储存方法CMatrix 定义了一个矩阵的预算方法CMatrix_...3.矩阵乘法 4.矩阵行列式 5.矩阵转置 6.矩阵的伴随矩阵 7.矩阵的逆(只限于3x3) 8.向量的单位化 此代码为本人做3D建模(空间旋转)时用的基础代码
  • 本程序是在控制台下实现2行3列矩阵与3行4列矩阵乘法,两矩阵都可自己输入或者直接在代码里定义。
  • 基于C#矩阵

    千次阅读 2018-12-30 20:27:35
    本人(ID:蒸发杰作)旗下所有文章均放弃版权,请任意使用。...特别是,它完全重载了所有矩阵的运算符,矩阵的加减乘法,转置,求逆等等,都实现得非常好。 例如下边这个官网的实例代码。 问题: 代码: //...
  • c#编写的矩阵类,可进行矩阵的各项科学计算

    千次下载 热门讨论 2009-03-08 14:47:02
    这是一个用c#语言写成的矩阵类,可以完成矩阵的各种准确的数学计算,如:矩阵的加减乘除、转置、逆运算、 复矩阵乘法、求行列式值、 求矩阵秩、一般实矩阵的奇异值分解、求广义逆、约化对称矩阵为对称三对角阵、实...
  • 我们就不需要以递推方式逐个计算二维数组中元素, 而采用备忘录方法: MemorizedMatrixChainMain.c#include stdio.h>#include limits.h>#define LENGTH 6void MemorizedMatrixChain(int p[],
  • C#中模拟大数乘法

    2012-03-06 23:58:00
    今天见一道算法题,要求实现两个不限长度的正整数的乘法。感觉不难,便顺手做了一下。我这里的实现比较简单,基本上就是模拟算术运算,大概分成如下几步 125x11------- 125125--------1375 将乘数每位与乘数相乘...
  • using m_type = System.Single;...//方矩阵乘法运算 m_type[,] MatMultiply(m_type[,] A, m_type[,] B) { m_type[,] D = new m_type[A.GetLength(0), A.GetLength(1)]; for (int i = 0; i < dime...

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

矩阵乘法c#

c# 订阅