📄 高斯列主消去法.cpp
字号:
#include<stdio.h>
#include<math.h>
float yhf(float a[][3],int i,float b[3])
{float s=0;int m;
for(m=i+1;m<3;m++)
s+=a[i][m]*b[m];
return s;}
void main( )
{float a[3][3],b[3],x[3],d,t;
int i,j,k,l;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
scanf("%f",&b[i]);
k=0;
while(k!=3)
{
{d=a[k][k];l=k;i=k+1;
do
{if(fabs(a[i][k])>fabs(d))
{d=a[i][k];l=i;}
if(i!=3)
i=i+1;
else break;}
while(i!=3);
if(i==3)
if(d==0) break;
else
if(l!=k)
{for(j=k;j<3;j++)
{t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;}
t=b[l];b[l]=b[k];b[k]=t;}}
for(j=k+1;j<3;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
for(i=k+1;i<3;i++)
for(j=k+1;j<3;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
for(i=k+1;i<3;i++)
b[i]=b[i]-a[i][k]*b[k];
if(k!=3)
k=k+1;
else break;}
if(d==0)
printf("can't use Gauss");
if(k==3)
for(i=2;i>=0;i--)
b[i]=b[i]-yhf(a,i,b);
for(i=0;i<3;i++)
printf("%f ",b[i]);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -