求n阶矩阵的逆矩阵(C语言实现)
求n阶矩阵的逆矩阵
求行列式的值部分:https://blog.csdn.net/qq_30291317/article/details/114364893?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%B1%82n%E9%98%B6%E7%9F%A9%E9%98%B5%E7%9A%84%E5%80%BC&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{int **c(int n,int **p);double f(int N, int **p);int i, j, num,k;int m,n,a,b;int **q;printf("求n阶矩阵的逆矩阵\n");printf("请输入阶数:");while (scanf("%d", &num)!=EOF) {printf("请输入矩阵:\n");int** array=(int**)malloc(sizeof(int*) * num);for (i=0;i<num;i++) {array[i]=(int*)malloc(sizeof(int) * num);}for (i=0;i<num;i++) {for (j=0;j<num;j++)scanf("%d",&array[i][j]); } k=f(num, array);if(k==0) {printf("该矩阵的值为0,不存在逆矩阵!\n");main(); } else q=c(num,array); printf("其矩阵的值为:%d\n",k);printf("其伴随矩阵为:\n");for(int i=0;i<num;i++){for(int j=0;j<num;j++)printf("%d\t",*(*(q+i)+j));printf("\n");} int y=0; float m,n;int a,b,u,e,t; printf("其逆矩阵为:\n"); for(int i=0;i<num;i++){for(int j=0;j<num;j++){if(*(*(q+i)+j)<0) u=-*(*(q+i)+j);else u=*(*(q+i)+j);if(k<0) e=-k;else e=k; n=(float)*(*(q+i)+j)/(float)k; m=(float)u/(float)e; if(*(*(q+i)+j)==0) { printf("0\t"); } else{if(fmod(m,1)==0) { if(*(*(q+i)+j)*k>0) printf("%.0f\t",m); else printf("-%.0f\t",m); } else{for(int s=e;s>=0;s--){if(fmod(u,s)==0&&fmod(e,s)==0){ if(*(*(q+i)+j)*k>0) t=1;else t=-1;a=t*u/s;b=e/s;printf("%d/%d\t",a,b);break;}} }}y++;}if(y==num) { printf("\n"); y=0; } }}return 0;
}int **c(int n,int **p)
{int x,k=0,z=0,w=0,v=0;int sign=1;double f(int N, int **p);int **c=(int**)malloc(sizeof(int*)*n);for(int i=0;i<n;i++)c[i]=(int*)malloc(sizeof(int)*n);int **b=(int**)malloc(sizeof(int*)*n-1);for(int i=0;i<n-1;i++)b[i]=(int*)malloc(sizeof(int)*n-1);for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {int s=0,r=0;for(int k=0;k<n;k++)for(int t=0;t<n;t++){if(k==i||t==j) continue;else{*(*(b+s)+r++)=*(*(p+k)+t);if(r==n-1){s++;r=0;}} }*(*(c+w++)+v)=f(n-1,b);}if(w==n) { v++;w=0; }}for(int i=0;i<n;i++)for(int j=0;j<n;j++){if((i+j)%2==0) *(*(c+i)+j)*=1;else *(*(c+i)+j)*=-1;*(*(c+i)+j)=*(*(c+i)+j)*sign;
// sign=-sign;} return c; free(b);free(c);
}double f(int N, int **p)
{if (N==1)return p[0][0];else if (N==2)return p[0][0]*p[1][1]-p[0][1]*p[1][0];else { double result=0; int i, j, m, k, l, sign=1,h; for (i=0;i<N;i++) {int **tmp=(int**)malloc(sizeof(int*)*(N-1));for (h = 0; h < N - 1; h++) {tmp[h]=(int*)malloc(sizeof(int)*(N-1));}l=0;k=0; for (m=1;m<N;m++) {for (j=0;j<N;j++) {if (j==i)continue; else {if (k==N-1) { k=0;l++;}tmp[l][k++]=p[m][j]; }}}result+=f(N-1,tmp)*sign*p[0][i];for (h=0; h<N-1; h++) {free(tmp[h]);}free(tmp); sign = -sign;}return result; }
}
求n阶矩阵的逆矩阵(C语言实现)相关推荐
- java 多阶矩阵求逆_求N阶矩阵的逆矩阵 java
求N阶矩阵的逆矩阵 java 别妄想泡我 911次浏览 2020年08月01日 16:49 最佳经验 本文由作者推荐 1毫升等于多少升-岂止的意思 import r; public class 求逆矩 ...
- 求5阶矩阵其对角线上所有元素之和
1.代码如下: // test.cpp : Defines the entry point for the console application. // /* 输入一个5*5的矩阵,然后输出其对角线 ...
- 求任意阶数矩阵的行列式——C语言
/*** [description] 求n阶矩阵的行列式* @Author fan_zhang* @DateTime 2019-02-27T22:12:58*/ #include <stdio. ...
- C语言,练习8.9 n*n阶矩阵对角线元素之和
首先,n*n阶矩阵需要用到二维数组. 然后矩阵得到了,需要找到对角线上的元素. 不难发现,主对角线上的元素下标是一样的,也就是i==j,其次副对角线上是元素角标相加等于n-1 所以,条件就是 if ...
- 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。
[问题描述]编程实现输出矩阵上/下三角的数值.要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵.下三角和上三角的数值. [输入输出样例] [样例说明] 输入提示符中冒号为英文符号,后面无空格. 输 ...
- 矩阵3-n阶矩阵相乘
步骤: 1.两个矩阵的乘法 设有矩阵A33 * B33 = C33,根据矩阵乘法定律,有: c00 = a00*b00 + a01b10 + a02*b20; c01 = a00*b01 + a01b ...
- java 计算矩阵行列式,【算法】递归算法之n阶矩阵行列式求解
最近高等代数正好讲到这里,此篇文章正好对所学知识做一个具体程序实践. 设计算法时使用递归的思想是一个程序员的基本素质,递归可以把一个很庞大的问题转化为规模缩小了的同类问题的子问题,通过这一思想,我们编 ...
- PTA 基础编程题目集 7-21 求特殊方程的正整数解 C语言
PTA 基础编程题目集 7-21 求特殊方程的正整数解 C语言 输入样例1: 884 输出样例1: 10 28 20 22 输入样例2: 11 输出样例2: No Solution #include& ...
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...
最新文章
- Java学习笔记45:Java 线程与主线程之间的变量关系
- cdh必须要在root用户搭建吗_基于cloudera CDH5的环境搭建
- 蓝宝石英语怎么读_黑金和蓝宝石
- CentOS 7.6+mysql5.7 设置mysql开机自启动。
- ajax----serialize()方法注意事项
- IDEA设置光标所在行背景色
- 【数学建模】预测模型之BP网络预测
- mysql sql多个like性能_一个sql很多个not like的简化语句
- 如何理解移动侦测录像与人体红外感应
- Linux学习笔记——Linux基本命令篇
- 因计算机中丢失msvcr120.dll,msvcr120.dll丢失怎样修复 附解决方法
- DS二叉树—二叉树构建与遍历(不含框架)
- 主板声卡坏了会不会有电流声_2020年|短视频直播间设备(手机,直播声卡,麦克风,监听耳机,摄影补光灯)选购推荐指南...
- 分布式计算、云计算与大数据
- 在电商行业拼杀之外,三大电商又在其他行业展开了厮杀
- 【CVPR2021】记一次神奇的 Rebuttal 经历
- 中断函数实现按键控制LED灯亮灭
- 鸟飞行html代码控制,html5 canvas一群鸟飞行
- Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2
- 风变科技python课程评价.11_风变科技在线职业教育课程不错,菜鸟也能成python高手...
热门文章
- 7-12 哥尼斯堡的“七桥问题” (25 分)(并查集)
- matlab:nargin,varargin,varargout
- 「独家分享」阿里巴巴、腾讯、百度的内部薪资及职级体系
- 根据地理位置来获取最近的商家
- 【原创】所谓“读心术”的伎俩
- MySQL如何查询表中重复的数据
- 我和Ruby之父松本行弘的握手
- 大数据日志分析系统-logstash
- 流场可视化工程dlb-dynamicdr部署日志:阶段五:实验室服务器程序运行
- MATLAB中的zigzag,ZIGZAG扫描的MATLAB实现