北航数值分析计算实习报告一

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

航空航天大学

《数值分析》计算实习报告

第一大题

学院:自动化科学与电气工程学院

专业:控制科学与工程

学生姓名:

学号:

教师:

电话:

完成日期: 2015年11月6日

航空航天大学

Beijing University of Aeronautics and Astronautics

实习题目:

第一题 设有501501⨯的实对称矩阵A ,

⎥⎥⎥

⎥⎥⎥⎦

⎤⎢⎢⎢⎢⎢⎢⎣⎡=5011A a b c b c c b c b a

其中,064.0,16.0),501,,2,1(64.0)2.0sin()024.064.1(1

.0-==⋅⋅⋅=--=c b i e i i a i

i 。矩阵A 的特征值为)501,,2,1(⋅⋅⋅=i i λ,并且有

||min ||,501

150121i i s λλλλλ≤≤=≤⋅⋅⋅≤≤

1.求1λ,501λ和s λ的值。

2.求A 的与数40

1

5011λλλμ-+=k

k 最接近的特征值)39,,2,1(⋅⋅⋅=k k i λ。

3.求A 的(谱数)条件数2)A (cond 和行列式detA 。

说明:

1.在所用的算法中,凡是要给出精度水平ε的,都取12-10=ε。

2.选择算法时,应使矩阵A 的所有零元素都不储存。

3.打印以下容: (1)全部源程序;

(2)特征值),,39,...,2,1(,s 5011=k k i λλλλ以及A det ,)A (cond 2的值。 4.采用e 型输出实型数,并且至少显示12位有效数字。

一、算法设计方案

1、求1λ,501λ和s λ的值。

由于||min ||,501

150121i i s λλλλλ≤≤=≤⋅⋅⋅≤≤,可知绝对值最大特征值必为1λ和501

λ其中之一,故可用幂法求出绝对值最大的特征值λ,如果λ=0,则1λ=λ,否则

501λ=λ。将矩阵A 进行一下平移:

I -A A'λ= (1)

对'A 用幂法求出其绝对值最大的特征值'λ,则A 的另一端点特征值1λ或501λ为'λ+λ。

s λ为按模最小特征值,||min ||501

1i i s λλ≤≤=,可对A 使用反幂法求得。

2、求A 的与数40

1

5011λλλμ-+=k

k 最接近的特征值)39,...,2,1(=k k i λ。

计算1)1,2,...,50=(i i λ-k μ,其模值最小的值对应的特征值k λ与k μ最接近。因此对A 进行平移变换:

)39,,2,1k -A A k k ==(I μ (2)

对k A 用反幂法求得其模最小的特征值'k λ,则k λ='k λ+k μ。 3、求A 的(谱数)条件数2)(A cond 和行列式detA 。

由矩阵A 为非奇异对称矩阵可得:

|

|

)(min max

2λλ=A cond (3)

其中max λ为按模最大特征值,min λ为按模最小特征值,通过第一问我们求得的λ和s λ可以很容易求得A 的条件数。

在进行反幂法求解时,要对A 进行LU 分解得到。因L 为单位下三角阵,行

列式为1,U 为上三角阵,行列式为主对角线乘积,所以A 的行列式等于U 的行列式,为U 的主对角线的乘积。

二、 算法实现

1、矩阵存储

原矩阵A 为一个上、下半带宽都为2的501×501的带状矩阵,由于矩阵中的0元素太多,如果分配一个501×501的空间保存矩阵的话会浪费很多空间。因此,为了节省存储量,A 的带外元素不给存储,值存储带元素,如下C 矩阵所示:

⎥⎥⎥⎥⎥

⎥⎦

⎤⎢⎢⎢

⎢⎢

⎢⎣⎡=00

000050150049932

1c

c

c

c b b b b b a a a a a a b b

b b b

c c c c C

(4) C 是一个5×501的矩阵,相比A 大大节省了存储空间,在数组C 中检索矩阵A 的带元素ij a 的方法是:

j 1,s j -i c a A ++=中的元素的带内元素C ij (5)

2、幂法

幂法迭代公式如下:

⎪⎪⎪⎩⎪

⎪⎪⎨⎧====∈-------k T k k

k k k k k u y Ay u u y u u 111

k 11211k n

0/R βηη任取非零向量 (6)

其中λβ=∞

→k k lim ,不断迭代当εβββ≤--||/||1k k k 时即可认为其满足精度要求,令k βλ=。

在程序中计算1u -=k k Ay 时,根据A 矩阵的特点,简化如下:

⎪⎪⎪⎪

⎩⎪⎪⎪⎪

⎧⋅⋅⋅=+++++-+-=++=+++=+++=++=)

499,,3()

2()1()()()1()2()()501()500()499()501()

501()500()499()498()500()4()3()2()2(C )1()2()3()2()1(C )1(]

][3[]501][3[]500][3[]2][3[]1][3[i i cy i by i y i C i by i cy i u y C by cy u by y C by cy u cy by y by u cy by y u i (7)

3、反幂法

反幂法迭代公式如下:

⎪⎪⎪⎩⎪

⎪⎪⎨⎧====∈-------k

T k k k k k k k u y y Au u y u u 111

k 11211k n

0/R βηη任取非零向量 (8)

当k 足够大时,k

βλ1

s ≈

在求解1-=k k y Au 时,可先对A 进行Doolittle 分解,由于A 是带状结构,所以分解出的L 、U 也是带状结构,利用C 矩阵进行Doolittle 分解并求向量k u 的算法如下: (1)作分解A=LU

对于n ,,2,1k =执行:

)]

,min(,,2,1[/)(:)]

,min(,,1,[:,11

)

,,1max(,1,1,1,11

)

,,1max(,1,1,1,1n r k k k i c c

c

c c n s k k k j c

c

c c k

s k s k r i t k s k t t s t i k s k i k s k i k s j r k t j

s j t t s t k j s j k j s j k +++=-

=++=-

=+---=++-++-++-++----=++-++-++-++-∑∑ (9)

由于C 语言中数组下标是从0开始的,所以在程序中矩阵元素c 的下标都减1。

相关文档
最新文档