并行计算课程考核
实验报告
考核题目?/p>
QR
分解算法的并行实?/p>
并行实现方式?/p>
OpenMP
1.
问题概述
QR
分解法是目前求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交
相似变化成为
householder
矩阵,然后再应用
QR
方法求特征值和特征向量。它是将矩阵?/p>
解成一个正规正交矩?/p>
Q
与上三角形矩?/p>
R
,所以称?/p>
QR
分解法?/p>
2.
串行代码描述
串行主要代码如下?/p>
#include
<stdio.h>
#include
<math.h>
#include
<stdlib.h>
#include
<time.h>
#define
n
100
//maxN
void
Matrix_print(
double
A
[
n
][
n
])
{
for
(
int
i=0;i<
n
;i++)
{
for
(
int
j=0;j<
n
;j++)
printf("%8.4lf\t",
A
[i][j]);
printf("\n");
}
}
double
Matrix_norm(
double
a
[
n
])
{
double
d=0;
for
(
int
i=0;i<
n
;i++)
d+=
a
[i]*
a
[i];
return
sqrt(d);
}
void
Matrix_multiply(
double
A
[
n
][
n
],
double
B
[
n
][
n
],
double
C
[
n
][
n
])
{
for
(
int
i=0;i<
n
;i++)
for
(
int
j=0;j<
n
;j++)
{
C
[i][j]=0;
for
(
int
t=0;t<
n
;t++)
C
[i][j]+=
A
[i][t]*
B
[t][j];
}