C语言实现矩阵求逆(四阶)

这篇具有很好参考价值的文章主要介绍了C语言实现矩阵求逆(四阶)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 伴随矩阵和代数余子式法
  2. 高斯消元法
  3. LU分解

前言: 本文讲述伴随矩阵求逆,其余方法有时间会加以整理。
参考:
代码实现矩阵求逆的三种方式
矩阵的行列式

1. 伴随矩阵和代数余子式法

1.1 原理

求一个四阶矩阵的逆矩阵要多久,C语言,c语言,矩阵,算法
求一个四阶矩阵的逆矩阵要多久,C语言,c语言,矩阵,算法文章来源地址https://www.toymoban.com/news/detail-717735.html

1.2 代码

#include <stdio.h>
#include <math.h>
typedef unsigned char uint8;

//全局变量定义
uint8 MatrixSize=4;
double AdjMatrix[4][4] = { 0 };
double detA4 = 0;
//函数声明
double GetdetA3(double matrix[3][3]);
void Adj_matrix4(double* matrix);


int  main()
{
	printf("Hello!");
	double matrixtest[4][4] = {{6,5,-9,6},{2,0,-4,8},{-1,4,2,2},{2,-10,0,-10}};
	double det = 0;
	double InvMtrx[4][4] = { 0 };
	Adj_matrix4(&matrixtest[0][0]);
	if (detA4 == 0) return;
	else {
		for (uint8 i = 0; i < 4; i++) {
			for (uint8 j = 0; j < 4; j++) {
				InvMtrx[i][j] = AdjMatrix[i][j] / detA4;
			}
		}
	}
	return 0;
}
//MatrixSize;	MatrixSize = sizeof matrix / sizeof matrix[0];
double GetdetA3(double matrix[3][3])
{
	double detA3 = 0;
	detA3 = matrix[0][0] * matrix[1][1] * matrix[2][2] + matrix[0][1] * matrix[1][2] * matrix[2][0] + matrix[0][2] * matrix[1][0] * matrix[2][1]
		- matrix[0][2] * matrix[1][1] * matrix[2][0] - matrix[0][1] * matrix[1][0] * matrix[2][2] - matrix[0][0] * matrix[1][2] * matrix[2][1];
	return detA3;
}

//四阶矩阵的伴随矩阵
void Adj_matrix4(double *matrix){
	double tmp[3][3] = { {0} ,{0} ,{0} };
	for(uint8 row = 0; row < 4; row++){
		for (uint8 colm = 0; colm < 4; colm++){
			//求第row、colm余子式矩阵
			uint8 k=0, p = 0;
			for (uint8 i = 0; i < 3;i++ ) {
				if (i == colm) p++;
				for (uint8 j = 0;j < 3; j++ ) {
					if (j == row) k++;
					tmp[i][j] = *(matrix +k+4*p+j);
				}
				k = 0;
				p++;
			}
			//求余子式矩阵行列式
			double C_0colm = GetdetA3(tmp);
			//求出相应的代数余子式
			AdjMatrix[row][colm] = pow(-1, row + colm) * C_0colm;
			if (row==0) detA4 = detA4 + (* (matrix + row + colm * 4))* AdjMatrix[row][colm];
		}
	}
}

到了这里,关于C语言实现矩阵求逆(四阶)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言矩阵、向量操作(矩阵乘法,向量内积、外积(叉乘),矩阵转置,矩阵的逆)

    创建两个四维矩阵 A 与 B,A 按列填充,B 按行填充 : 创建两个 n 维向量 x 和 y : 使用 t(矩阵、向量名) 即可: 输出如下: 使用 %*% 符号即可: 输出如下: 在R语言中,两个矩阵、向量的内积并不只是简单的 * 号就完事了,而是有以下两种求法: 或者 其结果如下: (注意区分

    2024年02月12日
    浏览(32)
  • C语言——利用矩阵LU分解法求逆、行列式

    本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。 LU分解法与高斯法求逆一样,可以进行较高维数的矩阵运算(可计算万维及以上,但是精度不能保证,并且占有内存大,高维矩阵需要进行分块

    2024年02月03日
    浏览(43)
  • C语言数据结构课设:矩阵的运算(转置.求和.求差.矩阵相乘.求逆.数乘),文件读取矩阵

      #include stdio.h #include string.h #includestdlib.h #includemath.h // 定义一个结构体类型,表示一个矩阵 typedef struct matrix {     int nrow; // 矩阵的行数     int ncol; // 矩阵的列数     double data[10][10]; // 矩阵的数据,最大为 10 x 10 } matrix; // 定义一个函数,用于显示一个矩阵的内容  void dis

    2024年03月27日
    浏览(55)
  • 通过C#实现矩阵求逆-简单版

    网上大部分C#实现矩阵求逆都比较复杂,现在在这里分享一种很好理解的矩阵求逆方法,而且可以适用于任何形式的可逆矩阵求逆,但是肯定运行效率不如其它的算法,正所谓鱼和熊掌不可兼得。 我们采用的是通过单位矩阵变换的这种方法来实现的,话不多说,下面解释实现

    2024年02月09日
    浏览(35)
  • 【SIMULINK】simulink实现信号矩阵整合、求逆、转置、分解、向量矩阵相乘(非matlab)

    simulink实现信号矩阵,并实现分解 simulink实现信号矩阵求逆 simulink实现信号矩阵转置 simulink矩阵向量相乘

    2024年02月11日
    浏览(41)
  • 基于FPGA的7x7矩阵求逆Verilog实现 —— 解决矩阵运算难题

    基于FPGA的7x7矩阵求逆Verilog实现 —— 解决矩阵运算难题 在数字信号处理和通信领域,矩阵计算是必不可少的一项技术。矩阵求逆是其中重要的一环,然而商用软件求解相对缓慢并且无法满足实时性需求。因此,在FPGA上实现矩阵求逆成为了一个重要课题。本文将介绍基于FPG

    2024年01月21日
    浏览(53)
  • C语言:写一个函数,实现3*3矩阵的转置(指针)

    分析:     在主函数 main 中,定义一个 3x3 的整型数组 a,并定义一个指向整型数组的指针 p。然后通过循环结构和 scanf 函数,从标准输入中读取用户输入的 3x3 矩阵的值,并存储到数组 a 中。     接下来,调用 move 函数,传递给它整型数组 a 的地址,即 a 数组的首地址。

    2024年02月05日
    浏览(45)
  • 分块矩阵的逆

    分块矩阵怎么求逆? - 知乎 四分块矩阵求逆是有通式的(参见分块矩阵求逆公式)下面是一些分块矩阵求逆公式:另可参考Block matrix o… https://www.zhihu.com/question/47760591 Matrix inversion identities - 知乎 Recently I reviewed some tricks in obtaining the inversion of the matrices. An efficient technique to

    2024年02月06日
    浏览(35)
  • 矩阵 的逆、 迹、 秩

    矩阵的逆有是三种方法可以求 1、系数待定法:  2、求伴随矩阵求逆    3、通过求增广矩阵求出逆  什么是矩阵的迹 矩阵的迹是特征值的加和,也即矩阵A的主对角线元素的总和。 案例 什么是矩阵的秩 设 AA 为 mtimes nm×n 矩阵。若 AA 至少有一个 rr 阶非零子式,而其所

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包