施密特正交化c语言,C语言实现矩阵的LU分解、施密特正交化、Givens分解、Householder分解...

《C语言实现矩阵的LU分解、施密特正交化、Givens分解、Householder分解》由会员分享,可在线阅读,更多相关《C语言实现矩阵的LU分解、施密特正交化、Givens分解、Householder分解(18页珍藏版)》请在人人文库网上搜索。

1、C语言实现矩阵的LU分解、施密特正交化、Givens分解、Householder分解By Kim.Wang,UCAS#include#include#include#define HS 10#define LS 10int n, m;float aHSLS,bcHSLS;void givens()float fm,sc,cos,sin,rHSLS,qHSLS,swapHSLS,pHSLS; int ih,jh,i, j,kh,iw;for (i = 0; i j) rij=0;printf(%0.5f , rij);printf(n);void lufj()int i, j, k,mm, z,。

2、 o, pHSLS, wHS;float x, y,aluHSLS, sHS,lHSLS,uHSLS;for (i = 0; i j)lij=aluij;uij=0;else if(ij)lij=0;uij=aluij;elselij=1;uij=aluij;printf( LU分解矩阵L的结果如下:n);for (i = 0; i n; i+)for (j = 0; j n; j+)printf(%0.5f , lij);printf(n);printf(n LU分解矩阵U的结果如下:n);for (i = 0; i n; i+)for (j = 0; j n; j+)printf(%0.5。

3、f , uij);printf(n);printf(n LU分解行交换矩阵P的结果如下:n);for (i = 0; i n; i+)for (j = 0; j n; j+)printf(%d , pij);printf(n);int main()int im,jm,b,z,zl;printf(请输入矩阵行数M(M需为大于1的整数):n);scanf(%d,&m);printf(请输入矩阵列数N(N需为大于1的整数):n);scanf(%d,&n);for (im = 0; im m; im+)for (jm = 0; jm n; jm+)b = im + 1;z = jm + 1;print。

4、f(请输入第%d行的第%d个数,以enter键结束输入:n, b, z);scanf(%f, &aimjm);float fm,sc,cos,sin,jdz,rHSLS,qHSLS,swapHSLS,pHSLS; int ih,jh,i, j,kh,iw;for (i = 0; i m; i+)for (j = 0; j n; j+)rij=aij;for (i = 0; i m; i+)for (j = 0; j m; j+)if(i=j)qij=1;elseqij=0;for(j=0;jn;j+)for (i = j+1; i m; i+)for (ih = 0; ih m; ih+)fo。

5、r (jh = 0; jh m; jh+)if(ih=jh)pihjh=1;elsepihjh=0;fm=sqrt(rij*rij+rjj*rjj);cos=rjj/fm;sin=rij/fm;pii=pjj=cos;pij=-sin;pji=sin;for (ih = 0; ih m; ih+)for (jh = 0; jh n; jh+)sc=0;for (kh = 0; kh m; kh+)sc=sc+pihkh*rkhjh;swapihjh=sc;for (ih = 0; ih m; ih+)for (jh = 0; jh n; jh+)rihjh=swapihjh;for (ih =。

6、 0; ih m; ih+)for (jh = 0; jh m; jh+)sc=0;for (kh = 0; kh m; kh+)sc=sc+pihkh*qkhjh;swapihjh=sc;for (ih = 0; ih m; ih+)for (jh = 0; jh m; jh+)bcjhih=qihjh=swapihjh;if(rn-1n-10)jdz=-rn-1n-1;elsejdz=rn-1n-1;if(mn)printf(n 该矩阵列向量线性相关,无法进行分解! n);system(pause); else if(jdz0.0001)printf(n 该矩阵列向量线性相关,无法进行分解。

7、! n);system(pause); else if(m=n) doprintf(n);printf(该矩阵可进行四种分解,请输入选项前的数字选择! n);printf(0: 退出程序 n);printf(1: Gram-Schmidt正交化 n);printf(2: Householder分解 n);printf(3: Givens分解 n);printf(4: LU分解 nn);scanf(%d, &zl);switch(zl)case 0:return 0; break;case 1:schmidt(); break;case 2:householder(); break;case 3。

8、:givens(); break;case 4:lufj(); break;while(zl!=0); else doprintf(n);printf(该矩阵可进行除LU分解外的三种分解,请输入选项前的数字选择! n);printf(0: 退出程序 n);printf(1: Gram-Schmidt正交化 n);printf(2: Householder分解 n);printf(3: Givens分解 nn);scanf(%d, &zl);switch(zl)case 0:return 0; break;case 1:schmidt(); break;case 2:householder(); break;case 3:givens(); break;while(zl!=0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值