C语言计算行列式以及代数余子式的函数

#include<stdio.h>
#define N 50
double algebraic_cofactor(double P[N][N],int m,int a,int b);
double determinant(double P[N][N],int m);void main()
{double P[N][N];//待求矩阵int m,a,b;
}//求代数余子式;m为阶数;a、b分别为元素所在的行与列
double algebraic_cofactor(double P[N][N],int m,int a,int b)
{   int i,j,x,z;double sum;if(m<2) printf("输入错误,矩阵小于2阶");else if(m==2) sum=P[m-a][m-b];else{double Q[N][N]={0};x=0;for(i=0;i<m;i++)//创造一个m-1阶的矩阵(除去所求元素所在的行和列){if(i==a-1) continue;z=0;for(j=0;j<m;j++){if(j==b-1) continue;Q[x][z]=P[i][j];z++;}x++;}sum=determinant(Q,m-1);//求行列式}if((a+b)%2!=0) sum*=-1;return sum;
}//求行列式;m为阶数
double determinant(double P[N][N],int m)
{int k;double sum=0;for(k=0;k<m;k++){if(P[0][k]==0) continue;else sum+=algebraic_cofactor(P,m,1,k+1)*P[0][k];//求代数余子式}return sum;
}

主要思路是通过代数余子式函数与行列式函数相互调用求解,由此可拓展出矩阵求逆的函数:

void main()
{double P[N][N];//待求矩阵double Q[N][N];//待求逆矩阵int m,a,b;
}//求逆矩阵;m为阶数
void inverse_matrix(double P[N][N],double Q[N][N],int m)
{int i,j,k,l;double A,B;A=determinant(P,m);if(A!=0) {for(i=0;i<m;i++)for(j=0;j<m;j++)Q[i][j]=algebraic_cofactor(P,m,i+1,j+1);//计算伴随矩阵B=1/A;matrix_X_num(Q,B,m,m);transpose(Q);//矩阵转置}else printf("错误:矩阵不可逆");
}//矩阵转置
void transpose(double P[N][N])
{double T[N][N];int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)T[j][i]=B[i][j];for(i=0;i<N;i++)for(j=0;j<N;j++)B[i][j]=T[i][j];
}

C语言计算行列式以及代数余子式的函数相关推荐

  1. R语言计算加权平均值:weighted.mean函数计算加权平均值、matrixStats包的weightedMean函数计算加权平均值、SDMTools包的wt.mean函数计算加权平均值

    R语言计算加权平均值:weighted.mean函数计算加权平均值.matrixStats包的weightedMean函数计算加权平均值.SDMTools包的wt.mean函数计算加权平均值 目录

  2. R语言计算带有绝对值符号的函数偏导并输出偏导结果

    R语言计算带有绝对值符号的函数偏导并输出导数结果 求偏导后的导数表达式网上已有众多教程,这里主要对导数结果的输出及含有绝对值符号的的函数偏导运算进行方法阐述 对函数f=x*|y|*(z-x)求对x.y ...

  3. C语言实现行列式和代数余子式

    /*创建行列式(人工输入数据),输出该行列式和代数余子式,并输出其值*/ /*2006-1-7  梁见斌*/ #include <stdio.h> #include <stdlib. ...

  4. 复化梯形c语言计算定积分,第六章 函数和宏定义实验(2)

    1.利用复化梯形公式计算定积分 2.计算Ackerman函数 3.编写计算x的y次幂的递归函数getpower(int x,int y),并在主程序中实现输入输出 4.编写计算学生年龄的递归函数 5. ...

  5. C语言 计算n的阶乘(函数 递归)

    第一种:用循环直接算 #include <stdio.h> int main() {int n,i,a=1;scanf("%d",&n);for (i = 1; ...

  6. c语言一维数组求平均成绩,C语言 计算一维数组平均值(函数).doc

    酒谆亥布福墅瞒筹崖锈促担粟靡鳖啤酒痘结挂震锈允沤施磕羹磋蝴禽埔鼓逻去晚茂唇魏纤垂巢愈敛下磺蹦迟秩巧苟盐骑榷忽桂蛛牙婆杉蘸痈瘟汐惭嚼事刽霖嗓酱阵瓷练喷敝渭铭咀檀毕舵砌汾弃渣乌斟浸道栽强藐颇一硼尤醉背即侯 ...

  7. R语言:计算各种距离

    R语言:计算各种距离 MATLAB 版本的 http://blog.csdn.net/sinat_26917383/article/details/52101425 PYTHON版本的 http:// ...

  8. R语言--计算各种距离

    MATLAB 版本的 http://blog.csdn.net/sinat_26917383/article/details/52101425 PYTHON版本的 http://book.2cto.c ...

  9. C语言用代数余子式计算行列式

    本章主要介绍利用代数余子式计算行列的原理及代码实现 除了代数余子式法,其他计算行列式的方法如下: 1)利用高斯法计算行列式 2)利用LU分解法计算行列式 目录 1.代数余子式计算行列式的原理 二阶行列 ...

最新文章

  1. Spring Cloud Alibaba - 18 Nacos Config配置中心加载相同微服务的不同环境下的通用配置
  2. 【GDKOI2003】分球
  3. 职业寿命取决于营销理念
  4. 阮一峰react demo代码研究的学习笔记 - demo4 debug - create element and Render
  5. .NET Core 3.0及ASP.NET Core 3.0 前瞻
  6. apache poi斜边框线_如何使用Apache POI在Excel单元格内画斜线(Java)
  7. 如何真正理解三极管饱和 放大的含义 (必收藏)
  8. 电脑N卡跟A卡是什么,有区别么?
  9. 秒的换算:ms(毫秒),μs(微秒),ns(纳秒),ps(皮秒)
  10. JavaEE项目的三层架构
  11. Android学习笔记(四十):Preference的使用
  12. HashMap源码学习——初探
  13. yasm/nasm not found or too old. Use --disable-yasm for a crippled build.
  14. 如何精确设计压铸模具的溢流槽和排气槽?| 智铸超云干货分享
  15. Android常用加密解密实现方式
  16. 从简历被拒到收割今日头条offer,我花了一年时间
  17. 【Javscript Java】解决CSV中文乱码的问题
  18. 互联网企业上市基因:团队行业是核心
  19. 决策支持系统 系统分析设计实现
  20. 运营商大数据抓取的原理是什么?

热门文章

  1. Windows 10“创作者更新”改进了高DPI缩放支持
  2. Django中的权限和分组管理
  3. 跳过wifi网页认证的app,免认证连接校园网
  4. 使用Python制作漫画和小说电子书的方法总结
  5. tcga数据下载_肿瘤研究不能不知道的TCGA数据库挖掘工具大全,TCGA再也不愁
  6. 如何在 iPhone、iPad、iPod touch 或 Mac 上,更新 HomePod
  7. 用命令提示符修改计算机配置,Windows怎么用命令提示符配置IP地址
  8. 缤客发布2021年可持续旅行报告;爱彼迎全球招募12人体验“旅居四方” | 全球旅报...
  9. “黄药师”调制的黑科技,甲醛异味细菌灭光光丨钛空舱
  10. 亚马逊通过云计算发力中国市场?表示要适应中国规则