精华内容
下载资源
问答
  • 用gsl解线性方程 用gsl解非方阵系数矩阵的方程 求非方阵矩阵的逆 GSL QR分解用法
    1. 问题描述:
      实际开发过程中遇到的一个问题axisPt=A\b(matlab表达式),求axisPt.实际上就是求inv(A)*b,但是A不是一个方阵,没有找到非方阵如何求逆,遇到瓶颈。

    2. 解决办法
      以上等式等价于A*axisPt = b,实际是解线性方程组的问题,并且系数矩阵不是方阵

    3. 实现过程

    	// gsl_matrix* matrixA = gsl_matrix_alloc(2*nRow+1, 3);
    	// gsl_matrix* matrixb = gsl_matrix_alloc(2*nRow+1, nCol);
    	// gsl_matrix* axisPt = gsl_matrix_alloc(3, nCol);
    	gsl_vector* x = gsl_vector_alloc(3);
    	gsl_vector*	b = gsl_vector_alloc(2*nRow+1);
    	gsl_vector* residual = gsl_vector_calloc(b->size);
    	gsl_matrix* QR = gsl_matrix_alloc(matrixA->size1, matrixA->size2);
    	gsl_vector* tau = gsl_vector_calloc(min(matrixA->size1, matrixA->size2));
    	
    	// 利用列循环把b的每一列依次当做方程等号右边的结果,依次求得axisPt的每一列值
    	for (int n=0; n<nCol; n++)
    	{
    		int Index = 0;
    		for(int i=0;i<2*nRow+1; i++)
    		{
    			// 把第n列的值赋值给gsl_vector* b--列向量 
    			gsl_vector_set(b,Index,gsl_matrix_get(matrixb,i,n));
    			Index++;
    		}
    		// 二者行数必须相等
    		if (matrixA->size1 != b->size)
    		{
    			return;
    		}
    		// 复制系数矩阵
    		gsl_matrix_memcpy(QR, matrixA);
    		gsl_linalg_QR_decomp(QR, tau);
    		gsl_linalg_QR_lssolve(QR, tau, b, x, residual);
    
    		// 方程的解存储在x中,将每一列得到的解x组合起来得到完整的axisPt 
    		for (int k=0; k<3; k++)
    		{
    			gsl_matrix_set(axisPt , k, n, gsl_vector_get(x,k));
    		}
    	}
    
    	// 其他操作
    	// 对象释放
    	gsl_vector_free(tau);
    	gsl_matrix_free(QR);
    	gsl_vector_free(residual);
    	gsl_vector_free(b);
    	gsl_vector_free(x);
    
    1. 误区
      ①刚开始看到 “axisPt=A\b”,一股脑地想着非方阵矩阵的逆该如何求,陷入了瓶颈。
      ②计算非线性方程求解,一开始用了LU分解(并且资料上有现成的例子),发现LU只能用来解系数矩阵是方阵的方程
      ③当时看了QR分解,被表达式A=QR劝退,心想我也没有要把b分解成Q和R啊,也没接着细细往下看函数说明,实际上这个分解方法是把系数矩阵A分解成QR。正确的方法明晃晃摆在眼前,不静下心深入研究,只知道惶惶不可终日觉得自己没有能力解决这个问题,值得反省。
    展开全文
  • python 非方阵矩阵求解

    千次阅读 2015-11-06 17:00:07
    施工中….求pseudo inverse(伪逆矩阵)import scipy as SPa = [[1, 3], [2, 5], [1, 1]]b = [[1], [8], [13]]#x=19 y=-6#c = SP.linalg.solve(a, b)pi_a = SP.linalg.pinv(a)s = pi_a.dot(b)

    施工中….

    求pseudo inverse(伪逆矩阵)

    import scipy as SP
    
    a = [[1, 3],
         [2, 5],
         [1, 1]]
    
    b = [[1],
         [8],
         [13]]
    
    #x=19 y=-6
    
    #c = SP.linalg.solve(a, b)
    
    pi_a = SP.linalg.pinv(a)
    
    s = pi_a.dot(b)
    展开全文
  • 方阵 矩阵旋转

    2014-06-12 01:08:32
    把输入 的 数字方阵顺时针旋转 90° 。
  • 研究生第一学期,并行计算与分布式系统的课程作业
  • 使用 QR 分解计算任意大小矩阵的行列式。 版本 2,2006 年 11 月。 另请参阅我更新的 Adj。
  • 方阵的伴随矩阵

    2020-02-11 10:05:08
  • 矩阵相乘(方阵

    2019-07-11 22:15:01
    //实现矩阵相乘 for(int i = 0;i < n;i++) { for(int j = 0;j < n;j++) { for(int k = 0;k < n;k++) c[i][j] += a[i][k] * b[k][j]; } 核心思想:矩阵相乘 行、列对应相乘相加...
    • 核心代码
    int c[][] = new int [n][n];
    	
    	//实现矩阵相乘
    	for(int i = 0;i < n;i++) {
    		for(int j = 0;j < n;j++) {
    			for(int k = 0;k < n;k++)
    				c[i][j] += a[i][k] * b[k][j];
    		}
    

    核心思想:矩阵相乘 行、列对应相乘相加。

    • 三层for循环控制a、b两个二维数组(矩阵)的行列变化
    • 重点理解i、j、k变化所控制的行列变化
    展开全文
  • 矩阵转置问题(方阵和非方阵

    千次阅读 2020-01-31 19:36:21
    可以直接输出(转换仿真和非方阵都可) #include using namespace std; int main() { int n,m,i,j; int a[100][100]; cin>>n>>m; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[i][j...
  • 求非方阵的伪逆矩阵

    2020-03-25 22:39:50
    伪逆矩阵主要用于求非方阵的逆。对于矩阵AAA,作SVD分解,有A=UΣVA=U\Sigma VA=UΣV,则它的伪逆为A+=VΣ−1UA^+=V\Sigma^{-1}UA+=VΣ−1U
  • n维方阵求逆矩阵

    2019-01-19 00:39:09
    1。n维方阵m球逆矩阵的代码;数据类型为double; 2。m为原方阵的指针,结果存在result指针的地址段,需要预先分配好result的内存; 3。原矩阵不变;
  • %将方阵A分解为三个矩阵:对角矩阵(D); 严格下三角矩阵(L); 严格上三角矩阵(U) D = 诊断(诊断(A)); L =-tril(A,-1); U = -triu(A,1); a = (D-欧米茄*L); 对于 i=1:N x = a\(((1-omega)*D + omega*U)*x_0) ...
  • CUDA之矩阵乘法——非方阵计算

    千次阅读 2016-05-26 18:12:27
    说明A矩阵为M * N,B矩阵为N * M,求C = A * B;
  • 如何证明非方阵矩阵是否可逆

    千次阅读 2013-08-13 06:10:55
    如何证明非方阵矩阵是否可逆? 一般都是对方阵定义它的逆矩阵,以及研究方阵是否可逆和逆矩阵的求法; 对于非方阵的情况,如:C(m×n),m≠n,通常定义C与其转置矩阵C'的乘积: T=CC'(m阶方阵) 或 T=C'C(n...
  • 方阵转置(NxM) 使用非正方形矩阵转置(NxM)进行的各种实验,包括就地转置。 如果有兴趣,可以在这里进行更深入的分析: : 输入矩阵'A'被定义为以行为主的NxM矩阵(C数组语义,A [N] [M])。 输出矩阵“ B”...
  • 如果矩阵A中m等于n,称为矩阵A为n阶矩阵(或n阶方阵)从左上到右下的对角线为主对角线,从右上到左下的对角线为次对角线行列式在数学中,是一个函数,其定义域为det的矩阵A,取值为一个标...
  • 方阵转置

    千次阅读 2019-10-14 19:51:04
    你不懂得方阵转置哦!!! 解释: 方阵转置就是将每一列依次取出来,然后与每行进行位置交换。 例如:将第一列的[1.5.9.13]与第一行[1,2,3,4]进行位置交换, [2,6,10,13]------转-------->>[5,6,7,8] [3,7,11...
  • MATLAB中求非方阵的广义逆矩阵

    万次阅读 2013-07-25 22:34:16
    如果不是方阵的话,会有个广义逆矩阵(伪逆),matlab里面用pinv()实现。 基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A的转置矩阵A' ...
  • 在Matlab中不用eig()命令求方阵的特征值和特征向量矩阵,并判断其是否可以对角化 #本文仅针对标题所示问题的代码解答,若相关概念不熟,请去资料。 #不要问我为什么放着好好的eig()命令不用,反而去写一堆代码。这得...
  • 转置,求秩,求方阵行列式,求方阵的逆矩阵
  • 定义 方阵函数是普通函数的推广,普通函数自变量是实数或复数,把自变量推广到方阵就是方阵函数。 可以看到方阵函数是通过Taylor展开来定义的,所以要求方阵函数,首先要对函数进行泰勒展开。 ...
  • C++真正初学者的原创小程序...可以计算任意阶元素全部为整数的方阵的逆矩阵(但是阶数大时可能耗时极长),计算结果以分数与一个整元素矩阵相乘的形式显示。由于本人是初学者,未使用图形用户界面。欢迎各位前辈指正。
  • scipy矩阵操作

    2018-11-14 16:54:21
    转载scipy矩阵操作
  • 本文实例讲述了C#判断一个矩阵是否为对称矩阵及反称矩阵的方法。分享给大家供大家参考。具体如下: 1.判断对称矩阵 对任意i和j,有a[i,j]=a[j,i] /// /// 检查一个矩阵是否为对称矩阵 /// /// 矩阵 /// <returns>...
  • 矩阵乘法

    千次阅读 2019-02-16 09:27:22
    矩阵乘法(Matrix multiplication)最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n...
  • X是一个m行n列的矩阵,并不能保证其有逆矩阵,因此X需要乘以X的转置,即X乘以自身的转置矩阵,其结果为一个方阵方阵即行数和列数都为一样,这样便能保证其矩阵X有逆矩阵。 X是一个m行n列的矩阵,X的转置(自身...
  • 我们可以使用np.linalg中的inv和pinv函数来求解矩阵的逆/伪逆。 np.linalg.inv 对于可逆方阵M,我们使用下面这行代码求逆: np.linalg.inv(J(theta)) 示例: import numpy as np M = [ [0.866,-0.5,0], [0.5,0.866...
  • 矩阵论笔记】方阵幂级数

    千次阅读 2020-05-09 13:49:14
    这是一种特殊的矩阵级数,之前矩阵级数中,计算的是下面这种AkA_kAk​,而在方阵幂级数中,计算的是AkA^kAk 对比之前学到的幂级数,ZkZ^kZk和AkA^kAk有什么关系呢? 假设 证明 解决了幂级数的收敛性判定问题:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,209
精华内容 12,883
关键字:

方阵矩阵