3 Tính toán hoành độ giả phổ của ma trận
3.4 Thử nghiệm số
Trong mục này, dựa vào Thuật toán 3.1.1 chúng tôi đã viết chương trình tính toán hoành độ giả phổ cho một số ma trận vuông thực chạy trong môi trường Matlab 7.0 thông qua các Ví dụ 3.1 và 3.2 phía dưới.
Chìa khóa để tính hoành độ giả phổ là tìm kiếm giá trị riêng của ma trận Hamilton
H(x) (là thực nếu A thực) và H˜(y) (là phức cho dù A thực). Các ma trận Hamilton có các giá trị riêng đối xứng nhau qua trục ảo, vì vậy tất cả các giá trị riêng không thuần ảo phải xuất hiện theo cặp và số các giá trị riêng ảo luôn là là số chẵn (vì cấp của ma trận là chẵn), những ưu điểm cấu trúc của ma trận Hamilton và sự phân phối giá trị riêng đối xứng qua trục ảo đã được tận dụng cho việc tính hoành độ giả phổ.
Giả sử rằng trong phép lặp thứ r cho trước, các không điểm {lr j, ur
j}là các không điểm xuyên qua (do đó các không điểm này phân biệt), và hơn nữa các giá trị số của các không điểm này tách biệt nhau. Giả sử với mỗi không điểm này, tương ứng giá trị riêng ảo của ma trận Hamilton H(xr) là đơn, thì khi đó các giá trị riêng Hamilton đã được xác định phân bố các giá trị riêng ảo với phần thực chính xác bằng 0, không bị ảnh hưởng dưới tác động của việc làm tròn sai số, vì các nhiễu Hamilton nhỏ nênH(xr)không thể dịch chuyển giá trị riêng ảo ra khỏi trục ảo.
Tuy nhiên, điều dễ nhận thấy này không đúng trong giới hạn khi thuật toán hội tụ. Ký hiệu (α(A),y˜) là một cực đại của phần thực trên giả phổ. Rõ ràng là, y˜ là không điểm không xuyên qua của hàm h α(A),·
, và do đó giá trị riêng ảo iy˜của H α(A)
có bội 2 (hoặc có thể có bội cao hơn trong trường hợp không tổng quát). Với mọi xr < α, có một cặp không điểm xuyên qua là lr và ur vớiur −lr → 0 khi r → ∞. Khi thuật toán hội tụ thì quá trình này trở lên khó khăn hơn cho dù ma trận Hamilton có 2 không điểm phân biệt nhưng các giá trị riêng không ảo rất gần nhau, một giá trị riêng ảo bội 2, hoặc do sự làm tròn sai số, cặp giá trị riêng phân biệt nhưng phần thực rất gần nhau và cùng phần ảo: tất cả những khả năng như thế này phù hợp với cấu trúc ma trận Hamilton. Trong thử nghiệm số của chúng tôi, chúng tôi đơn giản kết thúc thuật toán ngay khi hoặc Bước 2 không cho giá trị riêng ảo nào, hoặc tìm kiếm hoành độ ở Bước 3 cho ta xr+1 ≤xr.
Luận văn tốt nghiệp Về giả phổ của ma trận
lặp thứ nhất tìm kiếm tung độ tìm được 2 không điểm xuyên qua, vìA thực, nênl1
1 =−u1 1, do đó y1
1 = 0 và vì vậy tìm kiếm hoành độ đầu tiên dọc theo trục thực. Với rất nhiều ma trận thực, kết quả của bước lặp (x2,0) sẽ là tối ưu và thuật toán kết thúc, nhưng trong ví dụ này (x2,0) là điểm dừng, mà không phải là điểm cực đại của bài toán. Vì A thực, 0 là một không điểm không xuyên qua củah(x2,·), và 0 giá trị riêng kép của ma trận Hamilton
H(x2). Hơn nữa, h(x2,·) có 2 không điểm xuyên qua tương ứng tại đáy và đỉnh của Hình 2.1. Giả sử rằng việc làm tròn sai số là nguyên nhân làm lời giải riêng cho hai giá trị riêng ảo, thay vì số giá trị riêng ảo chính xác là 4, đếm giá trị riêng không điểm 2 lần. Khi đó ta cól1
2 =−u1
2, và thuật toán kết thúc với x3 =x2, nhưng đây là câu trả lời sai.
Để tránh kết quả sai như trên, ta cần xử lý như sau trong cập nhật ở Bước 4 của phép lặp thứr của thuật toán, ta lưu giữ giá trị y(yr
k)tương ứng với giá trị lớn nhấtxr+1 và sau đó kiểm tra danh sách các không điểm được sinh ra bởi việc tìm kiếm tung độ trong Bước 2 của phép lặp thứ r+ 1 bao gồm cả yr
k. Đặc biệt hơn, vì chúng ta không thể yêu cầu lập luận sẽ chính xác trong việc biểu diễn làm tròn sai số, chúng ta có thể làm như sau: nếu danh sách các không điểm tại bước lặp thư r+ 1 là khác rỗng và
ykr∈[lrj+1+δjr+1, urj+1−δrj+1],
với δjr+1 = τ(urj+1 −ljr+1), với j ∈ {1, ..., mr+1} và cố định τ 1, khi đó ta chia khoảng (ljr+1, urj+1) thành hai khoảng (ljr+1, yr
k) và (yr
k, urj+1), thay thế hai việc tìm kiếm hoành độ được xác định bởi 2 trung điểm mới cho 1 mà nếu không được xác định là trung điểm của (ljr+1, urj+1). Cách chọn phù hợp cho τ là 0.01, đủ nhỏ mà việc chia một cặp thành 2 cặp sẽ diễn ra khi nó cần thiết, như trong ví dụ Demmel, nhưng đủ lớn mà chi phí của việc tìm kiếm hoành độ thêm vào sẽ chịu thiệt hại chỉ khi cần thiết. Với mục đích tránh việc tìm kiếm hoành độ thêm không cần thiết trước khi kết thúc, sự đảm bảo được mô tả có thể được đưa ra nếu đại lượng urj+1−lrj+1 rất nhỏ. Bảng 3.1 chỉ ra các phép lặp cho ví dụ Demmel với sai số 16 chữ số.
Các Bảng 3.2 và 3.3 là kết quả tính hoành độ giả phổ của ma trận A bằng thuật toán criss-cross với = 0.1 và = 0.001 tương ứng:
Ví dụ 3.2: Trong ví dụ này chúng tôi xét ma trận Demmel nhiễu như trong Ví dụ 2.2 trong Mục 2.3. Khi đó giả phổ của ma trận không còn đối xứng qua trục thực (xem Hình
Bảng 3.1: Kết quả tính toán α0.01(A)bởi thuật toán criss-cross r xr mr yr 1 yr 2 1 -1.000000000000000 1 0.000000000000000 2 -0.283307773738406 2 -1.151342077143578 1.151342077143578 3 0.110378688897074 2 -1.328011521316707 1.328011521316707 4 0.122855725365088 2 -1.327743418800760 1.327743418800760 5 0.122855754072121 0
Bảng 3.2: Kết quả tính toán α0.1(A) bởi thuật toán criss-cross
r xr mr yr
1
1 -1.000000000000000 1 0.000000000000000 2 5.273191105020150 0
2.4). Kết quả tính toán hoành độ giả phổ của ma trận được ghi lại trong các Bảng 3.4, 3.5, 3.6 tương ứng với = 0.01, = 0.1 và = 0.001.
Bảng 3.3: Kết quả tính toán α0.001(A) bởi thuật toán criss-cross
r xr mr yr
1
1 -1.000000000000000 1 0.000000000000000 2 -0.437819961574682 0
Luận văn tốt nghiệp Về giả phổ của ma trận
Bảng 3.4: Kết quả tính toán α0.01( ˜A)bởi thuật toán criss-cross
r xr mr yr 1 yr 2 1 -0.442437235099235 1 -0.126565274824346 2 -0.276899490766188 2 -1.276126382561613 1.110482209299665 3 0.124058778702666 1 1.226173510815568 4 0.130272463583560 1 1.225424774480507 5 0.130272723576736 0
Bảng 3.5: Kết quả tính toán α0.1( ˜A) bởi thuật toán criss-cross
r xr mr yr
1
1 -0.442437235099235 1 -0.019018641793529 2 5.273159793645777 1 -0.105298908302588 3 5.273488334363130 0
Bảng 3.6: Kết quả tính toán α0.001( ˜A) bởi thuật toán criss-cross
r xr mr yr1 yr2 y3r
1 -0.442437235099235 3 -0.344431433813370 0.102759513591397 0.730160410469096 2 -0.382162304679014 1 -0.345467767150187
3 -0.382156814723426 0
Trong luận văn này chúng tôi đã trình bày lại một cách tương đối hệ thống một số kiến thức cơ sở về phổ, giả phổ và hoành độ giả phổ của ma trận vuông. Chúng tôi đã tìm hiểu những tính năng của gói lệnh Eigtool để tính toán được giả phổ của ma trận. Đặc biệt trên cơ sở của thuật toán "criss-cross" chúng tôi đã viết chương trình tính toán hoành độ giả phổ của ma trận chạy trong Matlab để minh họa việc tính toán hoành độ giả phổ của ma trận trong các Ví dụ 3.1 và 3.2. Các kết quả thử nghiệm số này là phù hợp với kết quả bài báo [1].
Phụ lục
Chương trình Matlab sau đã được sử dụng để tính toán -hoành độ giả phổ của các ma trận trong các Ví dụ 3.1 và 3.2 theo thuật toán"criss-cross".
function luanvan; format long e;
close all, clear all
fid = fopen(’ketqua1_1.txt’,’w’); %fid = fopen(’ketqua1_2.txt’,’w’); %fid = fopen(’ketqua1_3.txt’,’w’); %fid = fopen(’ketqua2_1.txt’,’w’); %fid = fopen(’ketqua2_2.txt’,’w’); %fid = fopen(’ketqua2_3.txt’,’w’);
fprintf(fid,’%4s %20s %3s %18s %18s\n’,’r’, ’x^r’, ’m^r’, ’y_1^r’, ’y_2^’); ss=10^(-12); A=[-1,-5,-25,-125,-625;0,-1,-5,-25,-125;0,0,-1,-5,-25;0,0,0,-1,-5;0,0,0,0,-1]; %A=[-1,-5,-25,-125,-625;0,-1,-5,-25,-125;0,0,-1,-5,-25;0,0,0,-1,-5; %0.001*i,0,0,0,-1]; ep=0.01; %ep=0.1; %ep=0.001; n=length(A); %b1: khoi tao x=max(real(eig(A))); r=1; 47
check=1;
while check==1
%b2: tim kiem tung do.
fprintf(fid,’%4d %20.15f’,r, x);
v=eig([x*eye(n)-A’,ep*eye(n);-ep*eye(n),A-x*eye(n)]); m=length(v);
%b21 tim cac khong diem cua h(x,.) v1=[]; for k=1:m if abs(real(v(k)))>ss | abs(min(svd(A-(x+i*imag(v(k)))*eye(n)))-ep)>ss v1=v1; else v1=[v1;imag(v(k))]; end; end; %sap xep:
%sap theo thu khong giam:
m=length(v1);% do dai cua vector, su dung cho vong lap. if m>0 k=1; while k<m for j=(k+1):m if v1(j)<v1(k) tg=v1(k); v1(k)=v1(j); v1(j)=tg; end; end; k=k+1; end;
Luận văn tốt nghiệp Về giả phổ của ma trận k=1; d=1; u=[]; while k<=m for h=(k+1):m if v1(h)==v1(k) d=d+1; end; end; if mod(d,2)==0 u=[u,v1(k),v1(k)]; else u=[u,v1(k)]; end; k=k+d; d=1; end; m1=length(u); if r>1 & m1>0
u_new=[];%them bien vao. xu li phan luu y. for h=1:m1/2
tg=0.01*(u(2*h)-u(2*h-1));
if y(index)>=u(2*h-1)+tg & y(index)<=u(2*h)-tg
u_new=[u_new,u(2*h-1),y(index),y(index), u(2*h)]; else u_new=[u_new,u(2*h-1),u(2*h)]; end; end; u=u_new; m1=length(u);
end;
%b3: tim kiem hoanh do.
x1=[]; %tao vector luu lai cac gia tri rieng ao lon nhat trong moi buoc y=[];
for k=1:(m1/2) % m1 la do dai cua vector nghiem cua h(x,.) %nen co the su dung nhieu lan. ok
tg=(u(2*k-1)+u(2*k))/2;
u1=eig([i*A’-tg*eye(n),ep*eye(n);-ep*eye(n),i*A+tg*eye(n)]); m2=length(u1); % m2 su dung cho vong lap.
%b31: tim cac gia tri rieng ao cua H(y) u2=[]; for h=1:m2 if abs(real(u1(h)))< ss u2=[u2,u1(h)]; end; end; y=[y,tg]; x1=[x1,max(imag(u2))]; end; %fprintf(fid,’%4d %18.15f %4d’,r, x, m1/2); fprintf(fid,’%4d’, m1/2); for k=1:m1/2 fprintf(fid,’%20.15f’,y(k)); end; fprintf(fid, ’\n’); %b4. cap nhat. x=max(x1); for k=1:m1/2 if x1(k)==x index=k; end;
Luận văn tốt nghiệp Về giả phổ của ma trận end; r=r+1; else fprintf(fid,’%4d’,0); check=0; end; end; fclose(fid); end
[1] J.V. Burke, A. S. Lewis, and M. L. Overton, Robust stability and a ciss-cross algorithm for pseudospectra, IMA Journal of Numerical Analysis, (2003) 23, 359-375.
[2] J.V. Burke, A. S. Lewis, and M. L. Overton, Optimizition and pseudosspectra,with applications to robust stability, SIAM Journal on Matrix Analysis and Applications,
(2003) 25, 80-104.
[3] C. D. Meyer,Matrix Analysis and Applied Linear Algebra, SIAM, 2000.
[4] L. N. Trefethen, Computation of pseudospectra, Acta Numerica,(1999), 247-295. [5] L. N. Trefethen, Pseudospectra of matrices,Numerical analysis 1991, D. J. Griffths and
G. A. Waston (Eds), Longman Scientific &Technical, Harlow, Essex, UK, 1992. [6] T. G. Wright and L. N. Trefethen, Pseudospectra of rectangular matrices,IMA Journal