题目:主要研究希尔伯特矩阵的病态性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的增加而增加,则该矩阵不收敛,故则证得希尔伯特矩阵式的病态性。