- 浏览: 72977 次
- 性别:
- 来自: 北京
文章分类
最新评论
/// 矩阵的乘 public bool MatrixMultiply(double[,] a, double[,] b, ref double[,] c) { if (a.GetLength(1) != b.GetLength(0)) return false; if (a.GetLength(0) != c.GetLength(0) || b.GetLength(1) != c.GetLength(1)) return false; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < b.GetLength(1); j++) { c[i, j] = 0; for (int k = 0; k < b.GetLength(0); k++) { c[i, j] += a[i, k] * b[k, j]; } } } return true; } /// 矩阵的加 public bool MatrixAdd(double[,] a, double[,] b, ref double[,] c) { if (a.GetLength(0) != b.GetLength(0) || a.GetLength(1) != b.GetLength(1) || a.GetLength(0) != c.GetLength(0) || a.GetLength(1) != c.GetLength(1)) return false; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { c[i, j] = a[i, j] + b[i, j]; } } return true; } /// 矩阵的减 public bool MatrixSubtration(double[,] a, double[,] b, ref double[,] c) { if (a.GetLength(0) != b.GetLength(0) || a.GetLength(1) != b.GetLength(1) || a.GetLength(0) != c.GetLength(0) || a.GetLength(1) != c.GetLength(1)) return false; for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(1); j++) { c[i, j] = a[i, j] - b[i, j]; } } return true; } /// 矩阵的行列式的值 public double MatrixSurplus(double[,] a) { int i, j, k, p, r, m, n; m = a.GetLength(0); n = a.GetLength(1); double X, temp = 1, temp1 = 1, s = 0,s1 = 0; if(n == 2) { for (i = 0; i < m; i++) for (j = 0; j < n; j++) if ((i + j) % 2 > 0) temp1 *= a[i, j]; else temp *= a[i, j]; X=temp-temp1; } else { for (k = 0; k < n; k++) { for (i = 0, j = k; i < m && j < n; i++, j++) temp *= a[i, j]; if (m - i > 0) { for (p = m - i, r = m - 1; p > 0; p--, r--) temp *= a[r, p - 1]; } s += temp; temp = 1; } for (k = n - 1; k >= 0; k--) { for (i = 0, j = k; i < m && j >= 0; i++, j--) temp1 *= a[i, j]; if (m - i > 0) { for (p = m - 1, r = i; r < m; p--, r++) temp1 *= a[r, p]; } s1 += temp1; temp1 = 1; } X = s - s1; } return X; } /// 矩阵的转置 public bool MatrixInver(double[,] a, ref double[,] b) { if (a.GetLength(0) != b.GetLength(1) || a.GetLength(1) != b.GetLength(0)) return false; for (int i = 0; i < a.GetLength(1); i++) for (int j = 0; j < a.GetLength(0); j++) b[i, j] = a[j, i]; return true; } /// 矩阵的逆 public bool MatrixOpp(double[,] a, ref double[,] b) { double X = MatrixSurplus(a); if (X == 0) return false; X = 1 / X; double[,] B = new double[a.GetLength(0), a.GetLength(1)]; double[,] SP = new double[a.GetLength(0), a.GetLength(1)]; double[,] AB = new double[a.GetLength(0), a.GetLength(1)]; for (int i = 0; i < a.GetLength(0); i++) for (int j = 0; j < a.GetLength(1); j++) { for (int m = 0; m < a.GetLength(0); m++) for (int n = 0; n < a.GetLength(1); n++) B[m, n] = a[m, n]; { for (int x = 0; x < a.GetLength(1); x++) B[i, x] = 0; for (int y = 0; y < a.GetLength(0); y++) B[y, j] = 0; B[i, j] = 1; SP[i, j] = MatrixSurplus(B); AB[i, j] = X * SP[i, j]; } } MatrixInver(AB, ref b); return true; }
转自:http://young.xh.blog.163.com/blog/static/956253200761310247675/
该博客值得学习
发表评论
-
C#数组
2010-12-15 14:29 899数组的索引从零开始。 声明数组 int[] table; 注 ... -
关于static
2010-12-14 17:55 710在类的前面加上static可以直接调用类的方法,而不用再实例化 ... -
C#读、写txt文件
2010-12-14 16:50 1507static void Main(string[] arg ... -
索引器
2010-11-25 16:40 753索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类 ... -
字符串截取函数
2010-11-05 21:42 995一种使用C#语言的split()函数,返回类型是字符串数组,字 ... -
在类中用 Session& 清空session
2010-11-04 10:10 810在类中用 Session public class Me ... -
命名空间
2010-09-08 10:59 1070命名空间: 一种组织类的机制,例如:我们可以把功能相近的类(如 ... -
委托与事件
2010-09-08 10:16 724提到委托就要想到事件。 关于委托 1)委托是一种类型。但是委 ... -
object
2010-09-08 10:04 825所有类的最高的父类:object object也有成成员方法, ... -
参数(ref,out,params)
2010-07-22 16:09 779参数:类的成员方法中的参数。 值参数:不能改变实参。无关键字 ... -
关于泛型类
2010-07-20 17:31 677泛型类:带有参数的类,这里的参数代表类型。 //定义一个泛 ... -
C#中接口与类与抽象类的区别(转)
2010-07-20 17:14 9861、接口类似于类,但接 ... -
C#中List与IList的区别(转)
2010-07-19 16:33 6679List<T>类:表示可通过索引访问的对象的强类型 ... -
C#中as与is的用法(转)
2010-05-19 16:49 1825一、类型转换 1.任何类型都可以转换为其基类类型,用隐式转换 ...
相关推荐
矩阵的各种算法,包括逆和转置的运算,还有加,减,乘,行列式的值等。常见的运算。
矩阵运算,包括求矩阵的行列式、求逆、转置等操作
稀疏矩阵的十字链表表示方法:矩阵加减乘法运算、矩阵转置运算、矩阵项的插入、矩阵行列链表的排序
用雅可比矩阵转置的方法实现了逆运动学问题,源码是C#的.可以演示。
此程序是用C语言编写矩阵函数包(矩阵的加,减,乘,转置矩阵,逆矩阵),是一个完整的程序,复制后可以直接运行的。
C#矩阵运算,包括加法,转置,求逆,乘法
转置,求秩,求方阵行列式,求方阵的逆矩阵
两个矩阵的加减乘除运算以及矩阵转置,计算行列式等操作。VS2005下编译通过。
矩阵运算的加乘转置等,C++语言,Visual Studio 2019编译,
VC6.0编译。详细注释。稀疏矩阵的连续存储空间表示:矩阵加减乘法运算、矩阵转置运算、矩阵项的插入、矩阵行列链表的排序
本程序是基于C#语言开发的矩阵计算程序,其中包括了矩阵的求逆运算、加减乘除运算、转置运算等,代码注释详细,算法经典,尤其适合初学者
C#实现矩阵运算(包括矩阵的加减乘除转置求逆等)
用三元组存储稀疏矩阵,编写函数进行稀疏矩阵的基本运算
非常好,有助于初学者学习。代码都是自己写的哦,大家多多指教。
c++代码 矩阵行列式,转置,乘积,求逆 高斯约旦法,行列式法求解逆矩阵 一部分自己写的
本代码实现CUDA中矩阵的加减以及转置的运算 (总共2个CPP 1个H 1个CU 1个CUH文件)
初学C语言者学习矩阵
java实现矩阵的加-减-乘-转置运算.docx
用C#实现了矩阵的相加、相减、相乘、求逆、转置等功能!希望能帮到大家!