#include #include void main( void ){ float buffer,*p; //定义数组首地址指针变量 short int row,num; //定义矩阵行数row及矩阵元素个数 short int i,j; float determ; //定义矩阵的行列式 float comput_D(float *p,short int n); //求矩阵的行列式 float Creat_M(float *p, short int m,short int n,short int k); //求代数余子式 void Print( float *p,short int n); //打印n×n的矩阵 printf("\nPlease input the number of rows: "); scanf("%d",&row); num=2 * row * row; buffer = (float *)calloc(num, sizeof(float)); //分配内存单元 p=buffer; if(p != NULL) { for(i=0;i<row;i++) //输入各单元值 { printf("Input the number of %d row ",i+1); for(j=0;j<row;j++) { scanf("%f",p++); } } } else printf( "Can't allocate memory\n" ); printf("\nThe original matrix is:\n"); Print(buffer,row); //打印该矩阵 determ=comput_D(buffer,row); //求整个矩阵的行列式 p=buffer + row * row; if (determ != 0) { for (i=0;i<row; i++) //求逆矩阵 for (j=0; j<row; j++) *(p+j*row+i)= Creat_M(buffer,i,j,row)/determ; printf("The determinant is %G\n",determ); p=buffer + row * row; printf("\nThe inverse matrix is:\n"); Print(p,row); //打印该矩阵 } else printf("The determnant is 0, and there is no inverse matrix !\n"); free( buffer );}//--------------------------------------------------------//功能：求矩阵 n X n 的行列式//入口参数：矩阵首地址 p；矩阵行数 n//返回值：矩阵的行列式值//--------------------------------------------------------float comput_D(float *p,short int n) { short int i,j,m; //i--row; j--column short int lop=0; float result=0; float mid=1; if (n!=1) { lop=(n==2)?1:n; //控制求和循环次数，若为2阶，则循环1次，否则为n次 for(m=0;m<lop;m++) { mid=1; //顺序求和 for(i=0,j=m;i<n;i++,j++) mid = mid * ( *(p+i*n+j%n) ); result+=mid; } for(m=0;m<lop;m++) { mid=1; //逆序相减 for(i=0,j=n-1-m+n; i<n; i++,j--) mid=mid * ( *(p+i*n+j%n)); result-=mid; } } else result=*p; return(result);}//----------------------------------------------------//功能：求k×k矩阵中元素A(mn)的代数余子式//入口参数：k×k矩阵首地址；元素A的下标m,n; 矩阵行数 k//返回值： k×k矩阵中元素A(mn)的代数余子式//----------------------------------------------------float Creat_M(float *p, short int m,short int n,short int k){ short int len; short int i,j; float mid_result=0; short int quo=1; float *p_creat,*p_mid; len=(k-1)(k-1); p_creat = (float )calloc(len, sizeof(float)); //分配内存单元 p_mid=p_creat; for(i=0;i<k;i++) for(j=0;j<k;j++) { if (i!=m && j!=n) *p_mid++ = (p+i*k+j); } // Print(p_creat,k-1); quo = (m + n) %2==0 ? 1:-1; mid_result = (float ) quo * comput_D(p_creat,k-1); free(p_creat); return(mid_result);}//-------------------------------------------//功能：打印n×n的矩阵//入口参数：n×n矩阵的首地址；该矩阵的行数 n//返回值： 无//-------------------------------------------void Print( float *p,short int n) { int i,j; for (i=0;i<n;i++) { for (j=0; j<n;j++) printf("%10G ",*p++); printf("\n"); } printf("--------------\n");}

2个回答

C语言的作业了矩阵求逆

C++中求逆矩阵的方法。。。。

double L; int q,w,e; for(q=0;q<N-1;q++) { for(w=0;w<N-1;w++) aug[q][w]=yakebi[q][w]; for(w=N-1;w<(2*N-2);w++) { if(w==q+N-1) { aug[q][w]=1;} else {aug[q][w]=0;}}} for(q=0;q<N-1;q++) { for(e=q+1;e<N-1;e++) { L=-aug[e][q]/aug[q][q]; for(w=q;w<2*(N-1);w++) aug[e][w]=aug[e][w]+L*aug[q][w]; } } for(q=N-2;q>0;q--) { for(e=q-1;e>=0;e--) { L=-aug[e][q]/aug[q][q]; for(w=2*(N-1)-1;w>=0;w--) aug[e][w]=aug[e][w]+L*aug[q][w]; } } for(q=N-2;q>=0;q--) for(w=2*(N-1)-1;w>=0;w--) aug[q][w]=aug[q][w]/aug[q][q]; for(q=0;q<N-1;q++) { for(w=N-1;w<2*(N-1);w++) { inv_yakebi[q][w-N+1]=aug[q][w]; } }这段代码能不能求出逆矩阵啊？有点懵逼了。。。

Eigen库，求广义逆矩阵的函数是哪个

Eigen库，求广义逆矩阵的函数是哪个？inverse()是求逆矩阵

hill加密逆矩阵是怎样求的啊，为什么和线性代数求出来的不一样？/跪求牛人解答

python自编逆矩阵遇到的奇怪问题

C++使用Eigen库如何求解非方阵的广义逆矩阵？类似matlab的pinv函数

C++使用Eigen库如何求解非方阵的广义逆矩阵？类似matlab的pinv函数？ 运算量很大，所以必须使用库函数哦~~可以麻烦一点，不一定一个函数解决 非常感谢！很急！

opengl编写一个实现对象的一点透视投影程序（写出矩阵即可）

1、给定Po V N，编写一个生成将世界坐标变换到三维观察坐标的矩阵的程序。观察向上向量可以是不平行于N的任意方向​ 2、使用平行投影方法及任意指定的投影向量，编写从多面体顶点到投影坐标的变换程序（写出矩阵即可） 3、编写一个实现对象的一点透视投影程序（写出矩阵即可）

java用编写一个4*4矩阵程序，并要求行列能够互换

JAva Java 现有矩阵A和B,大小3*3,编写函数,两个矩阵相加,

Problem Description 我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1，对角线两边分数的分母逐个递增。 请求出这个矩阵的总和。 Input 每行给定整数N (N<50000)，表示矩阵为 N*N.当N为0时，输入结束。 Output 输出答案，保留2位小数。 Sample Input 1 2 3 4 0 Sample Output 1.00 3.00 5.67 8.83

**描述** 给定若干个矩阵，找出各矩阵的行数、列数。 　 **输入** 输入数据有若干个矩阵，矩阵之间用空行分隔。每行输入的总字符数不超过65536。 　 **输出** 对于每一种情形，先输出“Case #:”（#为序号，从1起），然后矩阵的行数，逗号，列数，逗号，矩阵全部元素之和。 　 **样例输入1** 1.5 2.2 3.3 0.4 4.0 6.5 1 4 5 7 8 10 3 6 3 4 6 8 9 2 4 6 7 5 1 3 2 5 6 7 **样例输出1** Case 1: 2, 3, 17.9 Case 2: 3, 6, 98 Case 3: 3, 2, 24 ![图片说明](https://img-ask.csdn.net/upload/201909/30/1569813510_775375.png) 我的代码如下 报错Runtime Error! 网上找到RE的常见原因是 > ①除以零 > > ②数组越界 > > ③指针越界 > > ④使用已经释放的空间 > > ⑤数组开得太大，超出了栈的范围，造成栈溢出 C++初学者，想知道是哪里出了问题 **_（已解决RE问题，是OJ不允许while(true)循环，但更改后又出现Wrong Answer……，下面是更改后的代码）_** ``` #include <iostream> #include <sstream> using namespace std; int main() { int t = 0; //Case序号 string x; stringstream ss; long double temp; long long count = 0; //count总元素个数 long long row = 0, col = 0; //row行数，col列数 long double sum = 0; //sum全部元素之和 while(getline(cin, x)) //按行输入 { if(x.length() != 0) { ss.clear(); ss.str(x); while(ss >> temp) //输入到浮点型变量temp { sum += temp; //累加求和 count ++; //记录总个数 } row ++; //记录行数 } else //读到空行即一种情形输入完毕 { t ++; if(row != 0) col = count / row; //总个数除以行数即为列数 else col = 0; //行数0则列数0 cout << "Case " << t << ": " << row << ", " << col << ", " << sum << endl; row = 0; //归零 col = 0; sum = 0; count = 0; } } return 0; } ```

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内，我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年，古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合，再掺入煅烧石灰石制成的石灰，由此得来了人...

C++11：一些微小的变化（新的数据类型、template表达式内的空格、nullptr、std::nullptr_t）

HashMap底层实现原理，红黑树，B+树，B树的结构原理 Spring的AOP和IOC是什么？它们常见的使用场景有哪些？Spring事务，事务的属性，传播行为，数据库隔离级别 Spring和SpringMVC，MyBatis以及SpringBoot的注解分别有哪些？SpringMVC的工作原理，SpringBoot框架的优点，MyBatis框架的优点 SpringCould组件有哪些，他们...

【阿里P6面经】二本，curd两年，疯狂复习，拿下阿里offer

《经典算法案例》01-08：如何使用质数设计扫雷（Minesweeper）游戏

《Oracle Java SE编程自学与面试指南》最佳学习路线图（2020最新版）