题目:用高斯消元法求 N 阶矩阵的逆矩阵 C 语言实现
#include<stdio.h>
#include<math.h>
long int const N=1000; //定义矩阵最大为 1000 阶
int n; //n 表示矩阵的行数和列数。
double juzhen[N][N]; //定义一个 1000 阶矩阵
double danwei[N][N]; //定义一个单位矩阵
bool zhaozuidazhi(int s)//定义一个布尔型从 s 行到 n 行选择最大的元素作为主元的函数。
{
int i,j,A;
double mas,temp; //temp 为中间变量,实现行交换
mas=fabs(juzhen[s][s]); //数学函数:fabs 功能:求浮点数 juzhen[s][s]的绝对值
//计算 juzhen[s][s], 当 juzhen[s][s]不为负时返回 juzhen[s][s],否则返回-juzhen[s][s]
A=s;
for(i=s+1;i<n;i++)
{
if(mas<fabs(juzhen[i][s]))
{
mas=fabs(juzhen[i][s]);
A=i;
}
}
if(mas==0)
return false;
//交换两行
for(j=0;j<n;j++)
{
temp=juzhen[s][j];
juzhen[s][j]=juzhen[A][j];
juzhen[A][j]=temp;
temp=danwei[s][j];
danwei[s][j]=danwei[A][j];
danwei[A][j]=temp;
}
return true;
}
void jisuan(int s) //消元计算
{
int i,j;
double mas=juzhen[s][s],r;
for(i=s+1;i<n;i++)
{
r=juzhen[i][s]/mas;
for(j=0;j<n;j++)
{ //利用消元计算方阵使之成为上三角矩阵,最后使主对角线上的元素相乘就是最终结果
- 1
- 2
- 3
前往页