QR分解原理与C实现(一般实矩阵)
一般实矩阵的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实现(一般实矩阵)相关推荐
- 第8章 矩阵特征值问题计算
第8章 矩阵特征值问题计算 8.1 引 言 物理.力学和工程技术中的很多问题在数学上都归结为求矩阵特征值问题.例如,振动问题(大型桥梁或建筑物的振动.机械的振动.电磁振荡等),物理学中某些临界值的确定 ...
- java数值计算算法编程,Java数值计算算法编程
第1章 Java与数值计算. 1.1 数值计算中存在的问题 1.2 用Java实现数值计算算法的要点 1.3 实数类设计与实现 第2章 复数运算 2.1 复数类设计 2.2 复数乘法 2.3 复数除法 ...
- 计算机数值计算原理,C#数值计算算法编程
第1章 C#与数值计算. 1.1 数值计算中存在的问题 1.2 用C#实现数值计算算法的要点 第2章 复数运算 2.1 复数类设计 2.2 复数乘法 2.3 复数除法 2.4 复数的模 2.5 复数的 ...
- 数值分析(五):C++实现一般实矩阵的QR分解
先简单介绍一下一般实矩阵的QR分解是什么: 再是源码,不过这次的C++源码是教材上的,提前说明,才五十几行代码就实现了一般实矩阵的QR分解,精炼且巧妙,若是我来写肯定是办不到这么简洁的,正如<C ...
- 双步位移求解特征值matlab,数值分析——带双步位移的QR分解求特征值算法
C语言实现数值分析中带双步位移的QR分解求特征值算法. 数 值 分 析(B) 大 作 业(二) 1.算法设计: ①矩阵的拟上三角化: 对实矩阵A进行相似变换化为拟上三角矩阵A(n 1),其变换矩阵采用 ...
- 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解
学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...
- 【NA】Hessenberg阵的QR迭代法
前面已经介绍了Householder镜面反射变换以及QR迭代法,一种求解一般实矩阵特征值的方法是:第一步使用Householder变换将其约化为上海森伯格矩阵,第二步对其使用基于Givens变换的QR ...
- 【NA】基于QR分解的特征值迭代法
Francis于1961-1962年利用矩阵的QR分解建立了计算矩阵特征值的QR方法,是计算中小型矩阵全部特征值的最有效方法之一. 本篇的主线是第一部分介绍QR分解,第二部分介绍从QR分解引出的特征值 ...
- 基于QR分解迭代求解方阵特征值和特征向量
基于QR分解迭代求解方阵特征值和特征向量 一.特征值与特征向量求解的难点 线性代数的知识告诉我们如果要求一个方阵的特征值,只需要求解如下的特征方程的根即可: f ( λ ) = ( λ − λ 1 ) ...
最新文章
- SpringBoot 【IDEA热部署+浏览器禁用缓存】迅速提升效率
- 跨平台PHP调试器设计及使用方法——拾遗
- 中国首个量子计算机诞生 中科院、阿里巴巴共同研发
- POJ 2104 K-th Number 划分树
- 蓝牙L2CAP剖析(一)
- CSS浏览器兼容性问题详解总结
- 验证码识别Burp reCAPTCHA插件使用
- 受邀参加了一场只有副总裁、CTO参加的技术会议!
- KITTI数据集解析
- 英语不好的程序员怎么样才能自己读英文官方文档?
- 《推荐系统》基于标签的用户推荐系统
- java:窗体里的标签(图片标签)
- vt-d 基本操作流程
- Float类型出现舍入误差的原因
- python 将中文数字转换为阿拉伯数字
- 11,MSI文件简介
- Pixhawk飞控代码(2019.11.28)
- Android 安卓动画 属性动画 - 渐变/透明度 动画
- 网络流量大数据分析平台(1)
- android 高德坐标对象,android: 高德地图