欢迎来到天天文库
浏览记录
ID:14236692
大小:243.50 KB
页数:8页
时间:2018-07-27
《数值与符号计算 lu和qr分解实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值与符号计算实验(丑)线性代数方程组求解姓名:学号:学院:一、实验题目用C/C++语言实现如下函数:1、boollu(double*a,int*pivot,intn);矩阵的LU分解2、boolguass(doubleconst*lu,intconst*p,double*b,intn);求线性代数方程组的解3、voidqr(double*a,double*d,intn);矩阵的QR分解4、boolhshld(doubleconst*qr,doubleconst*d,double*b,intn);求线性代数方程组的解二、实验要求i.撰写详细的实验报告i
2、i.不必修改函数界面iii.用高斯列选主元消去法和矩阵QR分解两种方法求解下面3个方程组,比较这两种方法的误差。一、实验算法结果1、矩阵的Lu分解算法代码如下:boollu(double*a,int*pivot,intn)//矩阵LU分解{inti,j,k;doublemax,temp;max=0;temp=0;for(i=0;i
3、max){max=fabs(a[n*j+i]);pivot[i]=j;}}//对第i列进行行变换,使得主元在对角线上if(pivot[i]!=i){for(j=i;j4、n*j+k]=a[n*j+k]-a[n*j+i]*a[n*i+k];}//计算下三角Lfor(i=0;i5、or(i=0;i=0;i--){for(j=n-1;j>i;j--)b[i]=b[i]-lu[n*i+j]*b[j];b[i]=b[i]/lu[n*i+i];}returnfalse;}2、矩阵的QR分解算法代码如下:voidqr(double*6、a,double*d,intn)//矩阵的QR分解{inti,j,l,k;doubletem,m;double*temp;temp=(double*)malloc(sizeof(double)*n);for(i=0;i0)m=-sqrt(m);elsem=sqrt(m);//获得temp放入矩阵,并存主元dtem=0;d[i]=m;a[n*i+i]=a[n*i+i]-m;7、for(j=i;j<=n-1;j++)tem=tem+a[n*j+i]*a[n*j+i];tem=sqrt(tem);for(j=i;j<=n-1;j++)a[n*j+i]=a[n*j+i]/tem;//调整矩阵for(k=i+1;k8、;}1、QR求解线性方程组的代码如下:boolhouseholder(doubleconst*
4、n*j+k]=a[n*j+k]-a[n*j+i]*a[n*i+k];}//计算下三角Lfor(i=0;i5、or(i=0;i=0;i--){for(j=n-1;j>i;j--)b[i]=b[i]-lu[n*i+j]*b[j];b[i]=b[i]/lu[n*i+i];}returnfalse;}2、矩阵的QR分解算法代码如下:voidqr(double*6、a,double*d,intn)//矩阵的QR分解{inti,j,l,k;doubletem,m;double*temp;temp=(double*)malloc(sizeof(double)*n);for(i=0;i0)m=-sqrt(m);elsem=sqrt(m);//获得temp放入矩阵,并存主元dtem=0;d[i]=m;a[n*i+i]=a[n*i+i]-m;7、for(j=i;j<=n-1;j++)tem=tem+a[n*j+i]*a[n*j+i];tem=sqrt(tem);for(j=i;j<=n-1;j++)a[n*j+i]=a[n*j+i]/tem;//调整矩阵for(k=i+1;k8、;}1、QR求解线性方程组的代码如下:boolhouseholder(doubleconst*
5、or(i=0;i=0;i--){for(j=n-1;j>i;j--)b[i]=b[i]-lu[n*i+j]*b[j];b[i]=b[i]/lu[n*i+i];}returnfalse;}2、矩阵的QR分解算法代码如下:voidqr(double*
6、a,double*d,intn)//矩阵的QR分解{inti,j,l,k;doubletem,m;double*temp;temp=(double*)malloc(sizeof(double)*n);for(i=0;i0)m=-sqrt(m);elsem=sqrt(m);//获得temp放入矩阵,并存主元dtem=0;d[i]=m;a[n*i+i]=a[n*i+i]-m;
7、for(j=i;j<=n-1;j++)tem=tem+a[n*j+i]*a[n*j+i];tem=sqrt(tem);for(j=i;j<=n-1;j++)a[n*j+i]=a[n*j+i]/tem;//调整矩阵for(k=i+1;k8、;}1、QR求解线性方程组的代码如下:boolhouseholder(doubleconst*
8、;}1、QR求解线性方程组的代码如下:boolhouseholder(doubleconst*
此文档下载收益归作者所有