一般实矩阵的QR分解





实现代码如下:

#include "math.h"#include "stdio.h"int maqr(a,m,n,q)int m,n;double a[],q[];{ int i,j,k,l,nn,p,jj;double u,alpha,w,t;if (m<n){ printf("fail\n"); return(0);}for (i=0; i<=m-1; i++)for (j=0; j<=m-1; j++){ l=i*m+j; q[l]=0.0;if (i==j) q[l]=1.0;}nn=n;if (m==n) nn=m-1;for (k=0; k<=nn-1; k++){ u=0.0; l=k*n+k;for (i=k; i<=m-1; i++){ w=fabs(a[i*n+k]);if (w>u) u=w;}alpha=0.0;for (i=k; i<=m-1; i++){ t=a[i*n+k]/u; alpha=alpha+t*t;}if (a[l]>0.0) u=-u;alpha=u*sqrt(alpha);if (fabs(alpha)+1.0==1.0){ printf("fail\n"); return(0);}u=sqrt(2.0*alpha*(alpha-a[l]));if ((u+1.0)!=1.0){ a[l]=(a[l]-alpha)/u;for (i=k+1; i<=m-1; i++){ p=i*n+k; a[p]=a[p]/u;}for (j=0; j<=m-1; j++){ t=0.0;for (jj=k; jj<=m-1; jj++)t=t+a[jj*n+k]*q[jj*m+j];for (i=k; i<=m-1; i++){ p=i*m+j; q[p]=q[p]-2.0*t*a[i*n+k];}}for (j=k+1; j<=n-1; j++){ t=0.0;for (jj=k; jj<=m-1; jj++)t=t+a[jj*n+k]*a[jj*n+j];for (i=k; i<=m-1; i++){ p=i*n+j; a[p]=a[p]-2.0*t*a[i*n+k];}}a[l]=alpha;for (i=k+1; i<=m-1; i++)a[i*n+k]=0.0;}}for (i=0; i<=m-2; i++)for (j=i+1; j<=m-1;j++){ p=i*m+j; l=j*m+i;t=q[p]; q[p]=q[l]; q[l]=t;}return(1);}

QR分解原理与C实现(一般实矩阵)相关推荐

  1. 第8章 矩阵特征值问题计算

    第8章 矩阵特征值问题计算 8.1 引 言 物理.力学和工程技术中的很多问题在数学上都归结为求矩阵特征值问题.例如,振动问题(大型桥梁或建筑物的振动.机械的振动.电磁振荡等),物理学中某些临界值的确定 ...

  2. java数值计算算法编程,Java数值计算算法编程

    第1章 Java与数值计算. 1.1 数值计算中存在的问题 1.2 用Java实现数值计算算法的要点 1.3 实数类设计与实现 第2章 复数运算 2.1 复数类设计 2.2 复数乘法 2.3 复数除法 ...

  3. 计算机数值计算原理,C#数值计算算法编程

    第1章 C#与数值计算. 1.1 数值计算中存在的问题 1.2 用C#实现数值计算算法的要点 第2章 复数运算 2.1 复数类设计 2.2 复数乘法 2.3 复数除法 2.4 复数的模 2.5 复数的 ...

  4. 数值分析(五):C++实现一般实矩阵的QR分解

    先简单介绍一下一般实矩阵的QR分解是什么: 再是源码,不过这次的C++源码是教材上的,提前说明,才五十几行代码就实现了一般实矩阵的QR分解,精炼且巧妙,若是我来写肯定是办不到这么简洁的,正如<C ...

  5. 双步位移求解特征值matlab,数值分析——带双步位移的QR分解求特征值算法

    C语言实现数值分析中带双步位移的QR分解求特征值算法. 数 值 分 析(B) 大 作 业(二) 1.算法设计: ①矩阵的拟上三角化: 对实矩阵A进行相似变换化为拟上三角矩阵A(n 1),其变换矩阵采用 ...

  6. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

    学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...

  7. 【NA】Hessenberg阵的QR迭代法

    前面已经介绍了Householder镜面反射变换以及QR迭代法,一种求解一般实矩阵特征值的方法是:第一步使用Householder变换将其约化为上海森伯格矩阵,第二步对其使用基于Givens变换的QR ...

  8. 【NA】基于QR分解的特征值迭代法

    Francis于1961-1962年利用矩阵的QR分解建立了计算矩阵特征值的QR方法,是计算中小型矩阵全部特征值的最有效方法之一. 本篇的主线是第一部分介绍QR分解,第二部分介绍从QR分解引出的特征值 ...

  9. 基于QR分解迭代求解方阵特征值和特征向量

    基于QR分解迭代求解方阵特征值和特征向量 一.特征值与特征向量求解的难点 线性代数的知识告诉我们如果要求一个方阵的特征值,只需要求解如下的特征方程的根即可: f ( λ ) = ( λ − λ 1 ) ...

最新文章

  1. SpringBoot 【IDEA热部署+浏览器禁用缓存】迅速提升效率
  2. 跨平台PHP调试器设计及使用方法——拾遗
  3. 中国首个量子计算机诞生 中科院、阿里巴巴共同研发
  4. POJ 2104 K-th Number 划分树
  5. 蓝牙L2CAP剖析(一)
  6. CSS浏览器兼容性问题详解总结
  7. 验证码识别Burp reCAPTCHA插件使用
  8. 受邀参加了一场只有副总裁、CTO参加的技术会议!
  9. KITTI数据集解析
  10. 英语不好的程序员怎么样才能自己读英文官方文档?
  11. 《推荐系统》基于标签的用户推荐系统
  12. java:窗体里的标签(图片标签)
  13. vt-d 基本操作流程
  14. Float类型出现舍入误差的原因
  15. python 将中文数字转换为阿拉伯数字
  16. 11,MSI文件简介
  17. Pixhawk飞控代码(2019.11.28)
  18. Android 安卓动画 属性动画 - 渐变/透明度 动画
  19. 网络流量大数据分析平台(1)
  20. android 高德坐标对象,android: 高德地图

热门文章

  1. hashcode重复可能性探究
  2. 【c语言】模拟库函数strstr
  3. JS打印页面指定区域
  4. Windows server下部署php环境
  5. android NDK JNI设置自己的log输出函数
  6. Windows Phone 7 隔离存储空间“.NET研究”资源管理器
  7. GridView 72般绝技(转载)
  8. Apache服务器配置技巧
  9. 本周ASP.NET英文技术文章推荐[03/11 - 03/17]
  10. IDEA代码格式化快捷键(新)