列主高斯消去法.cpp
来自「定步长辛普森公式计算.二分法.列主高斯消去法.龙贝格.牛顿迭代法.弦截法.逐次超」· C++ 代码 · 共 62 行
CPP
62 行
#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 + =
减小字号Ctrl + -
显示快捷键?