📄 1.cpp
字号:
#include<iostream.h>
#include<math.h>
void main()
{
int p,n=3;
double x[3],temp;//采用双精度防止计算中的近似出现不等与0
double a[3][3]={{2,1,-3},{-1,3,2},{1,2,-2}};
double b[3]={-1,5,0};
for(int k=0;k<=n-1;k++)//当k=n-1时用来查看是否有无穷个解
{
p=k;
for(int i=k+1;i<=n-1;i++)//找主元防止除小数溢出
if(abs(a[i][k])>abs(a[p][k]))
p=i;
for(i=k;i<=n-1;i++)
{
temp=a[p][i];
a[p][i]=a[k][i];
a[k][i]=temp;
}
temp=b[p];
b[p]=b[k];
b[k]=temp;
if(a[k][k]==0)
{
cout<<"有无穷个解"<<endl;
return ;
}
for(i=k+1;i<=n-1;i++)
{
temp=-a[i][k]/a[k][k];
for(int j=k;j<=n-1;j++)//j=k+1也可以,虽然再以下的计算中用不到但将前面的置为0可以检验该段代码
a[i][j]+=a[k][j]*temp;
b[i]+=b[k]*temp;
}
}
for(int i=n-1;i>=0;i--)
{
temp=0;
for(int j=i+1;j<=n-1;j++)
temp+=a[i][j]*x[j];
x[i]=(b[i]-temp)/a[i][i];
}
for(k=0;k<3;k++)
{
for(int i=0;i<3;i++)
cout<<a[k][i]<<" ";
cout<<b[k]<<endl;
}
for(k=0;k<3;k++)
cout<<x[k]<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -