- 浏览: 74992 次
- 性别:
- 来自: 北京
文章分类
最新评论
/// 矩阵的乘 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 932数组的索引从零开始。 声明数组 int[] table; 注 ... -
关于static
2010-12-14 17:55 762在类的前面加上static可以直接调用类的方法,而不用再实例化 ... -
C#读、写txt文件
2010-12-14 16:50 1559static void Main(string[] arg ... -
索引器
2010-11-25 16:40 796索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类 ... -
字符串截取函数
2010-11-05 21:42 1077一种使用C#语言的split()函数,返回类型是字符串数组,字 ... -
在类中用 Session& 清空session
2010-11-04 10:10 839在类中用 Session public class Me ... -
命名空间
2010-09-08 10:59 1109命名空间: 一种组织类的机制,例如:我们可以把功能相近的类(如 ... -
委托与事件
2010-09-08 10:16 760提到委托就要想到事件。 关于委托 1)委托是一种类型。但是委 ... -
object
2010-09-08 10:04 857所有类的最高的父类:object object也有成成员方法, ... -
参数(ref,out,params)
2010-07-22 16:09 814参数:类的成员方法中的参数。 值参数:不能改变实参。无关键字 ... -
关于泛型类
2010-07-20 17:31 706泛型类:带有参数的类,这里的参数代表类型。 //定义一个泛 ... -
C#中接口与类与抽象类的区别(转)
2010-07-20 17:14 10301、接口类似于类,但接 ... -
C#中List与IList的区别(转)
2010-07-19 16:33 6704List<T>类:表示可通过索引访问的对象的强类型 ... -
C#中as与is的用法(转)
2010-05-19 16:49 1867一、类型转换 1.任何类型都可以转换为其基类类型,用隐式转换 ...
相关推荐
在计算机科学和数学中,矩阵运算是指对矩阵进行加、减、乘、逆、转置等操作。这些操作是线性代数的基础,广泛应用于机器学习、计算机视觉、数据分析等领域。下面是关于C#实现矩阵加减乘除以及求逆的知识点: 一、...
根据给定文件的信息,我们可以总结出以下几个主要的知识点:矩阵的转置、求秩、求方阵行列式、以及求方阵的逆矩阵。 ### 一、矩阵的转置 矩阵的转置是指将矩阵A的行变为列,列变为行得到的新矩阵。具体来说,如果...
在实际应用中,这个C#源码可能首先会计算雅可比矩阵,然后求其转置,接着使用数值方法(如牛顿法)解逆运动学方程。用户界面可能会显示输入的目标位置,以及计算出的关节角度,还可能有动画模拟显示机器人臂的运动。...
矩阵运算,包括求矩阵的行列式、求逆、转置等操作
在提供的文件"100_矩阵实现加减乘,求逆,转置"中,很可能包含了上述操作的C代码示例,这对于初学者理解和实践这些概念非常有用。通过阅读和分析这些代码,你可以更好地掌握C语言在矩阵运算中的应用,并加深对矩阵...
本文档将详细介绍如何使用C语言实现矩阵的基本运算,包括加法、减法、乘法、转置以及逆矩阵的计算。这些运算在科学计算、图形处理等领域有着广泛的应用。本文档通过具体的代码示例来解释各个操作的具体实现方法。 #...
本文将深入探讨如何使用C#语言来实现矩阵的加减、乘除、转置以及求逆等基本操作。 首先,矩阵是二维数组,由行和列构成,可以用一个大括号{}来表示。在C#中,我们可以创建一个二维数组来表示矩阵。例如,一个2x2的...
以上内容涵盖了矩阵的基本运算,包括输入输出、加法、减法、乘法、转置以及行列式的计算。这些运算在实际应用中非常重要,比如在图像处理、信号分析、机器学习等领域都有着广泛的应用。掌握这些基本运算不仅有助于...
本文将详细讲解使用C语言实现稀疏矩阵的十字链表表示方法,以及相关的矩阵运算,包括矩阵加减乘法、矩阵转置和矩阵项的插入,以及对矩阵行列链表的排序。 1. **稀疏矩阵的概念**: - 稀疏矩阵是指大部分元素为零的...
C#矩阵运算,包括加法,转置,求逆,乘法
在编程领域,矩阵运算是一种常见的数学操作...总之,理解并能正确实现矩阵的加减乘除和转置是任何涉及矩阵运算的编程项目的基础。通过使用C++,我们可以构建高效、灵活的矩阵操作工具,服务于各种科学计算和工程应用。
在本文中,我们将深入探讨如何使用C#编程语言进行矩阵计算,主要涵盖矩阵求逆、加减、乘除以及转置等操作。这些是线性代数中的基本运算,对于理解和应用数学模型至关重要,特别是在图形处理、数据分析和机器学习等...
矩阵运算的加乘转置等,C++语言,Visual Studio 2019编译,
本资料包"矩阵运算的基本功能,包括矩阵加减、乘除、转置、求逆.zip"显然是为了讲解如何在C#环境下进行这些基本的矩阵操作。以下将详细阐述这些知识点。 1. **矩阵加减**:在矩阵加法中,两个矩阵必须具有相同的...
### c语言实现稀疏矩阵的加减乘与转置 #### 概述 在计算机科学领域,矩阵运算是一项基础而重要的任务。对于密集矩阵,直接使用二维数组进行存储和计算是常见且有效的做法。然而,当矩阵中大量元素为零时(即稀疏...
在这个名为"CUDA中矩阵加减运算以及转置运算"的项目中,我们将深入探讨如何在CUDA环境下进行矩阵的加减和转置操作。 首先,CUDA编程主要涉及两个关键组件:主机代码(Host Code)和设备代码(Device Code)。主机...
C++ QT 矩阵运算器是一款基于C++编程语言和QT图形用户界面库开发的矩阵计算工具,它为用户提供了一个直观且高效的环境来执行矩阵的加、减、乘及转置等基本操作。在这款软件中,矩阵的存储采用了稀疏矩阵的概念,以...
在计算机科学中,稀疏矩阵...通过以上描述,我们可以看出这个压缩包文件提供了关于稀疏矩阵连续存储空间表示的实现,涵盖了矩阵的基本运算,如加减、转置、插入及排序,适合学习C语言和矩阵操作的初学者进行实践。
非常好,有助于初学者学习。代码都是自己写的哦,大家多多指教。