📄 列主高斯消去法.cpp
字号:
#include "stdio.h"
#include "math.h"
void GS2(int n,double a[3][3],double b[3])
{
int i,j,k,l;
double c,t;
for(k=1;k<=n;k++)
{
c=0.0;
for(i=k;i<=n;i++)
if(fabs(a[i-1][k-1])>fabs(c))
{
c=a[i-1][k-1];
l=i;
}
if(l!=k)
{
for(j=k;j<=n;j++)
{
t=a[k-1][j-1];
a[k-1][j-1]=a[l-1][j-1];
a[l-1][j-1]=t;
}
t=b[k-1];
b[k-1]=b[l-1];
b[l-1]=t;
}
c=1/c;
for(j=k+1;j<=n;j++)
a[k-1][j-1]=a[k-1][j-1]*c;
b[k-1]*=c;
for(i=k+1;i<=n;i++)
{
for(j=k+1;j<=n;j++)
a[i-1][j-1]-=a[i-1][k-1]*a[k-1][j-1];
b[i-1]-=b[k-1]*a[i-1][k-1];
}
}
for(i=n;i>=1;i--)
for(j=i+1;j<=n;j++)
b[i-1]-=a[i-1][j-1]*b[j-1];
}
void main()
{
int n;
double a[3][3],b[3];
n=3;
a[0][0]=1;a[0][1]=-1;a[0][2]=1;b[0]=-4;
a[1][0]=5;a[1][1]=-4;a[1][2]=3;b[1]=-12;
a[2][0]=2;a[2][1]=1;a[2][2]=1;b[2]=11;
GS2(n,a,b);
for(int i=0;i<n;i++)
printf("%f\n",b[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -