📄 距阵的解.cpp
字号:
#include<iostream>
#include<fstream>
using namespace std;
void jie(float num[][12],int n)
{
int i,j,l,m;
float k,x[10];
for(i=0;i<n-1;i++)
{
for(l=i;l<n;l++)
if(num[l][i]!=0) break;
if(l==n)
{
cout<<"方程不是唯一解"<<endl;
break;
}
if(l!=i)
for(m=i;m<n+2;m++)
{
k=num[i][m];
num[i][m]=num[l][m];
num[l][m]=k;
}
for(j=i+1;j<n;j++)
{
k=num[j][i]/num[i][i];
for(m=i;m<n+1;m++)
num[j][m]+=(-k)*num[i][m];//+num[j][m];
}
}
if(i==(n-1))
{
x[n-1]=num[n-1][n]/num[n-1][n-1];
for(m=n-2;m>=0;m--)
{
for(l=n-1;l>m;l--)
num[m][n]=num[m][n]-num[m][l]*x[l];
x[m]=num[m][n]/num[m][m];
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(num[j][n+1]==i)
cout<<x[j]<<" ";
}
}
}
void main()
{
int i,j,n;
float k;
float number[10][12];
ifstream inf("matrix.in",ios::in);
inf>>n;
for(i=0;i<10;i++)
for(j=0;j<12;j++)
number[i][j]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
inf>>k;
number[i][j]=k;
}
for(i=0;i<n;i++)
{
inf>>k;
number[i][n]=k;
number[i][n+1]=i;
}
for(i=0;i<n;i++)
{
for(j=0;j<n+2;j++)
cout<<number[i][j]<<" ";
cout<<endl;
}
jie(number,n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -