#include <stdio.h>
int main()
{
int n = 3;
float matrix[10][10];
float augmatrix[10][10];
/*creating random matrix*/
for(int i=0;i<n; i++)
{
for(int j=0; j<n; j++)
{
matrix[i][j]= i+(j*j)+1;
}
}
/*creating an augmented matrix with identity matrix*/
for (int i=0;i<n; i++)
{
for(int j=0; j<2*n; j++)
{
if(j<n)
{
augmatrix[i][j] = matrix[i][j];
}
else if(i==j-n)
{
augmatrix[i][j] = 1.0;
}
else
{
augmatrix[i][j] = 0.0;
}
}
}
/*printing matrix*/
printf("matrix is \n");
for (int z = 0; z < n; z++)
{
for (int x = 0; x < n; x++)
{
printf(" %f", matrix[z][x]);
}
printf("\n");
}
printf("augmatrix is \n");
for (int z = 0; z < n; z++)
{
for (int x = 0; x < n*2; x++)
{
printf(" %f", augmatrix[z][x]);
}
printf("\n");
}
/*gausian elimination*/
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(i!=j){
int l = augmatrix[j][i]/augmatrix[i][i];
for(int k = 0; k < 2*n; k++){
augmatrix[j][k] -= l * augmatrix[i][k];
}
}
}
}
for(int i = 0; i < n; i++){
float a = augmatrix[i][i];
for(int j = 0; j < 2*n; j++){
augmatrix[i][j] /= a;
}
}
/*print result*/
printf("matrix is \n");
for (int z = 0; z < n; z++)
{
for (int x = 0; x < n*2; x++)
{
printf(" %f", augmatrix[z][x]);
}
printf("\n");
}
}
答案 0 :(得分:1)
做的问题
for(int i=0;i<n; i++)
{
for(int j=0; j<n; j++)
{
matrix[i][j]= i+(j*j)+1;
}
}
是你正在生成一个不存在逆的矩阵。
使用随机数生成矩阵,并检查行列式是否为非零。