新建
上传
首页
助手
最?/div>
资料?/div>
工具

并行计算课程考核

 

实验报告

 

考核题目?/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]; 

 

 

} 

 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

并行计算课程考核

 

实验报告

 

考核题目?/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]; 

 

 

} 

 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

并行计算课程考核

 

实验报告

 

考核题目?/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]; 

 

 

} 

 

Ͼλ">
Ͼλ
Ŀ

QR分解实验报告.doc - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

并行计算课程考核

 

实验报告

 

考核题目?/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]; 

 

 

} 

 



ļ׺.doc޸Ϊ.docĶ

  • ERPU8ϵͳģ
  • ˽̰а꼶ʷϲ16ë󶫿پɽ·ѧ
  • ѧ7.1.1йص߶Ρ̰(˽̰꼶)
  • 2016-2022йĻҵҵչ״Ͷʷձ
  • ȫ°ѧӢڶ棩ۺϽ̳3ԭļUntil1-8
  • ѧϰ֮
  • ʦС2019߿һָϰ רǿѵ44
  • ͨð桿пרѵר(4)Ϣ()
  • ΢ԭԸϰ⼰ο
  • ֤ȯͶѧл

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)