清华大学高等数值分析(李津)第二次实践作业

清华大学高等数值分析(李津)第二次实践作业
清华大学高等数值分析(李津)第二次实践作业

奇异值分解算法分析及利用SVD 进行图像压缩

报告提纲:

一、 奇异值分解 二、 SVD 算法 三、 实验过程 四、 实验结果分析

五、 SVD 法图像压缩及结果分析

奇异值分解

定义设m n A R ?∈,T A A 的特征值的非负平方根称作A 的奇异值;A 的奇异值的全

体记作()A σ。

当A 为复矩阵m n C ?时,只需将T A A 改为H A A ,定义仍然成立。 定理(奇异值分解定理)设m n A R ?∈,则必存在正交矩阵

[]1,...,m m m U u u R ?=∈和[]1,...,n n n V v v R ?=∈

使得

00

0r

T r n r

r

U AV m r

-∑

??=??-?? 其中11(,...,),...0r r r diag σσσσ∑=≥≥>[2]。

当A 为复矩阵m n C ?时,只需将定理中,U V 改为酉矩阵,其它不变,定理仍然成立。

奇异值分解通常简称为SVD ,i σ是A 的奇异值,向量i u 和i v 分别是第i 个左奇异向量和第i 个右奇异向量。

SVD 算法

1. QR 迭代算法

(1)输入()m n A R m n ?∈≥及允许误差ε.

(2)二对角化:计算Householder 变换1,,,n P P ???12,,n H H -???使得

112()(),0T

n n B n

P P A H H m n -????????=??

-??

其中12

00n n B δγγδ????

?

?=?????

? ; 12:,n U PP P =???122:.n V H H H -=???

具体算法,书面作业中题目具体解释。

(3)收敛性检验: (i )将所有满足

()

1j j j γεδδ-≤+

的j 置零;

(ii )如果0,2,,j j n γ==???,则输出有关信息结束;否则,1:0γ=,确定正整数p q <,使得

10p q n γγγ+==???==,0j γ≠,p j q <≤;

(iii )如果存在i 满足1p i q ≤≤-使得

i B δε∞≤,

则111:0,:,:,:0,:1i i i i x y l δγδγ+++=====,转步(iv ),否则转步(4). (iv )确定cos ,sin c s θθ==和σ使

0,c s x s c y σ??????

=??????-??????

//这也相对于,0T

c s y s c x σ??????

=????

??-??????

所以可以直接调用givens 变换算法得到

:,i l δσ+=:(,,);T U UG i i l θ=+

//这相当于

(1:;,)(1:;,)(1:;,);T

c s c s U n i i l U n i i l U n i i l s c s c -????

+=+=+????-????

(v )如果l q i <-,则

1:i l x s γ++=,11:i l i l c γγ++++=,1:i l y δ++=,:1l l =+, 转步(iv ),否则转步(i ).

(4)SVD 迭代:将书上的追赶法作用于二对角阵

1

12100p p p p q q B δγδγγδ+++??????

?

?=??

?

????? , 得

11:T B P B Q =,

:(,,)p n p q U Udiag I P I --=, :(,,)p n p q V Vdiag I Q I --=

然后转步(3)。

2. 分而治之

分而治之算法的第一步也和QR 迭代算法一样,先将矩阵二对角化得到二对角矩阵B ;然后将求B 的SVD 问题分为两个子问题。 先将B 写成如下的形式:

1

1200k k

k B B e e B αβ?? ?= ? ??

?

其中(1)1k k B R -?∈,()()2n k n k B R -?-∈为上二对角矩阵,j e 是相应维数的向量中的第j 个单位向量,并且一般我们取/2k n =????。 现在假如我们已经求得了1B ,2B 的SVD 如下:

()11110T B Q D W =,2222T B Q D W =

并且令()11T l λ为1W 的最后一行,2T f 为2W 的第一行。那么将这些带入B ,我们

可以得到:

111

11

2222000

000100000

T

T

T k k k Q D W B l f W Q D ααλβ?????? ???= ? ????? ????

???

可以看出中间的矩阵形式上很简单,除了对角元素和第k 行上的元素,其它元素都为0;这里先把它的SVD 的计算问题放到最后,而假定已知其SVD 为:T S G ∑,将它带入上式,就可以得到B 的SVD 分解式:

T B Q W =∑

其中

1

20

00

1000Q Q S Q ??

?

= ? ??

?;1200W W G W ??= ??? 而计算1B ,2B 的SVD 时也可递归地应用这种办法,至到子问题足够得小。

3. 单边雅克比迭代法

虽然以上两种方法都可以对二对角矩阵求出具有很高的相对精度的奇异值和奇异值分解式;但是将一个稠密矩阵二对角化这个过程却可能会造成很大的相对误差[17]。所以所有基于先将矩阵二对角化的SVD 方法都不可能具有可靠的良好的相对精确度。以下所要介绍的Jacobi 方法和这些方法完全不同,它通过一系列平面旋转(一般文献中在介绍Jacobi 方法时为了方便也将平面旋转称为Jacobi 变换);最终使得矩阵收敛于一个对角矩阵:

(1)()(0),0,1,2,...()k k k G G J k G G +==≡

其中每一个k J 设计成,使得对于一对选定的指标(,)k k p q ,有如下式子成立:

(1)(1),(())0k k k T k p q G G ++=

最终收敛时,令()0lim ,k k k k G G V J ∞∞=→∞

==∏,有G GV ∞=,且G ∞具有互相正交的列

向量,可以将G ∞写成?G U

∞=∑,其中∑为对角矩阵,?U 为正交矩阵;从而得到原矩阵的SVD 分解式。

在Jacobi 算法中,令000G B D =是最初的矩阵,m m m G B D =是1m G -经过一次Jacobi 旋转过得到的矩阵,其中m D 为对角矩阵,m B 是列向量范数全为1的矩阵。可以知道对G BD =进行单边的Jacobi 变换相当于对矩阵

T T H G G DB BD DAD ===进行双边的Jacobi 变换。

实验过程

针对以上三种SVD 算法用matlab 进行数值模拟,三个算法源自NAG matlab 工具箱(第24版,64bit ),分别为f08kb (QR 迭代),f08kd (分而治之)和f08kj (单边雅克比迭代)。

实验中选出10个矩阵(大小1200×960,将图像压缩应用的5张图片每张图片一分为二得到10个矩阵)对每种算法的内存占用量、运算时间、最小特征值误差,以及左特征向量和右特征向量的计算误差进行了计算,并得到了相应的曲线图。特征向量的误差通过()T U U I -和()T V V I -列向量范数的均方误差来评估。至于最小特征值误差,默认matlab 自带的svd 算法得到的结果是“准确”的,作为参考标准。事实上,无法得到准确的特征值,用matlab 自带svd 作为标准严格来说也是不准确的。

图片文件为附件中的image1.jpg ,image2.jpg ,image3.jpg ,image,4.jpg ,image,5.jpg 。

实验结果分析

下面对算法的内存使用,计算速度,最小特征值精度,奇异向量误差进行了比较,各图中红色曲线为QR 迭代法,绿色代表分而治之方法,蓝色代表单边雅克比方法。

1. 内存使用

很明显,分而治之内存占用最少,大概而QR 迭代的一半,雅克比最大,大概比QR 迭代多占用一半的内存。

2.计算时间

计算时间上,分而治之最快,QR迭代次之,单边雅克比法最慢,花费时间大概是传统QR的十倍,是分而治之的20倍。

3.最小特征值精度

从图中可以看到,传统QR算法和分而治之的最小奇异值几乎是完全一样的,而单边雅克比则不同,计算精度上没有明显的差别,但雅克比计算结果温度,而另外两种则抖动相对较大。对各误差求和得到三种算法的误差和分别为2.8363e-15,3.2270e-15和1.9147e-15,相比之下,雅克比算法精度最高,传统QR算法次之,分而治之精度最差,原因在

报告第一部分已经提及,但三者差别并不明显。由于计算过程中的系统

精度为 2.2204e-16,显然实验得到的最小奇异值的误差大概在系统精度

的5~10倍。

4.左奇异向量误差

奇异向量误差上来看,分而治之最小,这与分而治之的算法原理一致,矩阵越

小计算的正交阵正交度越高。而雅克比的奇异向量的误差相对来说就要大得多,大概为传统QR迭代的5倍。

5.右奇异向量误差

右奇异向量误差的规律和左奇异向量一致,但总体误差更小,因为右奇异向量就是计算中的特征向量,且矩阵阶数小,而左奇异向量是通

过奇异值和特征向量反推得到的,故精度要差。

总体来说,传统QR方法程序简单,但占用内存大,在计算精度和运算速度方面居中。

分而治之的方法在内存占用和运算速度方面占有绝对优势,计算精度方面,奇异值精度没有传统QR好,但左右奇异向量的正交性要好于

传统QR方法。

单边雅克比方法的奇异值计算精度方面有优势,内存占用居中,但奇异向量的正交性差,运算速度相比前两种方法慢一个数量级。

实际应用中,根据需要选择特定的SVD算法。

注:图像数据在附件中。

SVD法图像压缩

实验中所用照片为附件中image1.jpg,image2.jpg,image3.jpg,image,4.jpg,image,5.jpg。首先将彩色图片灰度化,得到两维的矩阵(1200×1920),采用matlab 自带的svd算法进行奇异值分解。取前l项奇异值和奇异向量的乘积求和得到的图像成为前l项压缩,l取20、80、300,给出压缩后的图像,并进行比较。以狗的照片为例分析,另外4张图像类似,见附件。

可以看到,l=20时有明显的不清晰,就连光滑的背景都有明显的杂点;l=80时已经很清晰了,但放大看仍有噪点和部分细节分辨率下降;而l=300时就几乎和原图的清晰度一样了。

SVD压缩事实上是一种有损压缩,压缩过程中丢掉了图片的大量信息,这些信息有可能是一些重要的细节。

附件清单

1.程序清单(main.m,SVDfun.m)

2.原彩色图片五张

3.实验得到的图片20张(每个图4张)

4.计算部分中的图像数据(matlab data.mat)

李庆扬数值分析第五版习题复习资料清华大学出版社

第一章 绪论 1.设0x >,x 的相对误差为δ,求ln x 的误差。 解:近似值* x 的相对误差为* **** r e x x e x x δ-= = = 而ln x 的误差为()1 ln *ln *ln ** e x x x e x =-≈ 进而有(ln *)x εδ≈ 2.设x 的相对误差为2%,求n x 的相对误差。 解:设()n f x x =,则函数的条件数为'() | |() p xf x C f x = 又1 '()n f x nx -=Q , 1 ||n p x nx C n n -?∴== 又((*))(*)r p r x n C x εε≈?Q 且(*)r e x 为2 ((*))0.02n r x n ε∴≈ 3.下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指 出它们是几位有效数字:*1 1.1021x =,*20.031x =, *3385.6x =, *456.430x =,* 57 1.0.x =? 解:* 1 1.1021x =是五位有效数字; *20.031x =是二位有效数字; *3385.6x =是四位有效数字; *456.430x =是五位有效数字; *57 1.0.x =?是二位有效数字。 4.利用公式(2.3)求下列各近似值的误差限:(1) ***124x x x ++,(2) ***123x x x ,(3) **24/x x . 其中**** 1234,,,x x x x 均为第3题所给的数。 解:

*4 1* 3 2* 13* 3 4* 1 51()1021()1021()1021()1021()102 x x x x x εεεεε-----=?=?=?=?=? *** 124***1244333 (1)()()()() 1111010102221.0510x x x x x x εεεε----++=++=?+?+?=? *** 123*********123231132143 (2)() ()()() 111 1.10210.031100.031385.610 1.1021385.610222 0.215 x x x x x x x x x x x x εεεε---=++=???+???+???≈ ** 24**** 24422 *4 33 5 (3)(/) ()() 11 0.0311056.430102256.43056.430 10x x x x x x x εεε---+≈ ??+??= ?= 5计算球体积要使相对误差限为1,问度量半径R 时允许的相对误差限是多少? 解:球体体积为343 V R π= 则何种函数的条件数为 2 3'4343 p R V R R C V R ππ===g g (*)(*)3(*)r p r r V C R R εεε∴≈=g 又(*)1r V ε=Q

北师大网络教育 数值分析 期末试卷含答案

注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分,若考北师大网络教育——数值分析——期末考试卷与答案 一.填空题(本大题共4小题,每小题4分,共16分) 1.设有节点012,,x x x ,其对应的函数()y f x =的值分别为012,,y y y ,则二次拉格朗日插值基函数0()l x 为 。 2.设()2f x x =,则()f x 关于节点0120,1,3x x x ===的二阶向前差分为 。 3.设110111011A -????=--????-??,233x ?? ??=?? ???? ,则1A = ,1x = 。 4. 1n +个节点的高斯求积公式的代数精确度为 。 二.简答题(本大题共3小题,每小题8分,共24分) 1. 哪种线性方程组可用平方根法求解?为什么说平方根法计算稳定? 2. 什么是不动点迭代法?()x ?满足什么条件才能保证不动点存在和不动点迭代序列收敛于()x ?的不动点? 3. 设n 阶矩阵A 具有n 个特征值且满足123n λλλλ>≥≥≥ ,请简单说明求解矩阵A 的主特征值和特征向量的算法及流程。 三.求一个次数不高于3的多项式()3P x ,满足下列插值条件: i x 1 2 3 i y 2 4 12 i y ' 3 并估计误差。(10分) 四.试用1,2,4n =的牛顿-科特斯求积公式计算定积分1 01 1I dx x =+? 。(10分) 五.用Newton 法求()cos 0f x x x =-=的近似解。(10分) 六.试用Doolittle 分解法求解方程组:

注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分,若考 12325610413191963630 x x x -?????? ??????-=?????? ??????----?????? (10分) 七.请写出雅可比迭代法求解线性方程组1231231 23202324 812231530 x x x x x x x x x ++=?? ++=??-+=? 的迭代格式,并 判断其是否收敛?(10分) 八.就初值问题0(0)y y y y λ'=??=?考察欧拉显式格式的收敛性。(10分)

北航数值分析大作业一

《数值分析B》大作业一 SY1103120 朱舜杰 一.算法设计方案: 1.矩阵A的存储与检索 将带状线性矩阵A[501][501]转存为一个矩阵MatrixC[5][501] . 由于C语言中数组角标都是从0开始的,所以在数组MatrixC[5][501]中检索A的带内元素a ij的方法是: A的带内元素a ij=C中的元素c i-j+2,j 2.求解λ1,λ501,λs ①首先分别使用幂法和反幂法迭代求出矩阵按摸最大和最小的特征值λmax和λmin。λmin即为λs; 如果λmax>0,则λ501=λmax;如果λmax<0,则λ1=λmax。 ②使用带原点平移的幂法(mifa()函数),令平移量p=λmax,求 出对应的按摸最大的特征值λ,max, 如果λmax>0,则λ1=λ,max+p;如果λmax<0,则λ501=λ,max+p。 3.求解A的与数μk=λ1+k(λ501-λ1)/40的最接近的特征值λik (k=1,2,…,39)。 使用带原点平移的反幂法,令平移量p=μk,即可求出与μk最接近的特征值λik。 4.求解A的(谱范数)条件数cond(A)2和行列式d etA。 ①cond(A)2=|λ1/λn|,其中λ1和λn分别是矩阵A的模最大和 最小特征值。

②矩阵A的行列式可先对矩阵A进行LU分解后,detA等于U所有对角线上元素的乘积。 二.源程序 #include #include #include #include #include #include #include #define E 1.0e-12 /*定义全局变量相对误差限*/ int max2(int a,int b) /*求两个整型数最大值的子程序*/ { if(a>b) return a; else return b; } int min2(int a,int b) /*求两个整型数最小值的子程序*/ { if(a>b) return b; else return a; } int max3(int a,int b,int c) /*求三整型数最大值的子程序*/ { int t; if(a>b) t=a; else t=b; if(t

清华大学高等数值计算(李津)实践题目一(共轭梯度CG法,Lanczos算法与MINRES算法)

高等数值计算实践题目一 1. 实践目的 本次计算实践主要是在掌握共轭梯度法,Lanczos 算法与MINRES 算法的基础上,进一步探讨这3种算法的数值性质,主要研究特征值特征向量对算法收敛性的影响。 2. 实践过程 (一)生成矩阵 (1)作5个100阶对角阵i D 如下: 1D 对角元:1,1,...,20,1+0.1(-20),21,...,100j j d j d j j ==== 2D 对角元:1,1,...,20,1+(-20),21,...,100j j d j d j j ==== 3D 对角元:,1,...,80,81,81,...,100j j d j j d j ==== 4D 对角元:,1,...,40,41,41,...,60,41+(60),61,...,100j j j d j j d j d j j =====-= 5D 对角元:,1,...,100j d j j == 记i D 的最大模特征值和最小模特征值分别为1i λ和i n λ,则i D 特征值分布有如下特点: 1D 的特征值有较多接近于i n λ,并且1/i i n λλ较小, 2D 的特征值有较多接近于i n λ,并且1/i i n λλ较大, 3D 的特征值有较多接近于1i λ,并且1/i i n λλ较大, 4D 的特征值有较多接近于中间模特征值,并且1/i i n λλ较大, 5D 的特征值均匀分布,并且1/i i n λλ较大 (2)随机生成10个100阶矩阵j M : (100(100))j M fix rand = 并作它们的QR 分解,得j Q 和j R ,这样可得50个对称的矩阵T ij j i j A Q DQ =,其中i D 的对角元就是ij A 的特征值,若它们都大于0,则ij A 正定,j Q 的列就是相应的特征向量。结合(1)可知,ij A 都是对称正定阵。

(完整版)数值分析第一次作业

问题1:20.给定数据如下表: 试求三次样条插值S(x),并满足条件 (1)S`(0.25)=1.0000,S`(0.53)=0.6868; (2)S ’’(0.25)=S ’’(0.53)=0。 分析:本问题是已知五个点,由这五个点求一三次样条插值函数。边界条件有两种,(1)是 已知一阶倒数,(2)是已知自然边界条件。 对于第一种边界(已知边界的一阶倒数值),可写出下面的矩阵方程。 ????????????????=???????? ?? ??? ???????????????????4321043210343 22 110d M M M M M 2000200 00 02 002 2d d d d λμμλμλμλ 其中μj = j 1-j 1-j h h h +,λi= j 1-j j h h h +,dj=6f[x j-1,x j ,x j+1], μn =1,λ0=1 对于第一种边界条件d 0= 0h 6(f[x 0,x 1]-f 0`),d n =1 -n h 6 (f`n-f `[x n-1,x n ]) 解:由matlab 计算得: 由此得矩阵形式的线性方程组为: ? ? ????????????=???????????????????????? ?????? 2.1150-2.4286-3.2667-4.3143-5.5200-M M M M M 25714.0000 120 4286.0000 04000.02 6000.0006429.023571.00 012 43210 解得 M 0=-2.0286;M 1=-1.4627;M 2= -1.0333; M 3= -0.8058; M 4=-0.6546 S(x)= ??? ????∈-+-+-∈-+-+-∈-+-+-∈-+-+-]53.0,45.0[x 5.40x 9.1087x 35.03956.8.450-x 1.3637-x .5301.67881- ]45.0,39.0[x 9.30x 11.188x 54.010.418793.0-x 2.2384 -x .450(2.87040-]39.0,30.0[x 03.0x 6.9544x 9.30 6.107503.0-x 1.9136-x .3902.708779 -]30.0,25.0[x 5.20x 10.9662x 0.3010.01695.20-x 4.8758-x .3006.76209-333 33 33 3),()()()(),()()()),()()()(),()()()( Matlab 程序代码如下:

数值分析作业答案

数值分析作业答案 插值法 1、当x=1,-1,2时,f(x)=0,-3,4,求f(x)的二次插值多项式。 (1)用单项式基底。 (2)用Lagrange插值基底。 (3)用Newton基底。 证明三种方法得到的多项式是相同的。 解:(1)用单项式基底 设多项式为: , 所以: 所以f(x)的二次插值多项式为: (2)用Lagrange插值基底 Lagrange插值多项式为: 所以f(x)的二次插值多项式为: (3) 用Newton基底: 均差表如下: xk f(xk) 一阶均差二阶均差 1 0 -1 -3 3/2 2 4 7/ 3 5/6 Newton插值多项式为: 所以f(x)的二次插值多项式为: 由以上计算可知,三种方法得到的多项式是相同的。 6、在上给出的等距节点函数表,若用二次插值求ex的近似值,要使截断误差不超过10-6,问使用函数表的步长h应取多少? 解:以xi-1,xi,xi+1为插值节点多项式的截断误差,则有 式中 令得 插值点个数

是奇数,故实际可采用的函数值表步长 8、,求及。 解:由均差的性质可知,均差与导数有如下关系: 所以有: 15、证明两点三次Hermite插值余项是 并由此求出分段三次Hermite插值的误差限。 证明:利用[xk,xk+1]上两点三次Hermite插值条件 知有二重零点xk和k+1。设 确定函数k(x): 当或xk+1时k(x)取任何有限值均可; 当时,,构造关于变量t的函数 显然有 在[xk,x][x,xk+1]上对g(x)使用Rolle定理,存在及使得 在,,上对使用Rolle定理,存在,和使得 再依次对和使用Rolle定理,知至少存在使得 而,将代入,得到 推导过程表明依赖于及x 综合以上过程有: 确定误差限: 记为f(x)在[a,b]上基于等距节点的分段三次Hermite插值函数。在区间[xk,xk+1]上有 而最值 进而得误差估计: 16、求一个次数不高于4次的多项式,使它满足,,。

北航数值分析大作业第一题幂法与反幂法

《数值分析》计算实习题目 第一题: 1. 算法设计方案 (1)1λ,501λ和s λ的值。 1)首先通过幂法求出按模最大的特征值λt1,然后根据λt1进行原点平移求出另一特征值λt2,比较两值大小,数值小的为所求最小特征值λ1,数值大的为是所求最大特征值λ501。 2)使用反幂法求λs ,其中需要解线性方程组。因为A 为带状线性方程组,此处采用LU 分解法解带状方程组。 (2)与140k λλμλ-5011=+k 最接近的特征值λik 。 通过带有原点平移的反幂法求出与数k μ最接近的特征值 λik 。 (3)2cond(A)和det A 。 1)1=n λλ2cond(A),其中1λ和n λ分别是按模最大和最小特征值。 2)利用步骤(1)中分解矩阵A 得出的LU 矩阵,L 为单位下三角阵,U 为上三角阵,其中U 矩阵的主对角线元素之积即为det A 。 由于A 的元素零元素较多,为节省储存量,将A 的元素存为6×501的数组中,程序中采用get_an_element()函数来从小数组中取出A 中的元素。 2.全部源程序 #include #include void init_a();//初始化A double get_an_element(int,int);//取A 中的元素函数 double powermethod(double);//原点平移的幂法 double inversepowermethod(double);//原点平移的反幂法 int presolve(double);//三角LU 分解 int solve(double [],double []);//解方程组 int max(int,int); int min(int,int); double (*u)[502]=new double[502][502];//上三角U 数组 double (*l)[502]=new double[502][502];//单位下三角L 数组 double a[6][502];//矩阵A int main() { int i,k; double lambdat1,lambdat2,lambda1,lambda501,lambdas,mu[40],det;

数值分析作业

第二章 1. 题目:运用MATLAB编程实现牛顿迭代 2. 实验操作 1、打开MATLAB程序软件。 2、在MATLAB中编辑如下的M程序。 function [p1,err,k,y]=newton(f,df,p0,delta,max) %f 是要求根的方程(f(x)=0); %df 是f(x)的导数; %p0是所给初值,位于x*附近; %delta是给定允许误差; %max是迭代的最大次数; %p1是newton法求得的方程的近似解; %err是p0的误差估计; %k是迭代次数; p0 for k=1:max p1=p0-feval('f',p0)/feval('df',p0); err=abs(p1-p0); p0=p1; k p1 err y=feval('f',p1) if (err> newton('f','df',1.2,10^(-6),20) 3.实验结果

p0 = 1.2000 k =1 p1=1.1030 err=0.0970 y=0.0329 k= 2 p1=1.0524 err=0.0507 y=0.0084 k =3 p1=1.0264 err=0.0260 y=0.0021 k =4 p1=1.0133 err=0.0131 y=5.2963e-004 k =5 p1=1.0066 err=0.0066 y=1.3270e-004 k =6 p1=1.0033 err=0.0033 y=3.3211e-005 k =7 p1=1.0017 err=0.0017 y=8.3074e-006 k =8 p1=1.0008 err=8.3157e-004 y = 2.0774e-006 k =9 p1=1.0004 err=4.1596e-004 y =5.1943e-007 k=10 p1=1.0002 err=2.0802e-004 y= 1.2987e-007 k=11 p1=1.0001 err=1.0402e-004 y =3.2468e-008 k=12 p1=1.0001 err=5.2014e-005 y=8.1170e-009 k=13 p1=1.0000 err=2.6008e-005 y= 2.0293e-009 k=14 p1=1.0000 err=1.3004e-005 y=5.0732e-010 k=15 p1 =1.0000 err=6.5020e-006 y=1.2683e-010 k=16 p1 =1.0000 err=3.2510e-006 y=3.1708e-011 k=17 p1 =1.0000 err=1.6255e-006 y =7.9272e-012 k=18 p1 =1.0000 err =8.1279e-007 y= 1.9820e-012 ans = 1.0000 结果说明:经过18次迭代得到精确解为1,误差为8.1279e-007。

北航数值分析报告第三次大作业

数值分析第三次大作业 一、算法的设计方案: (一)、总体方案设计: x y当作已知量代入题目给定的非线性方程组,求(1)解非线性方程组。将给定的(,) i i

得与(,)i i x y 相对应的数组t[i][j],u[i][j]。 (2)分片二次代数插值。通过分片二次代数插值运算,得到与数组t[11][21],u[11][21]]对应的数组z[11][21],得到二元函数z=(,)i i f x y 。 (3)曲面拟合。利用x[i],y[j],z[11][21]建立二维函数表,再根据精度的要求选择适当k 值,并得到曲面拟合的系数矩阵C[r][s]。 (4)观察和(,)i i p x y 的逼近效果。观察逼近效果只需要重复上面(1)和(2)的过程,得到与新的插值节点(,)i i x y 对应的(,)i i f x y ,再与对应的(,)i i p x y 比较即可,这里求解 (,)i i p x y 可以直接使用(3)中的C[r][s]和k 。 (二)具体算法设计: (1)解非线性方程组 牛顿法解方程组()0F x =的解* x ,可采用如下算法: 1)在* x 附近选取(0) x D ∈,给定精度水平0ε>和最大迭代次数M 。 2)对于0,1, k M =执行 ① 计算() ()k F x 和()()k F x '。 ② 求解关于() k x ?的线性方程组 () ()()()()k k k F x x F x '?=- ③ 若() () k k x x ε∞∞ ?≤,则取*()k x x ≈,并停止计算;否则转④。 ④ 计算(1) ()()k k k x x x +=+?。 ⑤ 若k M <,则继续,否则,输出M 次迭代不成功的信息,并停止计算。 (2)分片双二次插值 给定已知数表以及需要插值的节点,进行分片二次插值的算法: 设已知数表中的点为: 00(0,1,,) (0,1,,)i j x x ih i n y y j j m τ=+=???=+=?? ,需要插值的节点为(,)x y 。 1) 根据(,)x y 选择插值节点(,)i j x y : 若12h x x ≤+ 或12 n h x x ->-,插值节点对应取1i =或1i n =-,

数值分析大作业三四五六七完整版

数值分析大作业三四五 六七 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

大 作 业 三 1. 给定初值 0x 及容许误差 ,编制牛顿法解方程f (x )=0的通用 程序. 解:Matlab 程序如下: 函数m 文件: function Fu=fu(x) Fu=x^3/3-x; end 函数m 文件: function Fu=dfu(x) Fu=x^2-1; end 用Newton 法求根的通用程序 clear; x0=input('请输入初值x0:'); ep=input('请输入容许误差:'); flag=1; while flag==1 x1=x0-fu(x0)/dfu(x0); if abs(x1-x0)

end m=m+1; x0=x1; end if flag1==1||abs(x0)>=ep flag=0; end end fprintf('最大的sigma 值为:%f\n',sigma); 2.求下列方程的非零根 5130.6651()ln 05130.665114000.0918 x x f x x +?? =- = ?-???解:Matlab 程序为: (1)主程序 clear clc format long x0=765; N=100; errorlim=10^(-5); x=x0-f(x0)/subs(df(),x0); n=1; while nerrorlim n=n+1; else break ; end x0=x; end disp(['迭代次数: n=',num2str(n)]) disp(['所求非零根: 正根x1=',num2str(x),' 负根x2=',num2str(-x)]) (2)子函数 非线性函数f function y=f(x) y=log((513+*x)/*x))-x/(1400*; end (3)子函数 非线性函数的一阶导数df function y=df() syms x1 y=log((513+*x1)/*x1))-x1/(1400*; y=diff(y);

清华大学贾仲孝老师高等数值分析报告第二次实验

高等数值分析第二次实验作业

T1.构造例子特征值全部在右半平面时, 观察基本的Arnoldi 方法和GMRES 方法的数值性态, 和相应重新启动算法的收敛性. Answer: (1) 构造特征值均在右半平面的矩阵A : 根据实Schur 分解,构造对角矩阵D 由n 个块形成,每个对角块具有如下形式,对应一对特 征值i i i αβ± i i i i i S αββα-?? = ??? 这样D=diag(S 1,S 2,S 3……S n )矩阵的特征值均分布在右半平面。生成矩阵A=U T AU ,其中U 为 正交阵,则A 矩阵的特征值也均在右半平面。不妨构造A 如下所示: 2211112222 /2/2/2/2N N A n n n n ?-?? ? ? ?- ? = ? ? ? - ? ?? ? 由于选择初值与右端项:x0=zeros(2*N,1);b=ones(2*N,1); 则生成矩阵A 的过程代码如下所示: N=500 %生成A 为2N 阶 A=zeros(2*N); for a=1:N A(2*a-1,2*a-1)=a; A(2*a-1,2*a)=-a; A(2*a,2*a-1)=a; A(2*a,2*a)=a; end U = orth(rand(2*N,2*N)); A1 = U'*A*U; (2) 观察基本的Arnoldi 和GMRES 方法 编写基本的Arnoldi 函数与基本GMRES 函数,具体代码见附录。 function [x,rm,flag]=Arnoldi(A,b,x0,tol,m) function [x,rm,flag]=GMRES(A,b,x0,tol,m) 输入:A 为方程组系数矩阵,b 为右端项,x0为初值,tol 为停机准则,m 为人为限制的最大步数。 输出:x 为方程的解,rm 为残差向量,flag 为解是否收敛的标志。 外程序如下所示: e=1e-6; m=700;

数值分析作业一

数值分析作业一 习题 9: 解:求1 0(arccos )n I x dx =?的稳定递推公式 21/20/2/2 100n 1n 2~00001()/221101221y=x=cosy dx=-sinydy x [0,/2] I siny.cos .n.cosy..(/2)-n(n-1)I =(1)!E (n )(1)(n 1)!E (n n n n n n n n n y dy y y y dy n I E I I E n E πππππ---+∈==-+=-=-=--??令arccosx ,则有,其中则的误差可以设为,根据误差的传递可得: 其中为偶数;同理,其中22n 2n )n 11I =I +(/2)(n 1)1 n n n π-----为奇数。所以误差随着的变大而逐渐累加,顾不是稳定递推公式。 可求得稳定递推公式为: 习题10: 求 的稳定递推公式: 解: 1n 1011......(1)44c =-(-)44 1)c>4n 41c c 2c<4n c=n n n n n n n c I n c E E I n ---+==+=求的递推公式为I 则有E ,根据误差的传递可得E 讨论:当时,递推公式(1)属于病态问题,即误差随增加而增加,所以递推公式要变为I )当时,误差随增加而变小,所以递推公式(1)是稳定的 3)当4时,误差不变,递推公式(1)是稳定的。 n n x I dx x c 1 04=+?

实验题 程序: ess=input('Enter the number of ess:'); ve=zeros(1,21); ve(2)=ess; y=roots(poly(1:20)+ve) plot(y) 1.当ess取值大于0.00000000001时会出现“复数”根。表明有些解对如此扰动敏感性较大。 2.当将方程(1.2)中的扰动项改成18x 或其它形式,实验中不会出现“复数”根,各跟的抗干扰性变强。 思考题一程序如下 ess=input('Enter the number of ess:'); ve=zeros(1,21); ve(3)=ess; y=solve(poly2sym(poly(1:20)+ve),'x') plot(y) 输入不同的ess值发现各根的精确度变高,干扰也变大。 思考题二程序如下: Y=0.1;i=1; n=input('Enter the limit value:'); while i

北航数值分析大作业第二题精解

目标:使用带双步位移的QR 分解法求矩阵10*10[]ij A a =的全部特征值,并对其中的每一个实特征值求相应的特征向量。已知:sin(0.50.2)() 1.5cos( 1.2)(){i j i j ij i j i j a +≠+== (i,j=1,2, (10) 算法: 以上是程序运作的逻辑,其中具体的函数的算法,大部分都是数值分析课本上的逻辑,在这里特别写出矩阵A 的实特征值对应的一个特征向量的求法: ()[]()() []()[]()111111I 00000 i n n n B A I gause i n Q A I u Bu u λλ-?-?-=-?-?? ?-=????→=??????→= ?? ? 选主元的消元 检查知无重特征值 由于=0i A I λ- ,因此在经过选主元的高斯消元以后,i A I λ- 即B 的最后一行必然为零,左上方变 为n-1阶单位矩阵[]()()11I n n -?-,右上方变为n-1阶向量[]()11n Q ?-,然后令n u 1=-,则 ()1,2,,1j j u Q j n ==???-。

这样即求出所有A所有实特征值对应的一个特征向量。 #include #include #include #define N 10 #define E 1.0e-12 #define MAX 10000 //以下是符号函数 double sgn(double a) { double z; if(a>E) z=1; else z=-1; return z; } //以下是矩阵的拟三角分解 void nishangsanjiaodiv(double A[N][N]) { int i,j,k; int m=0; double d,c,h,t; double u[N],p[N],q[N],w[N]; for(i=0;i

(完整版)《数值计算方法》试题集及答案

《数值计算方法》复习试题 一、填空题: 1、????? ?????----=410141014A ,则A 的LU 分解为 A ??? ?????????=? ?????????? ?。 答案: ?? ????????--??????????--=1556141501 4115401411A 2、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得 ?≈3 1 _________ )(dx x f ,用三点式求得≈')1(f 。 答案:2.367,0.25 3、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数为 , 拉格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 4、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 5、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); 答案 )(1)(1n n n n n x f x f x x x '--- =+ 6、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 7、计算方法主要研究( 截断 )误差和( 舍入 )误差; 8、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b );

9、求解一阶常微分方程初值问题y '= f (x ,y ),y (x 0)=y 0的改进的欧拉公式为 ( )] ,(),([2111+++++=n n n n n n y x f y x f h y y ); 10、已知f (1)=2,f (2)=3,f (4)=5.9,则二次Newton 插值多项式中x 2系数为( 0.15 ); 11、 两点式高斯型求积公式?1 d )(x x f ≈( ?++-≈1 )] 321 3()3213([21d )(f f x x f ),代数精 度为( 5 ); 12、 解线性方程组A x =b 的高斯顺序消元法满足的充要条件为(A 的各阶顺序主子式均 不为零)。 13、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该表 达式改写为 11 ,))64(3(10-= -++=x t t t t y ,为了减少舍入误差,应将表达式 19992001-改写为 199920012 + 。 14、 用二分法求方程01)(3 =-+=x x x f 在区间[0,1]内的根,进行一步后根的所在区间 为 0.5,1 ,进行两步后根的所在区间为 0.5,0.75 。 15、 计算积分?1 5 .0d x x ,取4位有效数字。用梯形公式计算求得的近似值为 0.4268 , 用辛卜生公式计算求得的近似值为 0.4309 ,梯形公式的代数精度为 1 ,辛卜生公式的代数精度为 3 。 16、 求解方程组?? ?=+=+042.01532121x x x x 的高斯—塞德尔迭代格式为 ?????-=-=+++20/3/)51()1(1)1(2)(2)1(1 k k k k x x x x ,该迭 代格式的迭代矩阵的谱半径)(M ρ= 121 。 17、 设46)2(,16)1(,0)0(===f f f ,则=)(1x l )2()(1--=x x x l ,)(x f 的二次牛顿

数值分析作业

数 值 分 析 作 业 ——非线性方程的求解方法与分析 学院: 学号: 姓名:

本文主要阐述了五种非线性方程的求解方法,分别为二分法、简易牛顿法、牛顿迭代法、牛顿下山法与弦截法。并分别对五种求解方法的计算结果进行了相应地分析。二分法运用函数有根区间中点与端点的函数值,缩小根区间,从而得到较快的收敛速度。牛顿迭代法,是一种常见的求解具有单重零点的非线性方程的数值方法,具有局部二阶收敛性。简易牛顿法便是简化的牛顿迭代法,将迭代点的导数值固定为初始值点的导数值,从而简化计算次数。牛顿下山法,为避免初值选取不当而使得迭代不收敛而在牛顿迭代法改进的方法。弦截法,克服了牛顿迭代法需求零点处函数导数的缺点,使用两次迭代点的差商替代了函数的导数值。本文非线性方程的求解方法均运用MATLAB编程及实现。 关键词:非线性方程;二分法;牛顿迭代法;牛顿下山法;弦截法

第一章非线性方程 (1) 非线性方程简介 (1) 非线性方程求解方法简介 (1) 二分法 (1) 牛顿迭代法 (2) 牛顿下山法 (4) 简易牛顿法 (4) 弦截法 (5) 第二章计算机配置 (7) 处理器 (7) 存储设备 (7) 显卡 (8) 显示屏 (8) 操作系统 (8) 第三章算法的MATLAB实现及结果分析 (9) 二分法 (9) 牛顿迭代法 (12) 简易牛顿法 (15) 牛顿下山法 (18) 弦截法 (21) 结论 (25)

第一章 非线性方程 非线性方程简介 非线性方程,就是因变量与自变量之间的关系不是线性关系。 在永恒变化发展的自然界与人类社会中,在研究其内部规律的各个科学领域中,更深刻、更精确地描述其内部规律的数学工具之一,就是非线性方程。非线性代数是研究大规模离散数据的运算处理与内在性状的数学科学。科学技术离不开数据处理与数据分析,因此非线性代数具有非常广泛的应用,在力学、化学、生命科学、控制理论等众多科学领域中,非线性方程早已屡见不鲜。因此,非线性方程的求解就显得愈加重要。然而求解非线性方程有很多种方法,每种方法都有自己的优缺点。 非线性方程求解方法简介 求函数零解作为数学研究领域的一个热点已经延续了几百余年,所以已经建立了许多种方法,拥有比较完备的求解体系。本文中,主要介绍非线性方程求解方法中最常用也是比较简单的几种方法。 在解决实际问题的中,大都会遇到非线性方程或非线性方程组的数学模型,这类方程的求解用一般的代数方法求解是不可能实现的。所以,在解决这类问题的时候,多是将求零解转化为求近似解。 二分法 若)(x f 是区间[]b a ,上的连续函数,且0)()(

北航数值分析大作业第二题

数值分析第二次大作业 史立峰 SY1505327

一、 方案 (1)利用循环结构将sin(0.50.2)() 1.5cos( 1.2)() {i j i j ij i j i j a +≠+==(i,j=1,2,……,10)进行赋值,得到需要变换的 矩阵A ; (2)然后,对矩阵A 利用Householder 矩阵进行相似变换,把A 化为上三角矩阵A (n-1)。 对A 拟上三角化,得到拟上三角矩阵A (n-1),具体算法如下: 记A(1)=A ,并记A(r)的第r 列至第n 列的元素为()n r r j n i a r ij ,,1,;,,2,1) ( +==。 对于2,,2,1-=n r 执行 1. 若 ()n r r i a r ir ,,3,2) ( ++=全为零,则令A(r+1) =A(r),转5;否则转2。 2. 计算 () ∑+== n r i r ir r a d 1 2 )( ()( )r r r r r r r r r r d c a d a c ==-=++则取,0sgn ) (,1)(,1若 )(,12r r r r r r a c c h +-= 3. 令 () n T r nr r r r r r r r r R a a c a u ∈-=++) ()(,2)(,1,,,,0,,0 。 4. 计算 r r T r r h u A p /)(= r r r r h u A q /)(= r r T r r h u p t /= r r r r u t q -=ω T r r T r r r r p u u A A --=+ω)()1( 5. 继续。 (3)使用带双步位移的QR 方法计算矩阵A (n-1)的全部特征值,也是A 的全部特征值,具体算法如下: 1. 给定精度水平0>ε和迭代最大次数L 。 2. 记n n ij n a A A ?-==][) 1()1()1(,令n m k ==,1。

研究生《数值分析》课程作业(二) (含答案)

研究生《数值分析》课程作业(二) 姓名: 学号: 专业: 1、据如下函数值表,建立二次的Lagrange 插值多项式及Newton 插值多项式。 20012222()()()()()()() (1)(2)(0)(2)(-0)(1)59 3143 (01)(02)(10)(12(20)(21)22 L x f x l x f x l x f x l x x x x x x x x x =++-----=? +?+?=-+------解: 二次 l agr ange插值 ) Newton 插值多项式: 200100120122()()[,](-)[,,](-)(-) 5559 32(0)(0)(1)32()3 2222 N x f x f x x x x f x x x x x x x x x x x x x x x =++=-?-+--=-+-=-+ ()y f x =2、已知单调连续函数在如下采样点处的函数值 *()0[2,4],f x x =求方程在内根的近似值使误差尽可能小。 解:1 ()()y f x x f y -==解: 对的反函数进行二次插值

1110201122012010210122021(0)(0)(0)(0)(0)(0) (0)() ()() ()()()()()() (0 2.25)(05)(03)(05)(03)(0 2.25) 2 3.54( 3 2.25)(35)(2.253)(2.255)(53)(5 2.25) y y y y y y L f y f y f y y y y y y y y y y y y y ---------=++--------+-+-=? +?+? ----+-+- 2.945 ≈()(1)01(1)1()[,]()(,),()[,],() ()()()() (1)! ,n n n n n n n n f x a b f x a b a x x x b L x x a b f R x f x L x x n a b x ξωξ+++≤<<<≤∈=-=+∈ 3、证明:设在上连续,在内存在,节点是满足拉格朗日插值条件的多项式,则对任何插值余项 这里()且依赖于。 0110101(0,1,,)()()0()()()()()()()()[,]()()()()()()() (),,,(k n n k n n n n n n x k n R x R x R x K x x x x x x x K x x K x x x a b t f t L t K x t x t x t x t x x x x t ωφφφ+===---==----- 证由条件知节点是的零点,即。于是其中是与有关的待定函数。 现把看成上的固定点,作函数 根据插值条件和余项定义,知在点及处均为零。故明:1111)[,]2()[,]1()()[,]()(,)(,),()()(1)!()0 ()()(,),(1)! n n n n a b n t a b n t t a b n t a b a b f n K x f K x a b x n φφφφξφξξξξ++++'+'''+∈=-+==∈+() () ()()在上有个零点,根据罗尔定理,在内至少有个零点。对再应用罗尔定理,可知在内至少 有个零点。依次类推,在上至少有一个零点,记为 使 于是 , 且依赖于于是得到插值余项。 证毕。 44、试用数据表建立不超过次的埃尔米特插值多项式。 解:(用重节点的均差表建立埃尔米特多项式)

相关文档
最新文档