#include<iostream.h>
#include<math.h>
void col_expunction(int n,double** a,double* b) //列主消元法函数
{
double* x=new double[n];
int* q=new int [n];
for(int i=0;i<n;i++)
q[i]=i;
if(n==1)x[0]=b[0]/a[0][0]; //当n=1时的处理
for(int k=0;k<n-1;k++){ //选最大系数列
double max=fabs(a[q[k]][k]); int p=q[k];
for(int j=k+1;j<n;j++){
if(max<fabs(a[q[j]][k])){
max=a[q[j]][k];
p=q[j];
}
}
for(i=k+1;i<n;i++){
if(q[i]==p){
q[i]=q[k];
q[k]=p;
break;
}
}
for(i=k+1;i<n;i++){ //方程求解过程
double l=(a[q[i]][k])/a[p][k];
for(j=k+1;j<n;j++)
a[q[i]][j]=a[q[i]][j]-l*(a[p][j]);
b[q[i]]=b[q[i]]-l*b[p];
}
x[n-1]=b[q[n-1]]/a[q[n-1]][n-1];
for(i=n-2;i>=0;i--){
double y=0;
for(j=i+1;j<n;j++)
y+=a[q[i]][j]*x[j];
x[i]=(b[q[i]]-y)/a[q[i]][i];
}
}
for(i=0;i<n;i++)
b[i]=x[i];
}
void main()
{
char ch;
do{
int n;
cout<<"Input n:";
cin>>n;
double** a=new double* [n];
for(int i=0;i<n;i++)
a[i]=new double[n];
double* b=new double [n];
cout<<endl<<"自动生成Hilbert矩阵?(y=yes||anykey=no):";
cin>>ch;
if(ch!='y'&&ch!='Y'){
cout<<"\nInput a[i][j](1<=i,j<=n):\n";
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>a[i][j];
cout<<"\nInput b[i](1<=i<=n):\n";
for(i=0;i<n;i++)
cin>>b[i];
}
else{
for(i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=(double)1/(i+j+1);
for(i=0;i<n;i++){
b[i]=0;
for(int j=0;j<n;j++)
b[i]+=(double)(j+1)/(i+j+1);
}
}
col_expunction(n,a,b);
cout<<endl<<"方程组的解为:"<<endl;
for(i=0;i<n;i++)
cout<<"x["<<i<<"]="<<b[i]<<"\t";
cout<<endl;
cout<<endl<<"Continue?(y=yes||anykey=no):";
cin>>ch;
cout<<endl;
}while(ch=='y'||ch=='Y');
}
col_p.rar_列主元消元法_列主消元法_线性方程_线性方程组
版权申诉
201 浏览量
2022-09-24
12:16:50
上传
评论
收藏 1KB RAR 举报
局外狗
- 粉丝: 64
- 资源: 1万+
最新资源
- 在只有usb数据线连接打印机的情况下,实现后台程序调用不同pc设备上的打印机实现实时打印! 打印机型号:zebra GT820
- 华为od三道机试题.pdf
- 79239254_g.zip
- 74CH138扩展32流水灯
- (自适应手机端)响应式艺考培训学校类网站pbootcms模板 html5艺术培训机构网站源码下载.zip
- RT-Voice PRO 2023.1.0
- 基于DenseNet深度学习的胸部X光医学诊断包括预处理和准备真实X光数据集.zip
- 【老飞飞数据库】LOGGING-01-DBF.sql
- SKYWORKS低噪声放大器 SKY67150-396LF-202922H数据手册
- 2D3B3FD97AA42A7C9C10CFC84004DD1A.apk
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈