Householder
来源:互联网 发布:数控编程工资月薪过万 编辑:程序博客网 时间:2024/06/06 02:55
#include < stdio.h > #include < math.h > #define N 3 float Q[N][N],R[N][N],H[N][N];void printm(float a[N][N]) { int i, j; printf("\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (fabs(a[j]) <= 1e-5) a[j] = 0.0; printf("%-12.5g", a[j]); } printf("\n"); }}void Tm(float a[N][N]) { int i, j; float t; for (i = 0; i < N; i++) for (j = i + 1; j < N; j++) { t = a[j]; a[j] = a[j]; a[j] = t; }}void copym(float a[N][N], float b[N][N]) { int i, j; for (i = 0; i < N; i++) for (j = 0; j < N; j++) a[j] = b[j];}void mult2(float a[N][N], float b[N][N]) { int i, j, k; float t[N][N]; for (i = 0; i < N; i++) for (j = 0; j < N; j++) { t[j] = 0.0; for (k = 0; k < N; k++) t[j] += a[k] * b[k][j]; } copym(b, t);}void I(float a[N][N]) { int i, j; for (i = 0; i < N; i++) for (j = 0; j < N; j++) { if (i == j) a[j] = 1.0; else a[j] = 0.0; }}double arraym(float x[N]) { int i; double r; r = 0.0; for (i = 0; i < N; i++) r += (double)(x * x); r = sqrt(r); return r;}int Householder(int j) { int i, k; double r; float x[N]; for (i = 0; i < N; i++) x = 0.0; for (i = j; i < N; i++) x = R[j]; r = arraym(x); x[j] -= r; r = arraym(x); if (fabs(r) <= 1e-6) return 0; for (i = j; i < N; i++) x /= r; I(H); for (i = j; i < N; i++) for (k = j; k < N; k++) H[k] += x * x[k] * ( - 2); return 1;}void main() { int i, j, t; for (i = 0; i < N; i++) for (j = 0; j < N; j++) { printf("A[%d][%d]=", i + 1, j + 1); scanf("%f", &R[j]); } printf("\nA=\n"); printm(R); I(Q); for (j = 0; j < N - 1; j++) { t = Householder(j); if (t == 0) continue; mult2(H, R); mult2(H, Q); } Tm(Q); printf("Q=\n"); printm(Q); printf("R=\n"); printm(R);}
0 0
- Householder
- Householder relections
- Householder Reduction Matlab Version
- Householder 变换与 QR 分解
- QR分解之HouseHolder变换
- 矩阵分析之Householder Reduction
- 基于Householder变换的QR分解
- 基于Householder变换的约束自适应算法
- Householder变换将对称矩阵化为三对角形式
- 矩阵论基础知识2(正交、 Givens 变换、Householder变换)
- 【数值计算】householder矩阵的QR算法,求特征值
- 基于主元素思想的householder正交法解方程组
- Householder+QR法求解实对称矩阵全部特征值和特征向量(VC++)
- 基于主元素思想的Householder正交法解(矛盾)方程组
- Householder和Lanczos双对角化算法用R语言实现
- 自定义TimeButton验证码倒计时
- poj1837 01背包类型计数
- You have not concluded your merge (MERGE_HEAD exists)
- Ubuntu下mysql安装,登录
- VB.Net刷点击
- Householder
- 我的第一篇博客
- mysql事件调度器
- 第一篇博客:关于学堂在线的操作系统实验准备工作
- Hibernate.util
- 搜索引擎java实战
- FlowLayoutPanel控件
- NSCoding协议
- Linux2.6.32驱动笔记(2)字符设备驱动编程模型