题目:主要研究希尔伯特矩阵的病态性

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

题目:主要研究希尔伯特矩阵的病态性

Hilbert 矩阵的定义为: H n =⎥

⎥⎥

⎤⎢⎢⎢

⎢⎣⎡-++)1n 2/(1)1n /(1/1

)1n /(13/12/1

n

/12/11

n

该矩阵是一个对称正定矩阵,其条件数随n 的增加迅速增加。

画出ln (cond (H n )2)~n 之间的曲线,观察他们的关系。其中cond (H n )2表示矩阵在2范数下的条件数,它可按如下公式计算: (1) cond (H n )2=

n

λλ1,1λ和n λ分别是H n 的最大特征值和最小特征值。

(2) 设D 是H n 对角元素开方构成的对角矩阵,令n

H

=D 1- H n D 1-,不难看

出n

H

依然还是对称矩阵,,并且对角元素都是1,画出ln (cond (H n )

2

)~之间的曲线,观察他们之间的关系。

(3) 对于4≤n ≤12,给定不同的右端项b ,分别用x 1=H 1

-n ;x 2= D 1

-(

n

H ∧

1

-

D 1-b );x 3= H n \b ,求解H n x=b ,比较结果x 1 、x 2、 x 3。

程序如下:

首先,建立eiggg-M 文件,求解矩阵的最大特征值和最小特征值。 function [max,min]=eiggg(s) ss=size(s) if ss==1; max=s(1); min=s(1); else

max=s(1); min=s(1); for i=1:1:ss; if s(i)>=max max=s(i); end

if s(i)<=min min=s(i); end end

end

再建立Hilbert.m文件,给出Hilbert矩阵的定义:function H=Hilbert(n)

H=zeros(n,n);

for i=1:1:n;

for j=1:1:n;

H(i,j)=1/(i+j-1);

end

end

然后求出D的逆矩阵

function H=Hilbert2(n)

H=zeros(n,n);

for j=1:1:n;

H(j,j)=1/(2*j-1);

end

D=sqrt(H);

D1=inv(D);

H=D1*H*H;

编译主程序:

clear;

clc;

N=4;

mv2=zeros(N,1);

for i=1:1:N;

H=Hilbert2(i);

s=eig(H);

[max,min]=eiggg(s);

mv1=max/min;

mv2(i)=log(mv1);

end

n=1:1:N;

figure(1),subplot(221),plot(n,mv2(n));

title('ln(cond(Hn)2)与n之间的关系');

H1=Hilbert(N);

H2=Hilbert2(N);

b=[1;2;3;4;];;

x1=inv(H1)*b;

x2=H2*b;

x3=H1\b;

sss=size(x1)

i=1:1:sss(1);

subplot(222),plot(i,x1);

subplot(223),plot(i,x2);

subplot(224),plot(i,x3);

运行之后的结果:

ss =

1 1

ss =

2 1

ss =

3 1

ss =

4 1

sss =

4 1

得出图像:

由此可见,其条件数随n的增加而增加,则该矩阵不收敛,故则证得希尔伯特矩阵式的病态性。

相关文档
最新文档