📄 选主元高斯消去法.cpp
字号:
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
double a[10][10],b[10],sum,t,d;
int n,i,j,k,l;
cout<<"input n:";
cin>>n;
cout<<"input a[n][n]:"<<endl;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
cout<<"input b[n]:"<<endl;
for(i=1;i<=n;i++)
cin>>b[i];
for(k=1;k<=n;k++)
{
d=a[k][k];
l=k;
i=k+1;
while(i<=n)
{
if(abs(a[i][k])>abs(d))
{
d=a[i][k];
l=i;}
i++;
}
if(d==0)
{
cout<<"error!";
}
else
if(l!=k)
{
for(j=k;j<=n;j++)
{
t=a[l][j];
a[l][j]=a[k][j];
a[k][j]=t;
}
t=b[k];
b[k]=b[l];
b[l]=t;
}
for(j=k+1;j<=n;j++)
a[k][j]=a[k][j]/a[k][k];
b[k]=b[k]/a[k][k];
for(i=k+1;i<=n;i++)
{for(j=k+1;j<=n;j++)
a[i][j]=a[i][j]-a[i][k]*a[k][j];
}
for(i=k+1;i<=n;i++)
b[i]=b[i]-a[i][k]*b[k];
continue;
}
for(i=n-1;i>=1;i--)
{
sum=0;
for(j=i+1;j<=n;j++)
{
sum+=a[i][j]*b[j];
} b[i]=b[i]-sum;
}
for(i=1;i<=n;i++)
cout<<b[i]<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -