📄 gaosi.c
字号:
#include<stdio.h>
#include<math.h>
#include<string.h>
#define M 3
#define N 4
void main()
{
static float a[M+1][N+1]={{0,0,0,0,0},{0.0,-0.002,2.0,2.0,0.4},{0.0,1.0,0.78125,0.0,1.3816},
{0.0,3.99,5.5625,4.0,7.4178}};
float x[M+1]={0,0,0,0},y[M+1]={0,0,0,0};
float r,e,t1;
int i,j,k,p,q,t,l[M+1];
for(i=1;i<=M;i++)
{
for(j=1;j<=N;j++)
printf("a[%d][%d]%15f",i,j,a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<=M;i++)
l[i]=i;
for(k=1;k<M;k++)
{
p=k;
q=k;
e=fabs(a[k][k]);
for(i=k;i<=M;i++)
{
for(j=k;j<=M;j++)
if(fabs(a[i][j])>e)
{
e=fabs(a[i][j]);
p=i;
q=j;
}
}
t=l[k];
l[k]=l[q];
l[q]=t;
for(j=1;j<=N;j++)
{
t1=a[k][j];
a[k][j]=a[p][j];
a[p][j]=t1;
}
for(i=1;i<=M;i++)
{
t1=a[i][k];
a[i][k]=a[i][q];
a[i][q]=t1;
}
if(a[k][k]!=0)
{
for(i=k+1;i<=M;i++)
{
if(a[i][k]!=0)
{
r=a[i][k]/a[k][k];
for(j=k;j<=N;j++)
a[i][j]=a[i][j]-r*a[k][j];
}
}
}
else
{
printf("高斯方法不起作用!!");
break;
}
}
for(i=1;i<=M;i++)
{
for(j=1;j<=N;j++)
printf("a[%d][%d]%15f",i,j,a[i][j]);
printf("\n");
}
printf("\n");
y[M]=a[M][N]/a[M][M];
q=l[M];
x[q]=y[M];
for(i=M-1;i>=1;i--)
{
t1=a[i][N];
for(j=i+1;j<=M;j++)
t1=t1-a[i][j]*y[j];
y[i]=t1/a[i][j];
q=l[i];
x[q]=y[i];
}
for(i=1;i<=M;i++)
printf("a[%d][%d]%15.7f\n",i,j,x[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -