Thử nghiệm số

Một phần của tài liệu Phương pháp hệ động lực giải phương trình toán tử (Trang 39)

Một câu hỏi đặt ra là, vớia(t)đã cho thì chọn tn hoặc hn như thế nào để DSM đạt hiệu quả.

Ta tiến hành thực nghiệm với a(t) = a0

1 +t, an = a(tn), trong đó a0 là hằng số dương

un ở bước thứn phụ thuộc chủ yếu vào(T +an)−1A∗fδ vìe−hn rất nhỏ khin lớn. Chú ý rằng, an giảm nhanh như lũy thừa khi n → ∞. Thuật toán ALGORITHM 1 dưới đây là sử dụng công thức lặp (2.30) và nguyên lý độ lệch cải biên để tìmu khi đã biết

a0, A, fδ và δ.

ALGORIT HM1 :DSM(A, fδ, δ)

q:= 2;

gδ :=A∗fδ; T :=A∗A;

intermax:= 30; u:= (T +a0)−1gδ;

i:= 0; t:= 1; h:= 1; halve := 0; while (1.001δ <kAu−fδk) and (i < intermax) do

i:=i+ 1; t:=t+h; a:=a0/t; v := (T +aI)−1gδ; ˜ u:=e−hu+ (1−e−h)v; if 0.9δ <kAu−fδk then u:= ˜u;

if halve:= 0 then h:=hq; end;

else if

t:=t−h; h:=h/2; halve:= 1;

end end

Để tăng tốc độ của ALGORITHM 1, chúng ta sử dụng nguyên lý độ lệch cải biên, trên mỗi bước lặp ta kiểm tra điều kiện

0.9δ≤ kAun−fδk ≤1.001δ, (2.31) với a0 được chọn thỏa mãn

δ <kAua0 −fδk<2δ. (2.32) Do đó, nếu u0 =T−1

a0 A∗fδ, với Ta =T +a thì δ <kAu0 −fδk. Giả sử tn là thời điểm ban đầu sao cho kAun−fδk ≤ 1.001δ. Nếu điều kiện (2.31) thỏa mãn thì dừng tính

toán. Nếu||Aun−fδ||<0,9δthì giảm độ dài bướchn và phải tính lạiun. Trong trường hợp này, ở bước lặp tiếp theo ta không phải nhân hn với q. Ta lặp lại thủ tục này cho tới khi điều kiện (2.31) thỏa mãn.

Bây giờ ta trình bày cách chọna0.Thực tế chứng tỏ rằng tham số hiệu chỉnh aM, xác định từ nguyên lý độ lệch ||AuaM −fδ|| = δ, trong đó uaM =T−1

aMA∗fδ gần với giá trị tối ưu aop, làm cực tiểu đại lượng

kuaop−yk= inf

a kua−yk, ua =Ta−1Afδ.

Chữ cáiM trong aM là viết tắt tên nhà Toán học Nga V. Morozov, người đã đề xuất nguyên lý độ lệch tìm tham số hiệu chỉnh (vớic= 1).

Nếu a0 < aop, phương pháp có thể hội tụ rất chậm. Vì aM gần với aop, nên chỉ những

a sao cho kAT−1

a Afδ−fδk =cδ, với c gần 1, mới cho xấp xỉ chính xác tới nghiệm y. Tiếp theo, nếu a0 > aop thì kết quả thu được trong bước lặp đầu tiên ít có giá trị vì khia0 cách xa aop, sai số kua0 −yk kuaop−yk. Nếu a0 aop thì phải mất một thời gian khá dài cho tới khi a(tn) gần với aop. Để tăng tốc độ tính toán nên chọn a0 gần với aop và lớn hơn aop. Vì aop chưa biết và thường gần với aM, nên ta chọn a0 từ điều kiện (2.32). Với sự lựa chọn này thì a0 gần vớiaM và lớn hơn aM.

Trong phương pháp VR, để xác định tham số hiệu chỉnh theo nguyên lý độ lệch Morozov (c= 1) bằng phương pháp Newton, ta phải chọn xấp xỉ ban đầu a0 cho quá trình lặp hội tụ, do phương pháp Newton nói chung chỉ hội tụ địa phương. Nếu giá trị này lớn hơn và gần vớiaM, thì nó có thể được dùng làm giá trị ban đầua0 =a(0) cho phương pháp DSM.

Trong thử nghiệm số, với cách chọn a0 = 1

3maxλi(A

∗A)δrel xấp xỉ cho a(0), ta tìm a0

thỏa mãn δ < kAu0 −fδk < 2δ. Ở đây, δrel là sai số tương đối, δrel = δ

kfk. Tỷ số

1 3

được đưa vào đây để giảm chi phí cho việc tìma0, vìa0 thỏa mãn (2.32) thường không bằng maxλi(A∗A)δrel. Ý tưởng cho sự lựa chọn này dựa trên tính chất phổ của ma

trận 1 maxλi(A∗A)A ∗A chứa trong [0,1]. Chú ý rằng aM ≤ δkAk 2 kfδk −δ. Thật vậy kfδk −δ=kfδk − kAuaM −fδk ≤ kAuaMk.

Vì A∗AuaM +aMuaM =A∗fδ, ta cóaMAuaM =AA∗(fδ−AuaM). Do đó

kfδ−δk ≤ kAuaMk= 1

aMkAA∗(fδ−AuaM)k ≤ ||A||

2

aM δ.

Chúng ta phải chọn a0 thỏa mãn (2.32), như sau: (i) Nếu kAua0 −fδk

δ = c > 3 thì lấy a1 = a0

2(c−1) và kiểm tra điều kiện (2.32). Nếu 2< c≤3thì lấy a1 = a0

3 .

(ii) Nếu kAua0 −fδk

δ =c <1 thì lấya1 = 3a0.

(iii) Sau khi chọn đượca0, ta kiểm tra điều kiện (2.32). Nếu điều kiện này không thỏa mãn, ta lặp lại bước một và hai cho tới khi tìm đượca0 thỏa mãn điều kiện (2.32)(xem ALGORITHM 2). ALGORIT HM 2 : a0 := 1 3kAk2δrel; ua0 := (A∗A+a0)−1A∗fδ; c:=kAua0 −fδk/δ; while (2< c) or (c < 1) do if 3< c then a0 := 0.5a0/(c−1); else if (2< c≤3) then a0 :=a0/3; else a0 := 3a0; end ua0 := (A∗A+a0)−1A∗fδ; c:=kAua0 −fδk/δ; endwhile

Thuật toán trên dựa vào tính chất đơn điệu giảm của hàm

φ(a) =kA(T +a)−1A∗fδ−fδk,

với a >0. Trong việc tìma0 thỏa mãn (2.32), với giả thiết

a0 aM >0, hoặc kAua0 −fδk δ, chúng ta sử dụng xấp xỉ φ(x)≈φ(a0) + (x−a0)φ(a0)−φ(aM) a0−aM ≈φ(a0) + (x−a0)φ(a0)−φ(aM) a0 =ϕ(x).

Chú ý rằng a0 và φ(a0) đã biết. Ta tìm x sao cho δ < ϕ(x)<2δ. Do đó, nếu a1 thỏa mãn δ < ϕ(a1)<2δ và 2δ < φ(a0), thì (φ(a0)−2δ) a0 φ(a0)−δ < a0−a1 <(φ(a0)−δ) a0 φ(a0)−δ. Vậy chúng ta chọn a1 thỏa mãn a0 −a1 = (φ(a0)−1.5δ) a0 φ(a0)−δ, nên a1 =a0 0.5δ φ(a0)−δ.

Mặc dù đây là xấp xỉ khá thô nhưng nó cũng đủ tốt trong thực tế. Thông thường, chúng ta cần sử dụng một đến ba bước lặp để tìm a0. Đó là lý do tại sao có nhân tử

0.5

c−1 trong trường hợp thứ nhất.

Một phần của tài liệu Phương pháp hệ động lực giải phương trình toán tử (Trang 39)