Trước khi mô tả thuật toán, chúng tôi sẽ đưa ra những đặc điểm và sự thay đổi chính trong thuật toán này khi so sánh với [4, Thuật toán 2].
Độ lệch (error indicator).Giả sử nghiệm xấp xỉuˆcủa bài toán Dirichlet (2.2) được xác định bởi hệ phương trình (2.7) với tậpΞvà tập conΞζ với mọi ζ ∈Ξint, chọn giá trị error indicatorε(ζ,ξ)tương ứng với ‘cạnh’ζ ξ với mọiζ ∈Ξintvàξ ∈Ξζ\ {ζ}. Thuật toán làm mịn trong [4, Section 6] sử dụngε(ζ,ξ) =ε0(ζ,ξ):=|uˆζ−uˆξ|. Hiện nay chúng tôi thay thế cách tính độ lệch này bởi cách tính của Zienkiewicz-Zhu như sau: Với mỗiζ ∈Ξint, cho
`ζ(x) =a+bT(x−ζ)là đa thức tuyến tính phù hợp với dữ liệu{(ξ,uˆξ):ξ ∈Ξζ}theo hướng bình phương tối thiểu, trong đó các hệ sốa∈R,b∈R2được chọn thỏa mãn điều kiện
∑
ξ∈Ξζ
|uˆξ−`ζ(ξ)|2
đạt cực tiểu. Đặt
ε(ζ,ξ) =ε1(ζ,ξ):=|(uˆζ−uˆξ)−(`ζ(ζ)−`ζ(ξ))|, ζ ∈Ξint, ξ ∈Ξζ\ {ζ}. (3.4) Như trong [4], chúng tôi chỉ làm mịn nếu
dist(ξ0,Ξ0)≥µsepξ0(Ξ0), vớiµ ∈(0,1), (3.5) việc chèn một tâm mới ξ0 trong tập hiện tạiΞ0 không làm giảmkhoảng cách tách biệt địa phươngđược xác định như sau
sepξ0(Ξ0):= 1 4 4 ∑ i=1 dist(ξi,Ξ0\ {ξi}), (3.6) trong đóξ1, . . . ,ξ4là bốn điểm gần nhất trongΞ0đếnξ0, vàdist(x,Y):=inf{kx−yk:y∈Y}
là khoảng cách từ điểmxđến tậpY. Tuy nhiên, chúng tôi đã kiểm traξ0∈/∂Ωkhông ở vị trí quá gần biên, xem các Bước II.2 và II.3.i của Thuật toán 3.
x p m z mm xp xm xms xps
Hình 3.2: Các tâm được thêm vào tại lân cận cạnh được đánh dấu.
Algorithm 3. Thuật toán làm mịn thích nghi
Input:Bộ tâmΞvà các khuôn điểm{Ξζ : ζ ∈Ξint}.
Output:Bộ tâm được làm mịnΞ0.
Các tham số:γ =0.5, µ =0.8,n=15(số phần trăm của các tâm mới được thêm vào). I. Tính ngưỡng độ lệchε¯=γε¯(Ξ)và thiết lậpΞ0:=Ξ.
II. Đối với mỗicạnhζ ξ,ζ ∈Ξint,ξ ∈Ξζ\ {ζ}, thỏa mãnε(ζ,ξ)≥ε¯:
1. Tính ξmid := (ζ +ξ)/2, ξmid+ :=ξmid+dν¯ và ξmid− :=ξmid−dν¯, trong đó d :=
kζ−ξk/2vàν¯ là véc tơ đơn vị vuông góc với cạnhζ ξ. Đầu tiên choΞC:= /0.
2. Nếuξ ∈Ξint,thì với mỗiξ0∈ {ξmid,ξmid+ ,ξmid− }:
Nếu dist(ξ0,∂Ω)≥d/2 và dist(ξ0,Ξ0)≥µsepξ0(Ξ0), thì thiết lập ΞC :=ΞC∪ {ξ0}.
3. Trái lại, nếuξ ∈∂Ξ:
i. Với mỗiξ0∈ {ξmid,ξmid+ ,ξmid− }:
Nếu dist(ξ0,∂Ω)≥d/2vàdist(ξ0,Ξ0)≥d/2, thì thiết lậpΞC:=ΞC∪ {ξ0}. ii. NếuΞC6= /0hoặcdist(ξmid,∂Ω)<d/2:
Tìm hai lân cậnξ−,ξ+củaξ trong∂Ξ, một trong các hướng từξ dọc theo biên, và tính hai điểm giữa ξ−0,ξ+0 ∈∂Ωđược xác định bởi cặp tâm ξ,ξ− và ξ,ξ+, tách biệt. Thiết lậpΞC:=ΞC∪ {ξ+0,ξ−0}.
III. Nếu số tâm trongΞ0int\Ξintnhỏ hơnn% số tâm trongΞint, thì đặtε¯ :=γε¯ vàquay lại Bước II.