Bài viết này trình bày cách xây dựng trình thực thi cho phương pháp này bằng cách sử dụng phương pháp lặp Newton cho khối. Một chương trình bằng Ngôn ngữ Matlab được đưa ra để mô tả thuật toán và trình thực thi với số bước k cụ thể.
ISSN: 1859-2171 e-ISSN: 2615-9562 TNU Journal of Science and Technology 225(06): 424 - 431 XÂY DỰNG TRÌNH THỰC THI CHO PHƯƠNG PHÁP SAI PHÂN LÙI DẠNG KHỐI LIÊN TỤC Đinh Văn Tiệp*, Phạm Thị Thu Hằng Trường Đại học Kỹ thuật Cơng nghiệp - ĐH Thái Ngun TĨM TẮT Phương pháp đa bước sai phân lùi dạng khối cải tiến trội để tìm xấp xỉ nghiệm phương trình vi với điều kiện ban đầu Phương pháp với miền ổn định tuyệt đối lớn nên đặc biệt thích hợp cho lớp tốn stiff Bài báo trình bày cách xây dựng trình thực thi cho phương pháp cách sử dụng phương pháp lặp Newton cho khối Một chương trình Ngơn ngữ Matlab đưa để mơ tả thuật tốn trình thực thi với số bước k cụ thể Các ví dụ trình bày đưa so sánh tính hiệu xác phương pháp Từ khóa: phương pháp tuyến tính đa bước; phương pháp sai phân lùi; phương pháp sai phân lùi dạng khối liên tục; toán stiff; miền ổn định tuyệt đối Ngày nhận bài: 19/5/2020; Ngày hoàn thiện: 27/5/2020; Ngày đăng: 29/5/2020 CONSTRUCTING THE IMPLIMENTATION TO THE CONTINUOUS BLOCK BDF METHODS Dinh Van Tiep*, Pham Thi Thu Hang TNU - University of Technology ABSTRACT The k-step methods of continuous block backward difference formula (or BDF) have great benefit to approximate the differential equation with the initial condition These methods possessing very large absolute stability regions are especially useful for the stiff equations This article presents a method of implementation to these k-step scheme by using the Newton’s iteration for the root finding problem of the non-linear multivariable case Also, a program written in Matlab with a particular k is presented The numerical experiments introduced to illustrate the efficiency and exactness of these scheme comparing with some conventional BDF methods Keywords: linear multistep method; backward difference formula; continuous block backward difference formula; stiffness; absolute stability region Received: 19/5/2020; Revised: 27/5/2020; Published: 29/5/2020 * Corresponding author Email: tiepdinhvan@gmail.com 424 http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn Đinh Văn Tiệp Đtg Tạp chí KHOA HỌC & CƠNG NGHỆ ĐHTN Mở đầu Xem xét toán giá trị ban đầu 𝑦 ′ = 𝑓(𝑡, 𝑦), 𝑎 ≤ 𝑡 ≤ 𝑏, 𝑦(𝑎) = 𝛼, (1) với giả thiết điều kiện Lipschitz theo 𝑦 hàm 𝑓 Các phương pháp xấp xỉ nghiệm phương trình bao gồm chủ đạo phương pháp đơn bước đa bước Họ phương pháp sai phân lùi (ký hiệu BDF) với số bước k nhỏ, 𝑘 < 6, thể ưu điểm lớn với miền ổn định tuyệt đối gần chiếm trọn mặt phẳng phức Thực tế miền phương pháp chứa toàn phần âm trục thực mặt phẳng phức Điều cho thấy khả áp dụng phương pháp cho tốn stiff, vấn đề gây khó khăn lớn đa số phương pháp xấp xỉ khác Tuy nhiên, trở ngại cho tính áp dụng phương pháp họ sai phân lùi, giống phương pháp đa bước bậc cao khác, chẳng hạn phương họ Adams, chúng dạng ẩn Cách tiếp cận để xử lý vấn đề gồm hướng sử dụng dạng dự báo - hiệu chỉnh hướng sử dụng phép lặp cho thân phương pháp Với hướng tiếp cận dự báo - hiệu chỉnh, miền ổn định tuyệt đối bé Không may, điều đặc biệt với cặp dự báo - hiệu chỉnh với kiểu hiệu chỉnh họ sai phân lùi Khi đó, ưu điểm trội họ sai phân lùi bị triệt tiêu Đối với hướng sử dụng kiểu lặp có hạn chế việc nghiệm hội tụ đến nghiệm phương trình sai phân, thay đến nghiệm phương trình vi phân Hướng tiếp cận sai phân lùi dạng khối liên tục đưa N.M Yao cộng với bậc thấp 𝑘 ≤ (xem [1], [2]) thể trội tính áp dụng lớp toán stiff Đặc biệt hơn, khả tự khởi động phương pháp tạo nên thống khớp nối mà nhiều phương pháp đa bước gặp phải Trình thực thi phương pháp khối liên tục có hai hướng tiếp cận chủ đạo, sau bước khởi động, khơng dùng quy trình lặp để http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn 225(06): 424 - 431 giảm khối lượng tính tốn, hai bước lặp khối tiến hành cuối Với hướng tiếp cận thứ hai, độ xác tốt hơn, song yêu cầu số bước chia phải bội nguyên lần số bước phương pháp Công thức sai phân lùi dạng khối liên tục Trong [1], [2], N M Yao cộng trình bày quy trình xây dựng phương pháp tổng quát, đưa công thức khối cụ thể cho trường hợp 𝑛 = 2,3,4,6 Đồng thời, báo này, tác giả đề cập đến vấn đề tính ổn định, bậc hệ số bậc công thức khối Đối với công thức 𝑛 = 2,3, công thức khối dạng A-ổn định (tức A-stable) Với 𝑛 = 4,6, đặc tính có yếu chút song chúng 𝐿0 -ổn định (tức 𝐿0 -stable) theo định nghĩa Cash [3] Các tính chất miền tuyệt đối bảo tồn từ phương pháp BDF thông thường Như vậy, ưu điểm vượt trội phương pháp BDF không bị với 𝑘 ≤ Ở đây, khác so với trình thực thi giới thiệu [1], ta xây dựng quy trình lặp tổng quát cho khối tạo theo phương pháp với chứng minh hội tụ nghiệm xấp xỉ ℎ → 0+ Xét công thức dạng khối liên tục xây dựng kiểu sai phân lùi [1]: 𝐴(1) 𝑌𝑛+1 = 𝐴(0) 𝑌𝑛 + ℎ𝐵(1) 𝐹𝑛+1 , với 𝑌𝑛+1 = (𝑦𝑛+1 , 𝑦𝑛+2 , … , 𝑦𝑛+𝑘 )𝑇 , (2) 𝑌𝑛 = (𝑦𝑛−𝑘+1 , 𝑦𝑛+𝑘 , … , 𝑦𝑛 )𝑇 , 𝐹𝑛+1 = (𝑓𝑛+1 , 𝑓𝑛+2 , … , 𝑓𝑛+𝑘 )𝑇 , 𝑦𝑗 ≈ 𝑦(𝑡𝑗 ), 𝑓𝑗 ≈ 𝑓 (𝑡𝑗 , 𝑦(𝑡𝑗)) , ∀𝑗 = 1,2, …, 𝐴(1) , 𝐴(0) , 𝐵(1) ma trận cấp 𝑘 × 𝑘 thu từ xây dựng phương pháp Ở đây, giả sử phương pháp BDF cho công thức: 𝑘−1 ℎ𝑓𝑛+𝑖 = ∑ 𝑎𝑖𝑗 𝑦𝑛+𝑗 + ℎ𝑏𝑖 𝑓𝑛+𝑘 , 𝑗=0 ∀𝑖 = 1, , 𝑘 − (3) 𝑘−1 𝑦𝑛+𝑘 = ∑ 𝑎𝑗 𝑦𝑛+𝑗 + ℎ𝑏𝑘 𝑓𝑛+𝑘 , 𝑗=0 425 Đinh Văn Tiệp Đtg Tạp chí KHOA HỌC & CƠNG NGHỆ ĐHTN 𝐴(1) có cột 𝑘 (0, ,1)𝑇 , hàng 𝑘 −(𝑎1 , , 𝑎𝑛−𝑘+1 , −1), cột thứ 𝑗 ma trận 𝑇 −(𝑎1𝑗 , 𝑎2𝑗 , … , 𝑎𝑗 ) ; ma trận 𝐴(0) có tất cột véctơ không, ngoại trừ cột cuối 𝑇 véctơ (𝑎10 , … , 𝑎𝑘−1,0 , 𝑎0 ) ; ma trận 𝐵(1) có dạng tam giác với phần tử khác khơng nằm đường chéo cột thứ 𝑘, đường chéo véctơ (−1, … , 𝑏𝑘 ), cột 𝑘 véctơ (𝑏1 , … , 𝑏𝑘 )𝑇 Các ma trận 𝐴(1) cho 𝑘 = 2,3,4,5,6 ma trận khả nghịch Do đó, phương trình (2) đưa dạng: 𝑌𝑛+1 = 𝐶𝑌𝑛 + ℎ𝐵𝐹𝑛+1 , (4) với 𝐶 ma trận cấp 𝑘 × 𝑘 có phần tử khác ngoại trừ phần tử cột k, ký hiệu là: )𝑇 𝑋 (0) = { ℎ𝐵𝑑𝑖𝑎𝑔 (𝑓𝑦 (𝑡𝑞𝑘+1 , 𝑥1 ), … , 𝑓𝑦 (𝑡𝑞𝑘+𝑘 , 𝑥𝑘 )) − 𝐼𝑘 , 𝑑𝑖𝑎𝑔 (𝑓𝑦 (𝑡𝑞𝑘+1 , 𝑥1 ), … , 𝑓𝑦 (𝑡𝑞𝑘+𝑘 , 𝑥𝑘 )) ma trận đường chéo với phần tử xếp dọc đường chéo 𝐼𝑘 ma trận đơn vị cấp 𝑘 Giả sử số đoạn chia [𝑎, 𝑏] 𝑁 = 𝑘𝑝, tức 𝑁 bội nguyên lần 𝑘 Từ điều kiện ban đầu 𝑦0 = 𝛼, với 𝑞 = 0, áp dụng (5) ta 𝑌1 = (𝑦1 , 𝑦2 , … , 𝑦𝑘 )𝑇 Tiếp tục với 𝑞 = 1, áp dụng (5) thu được: (4 ) 𝑌𝑘+1 = (𝑦𝑘+1 , 𝑦𝑘+2 , … , 𝑦2𝑘 )𝑇 Trong (3), 𝐹𝑛+1 = 𝐹(𝑡𝑛+1 , 𝑌𝑛+1 ) Cứ thế, với 𝑞 = (𝑝 − 1), thu được: = (𝑓(𝑡𝑛+1 , 𝑦𝑛+1 ), … , 𝑓(𝑡𝑛+𝑘 , 𝑦𝑛+𝑘 )), 𝑇 phụ thuộc vào 𝑌𝑛+1 Chính thế, phương trình (4) xấp xỉ nghiệm phương pháp lặp Newton Newton suy rộng với giả thiết hàm 𝑓 đủ khả vi Quá trình lặp Newton áp dụng cho phương trình 𝐺(𝑋) = với 𝑞 ≥ là: 𝐺(𝑋) = 𝑦𝑞𝑘 𝐴 + ℎ𝐵𝐹(𝑡𝑞𝑘+1 , 𝑋) − 𝑋, (𝑦(𝑞−1)𝑘+1 , … , 𝑦𝑞𝑘 ) 𝑞 ≥ (0, … , 𝑦0 ), 𝑦0 = 𝛼, 𝑞 = Jacobian G 𝐽𝐺 (𝑋) = ′ 𝐴 = (𝑐1 , 𝑐2 , … , 𝑐𝑘 225(06): 424 - 431 (5) 𝑋 = (𝑥1 , … , 𝑥𝑘 )𝑇 ∈ ℝ𝑘 , để tìm nghiệm xấp xỉ phương trình Thực tế, ℎ → 0, nghiệm (5) hội tụ nghiệm đúng: 𝑇 𝑌(𝑡𝑞𝑘+1 ) = (𝑦(𝑡𝑞𝑘+1 ), … , 𝑦(𝑡𝑞𝑘+𝑘 )) , giả thiết 𝑦𝑞𝑘 = 𝑦(𝑡𝑞𝑘 ) Điều chứng minh Định lý Bậc hệ số bậc phương pháp khối bậc nhỏ hệ số bậc nhỏ để xấp xỉ 𝑦(𝑡𝑞𝑘+𝑖 ), ∀𝑖 = 1, … , 𝑘, phương trình sai phân thứ 𝑖 tương ứng (3) Công thức lặp nghiệm cho (5) (tại bước thứ q) là: 𝑌𝑘(𝑝−1)+1 = (𝑦𝑘(𝑝−1)+1 , 𝑦𝑘(𝑝−1)+2 , … , 𝑦𝑁 ) Như vậy, sau trình thu dãy véctơ 𝑌1 , 𝑌𝑘+1 , … , 𝑌𝑘(𝑝−1)+1 xấp xỉ nghiệm (1) Mệnh đề đặc trưng trình thực thi ta xây dựng Mệnh đề Ma trận 𝐴 (4′ ) có tất thành phần 1, tức 𝐴 = (1,1, … ,1)𝑇 Chứng minh Từ (3), ta được: 𝐴(1) −𝑎11 −𝑎21 ⋮ = −𝑎𝑘−1,1 [ −𝑎1 𝐴(0) −𝑎12 ⋯ −𝑎1,𝑘−1 −𝑎22 ⋯ −𝑎2,𝑘−1 ⋮ ⋱ ⋮ ⋮ , −𝑎𝑘−1,2 ⋯ −𝑎𝑘−1,𝑘−1 −𝑎2 ⋯ −𝑎𝑘−1 1] 𝑎 ⋯ 10 ⋮ ⋮ ⋱ ⋮ = [⋮ ⋱ ⋮ 𝑎 ] , 𝑎0 = 1, 𝑘−1,0 𝑎0 ⋯ −1 𝑋 (𝑚+1) = 𝑋 (𝑚) − [𝐽𝐺 (𝑋 (𝑚) )] 𝐺(𝑋 (𝑚) ), (6) với 426 http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn Đinh Văn Tiệp Đtg 𝐵 (1) −1 ⋮ = [ Tạp chí KHOA HỌC & CƠNG NGHỆ ĐHTN −1 ⋮ Viết ma trận 𝐴(1) , [𝐴(1) ] −1 𝑏1 ⋮ 𝑏2 ⋮ −1 𝑏𝑘−1 𝑏𝑘 ] dạng khối: −1 𝟎 ] , [𝐴 ] = [𝐷 𝑉 −1 đó, 𝐷 nghịch đảo 𝐷, 𝐴(1) = [ 𝐷 𝑈 ⋯ ⋱ ⋱ ⋱ ⋯ (1) −1 𝟎], 𝑘−1 𝑘−1 ∑ 𝑎𝑗0 𝐷 = ∑ (− ∑ 𝑎𝑗𝑙 ) 𝐷 𝑗 𝑗=1 𝑘−1 𝑗=1 𝑙=1 𝑘−1 𝑘−1 𝑘−1 𝑗 = ∑ (∑(−𝑎𝑗𝑙 ) 𝐷 ) = ∑ (∑ 𝑎𝑗𝑙 𝐷 𝑗 ) 𝑙=1 𝑗=1 𝑙=1 𝑗=1 = ∑ 𝐸𝑙 = (1, … ,1)𝑇 ∈ 𝕄(𝑘 − 1,1) = ℝ𝑘−1 𝑙=1 𝟎 = (0, … ,0)𝑇 ∈ 𝕄(𝑘 − 1,1), 𝑈 = (−𝑎1 , … , −𝑎𝑘−1 ), 𝑉 ∈ 𝕄(1, 𝑘 − 1) Đẳng thức 𝑘 − thành phần véctơ 𝐴 = (1, … ,1)𝑇 ∈ ℝ𝑘 Kết hợp (8) (8′ ) được: 𝑘−1 Giả sử 𝑉 = (𝑥1 , … , 𝑥𝑘−1 )𝑇 𝐷 −1 có cột 𝐷1 , 𝐷 , … , 𝐷 𝑘−1 , hay viết là: 𝐷 𝑘−1 𝑗 𝑘−1 𝐷 = (−𝑎𝑖𝑗 )(𝑘−1)×(𝑘−1) , 𝐷 −1 ∈ 𝕄(𝑘 − 1), −1 225(06): 424 - 431 = [𝐷1 , 𝐷 , … , 𝐷 𝑘−1 ] 𝑘−1 𝑘−1 ∑ 𝑎𝑗0 𝑥𝑗 = ∑ (− ∑ 𝑎𝑗𝑙 ) 𝑥𝑗 = 𝑗=1 𝑘−1 𝑘−1 𝑗=1 𝑙=1 𝑘−1 Ký hiệu 𝐸𝑙 véctơ cột đơn vị thứ 𝑙 𝕄(𝑘 − 1,1) = ℝ𝑘−1 , ∀𝑙 = 1, … , 𝑘 − 1, ∑ (− ∑ 𝑎𝑗𝑙 𝑥𝑗 ) = − ∑ 𝑎𝑙 = 𝑎0 − = 𝐸𝑙 = (0, … ,0,1,0, ,0) Đẳng thức thành phần thứ 𝑘 véctơ 𝐴 = (1, … ,1)𝑇 ∈ ℝ𝑘 □ với số vị trí thứ 𝑙 Gọi 𝐼𝑘−1 ma trận đơn vị cấp 𝑘 − Ta có: −1 𝐷 𝐷 = 𝐼𝑘−1 = [𝐸1 , … , 𝐸𝑘−1 ], 𝐷 [𝑉 1] [ ] = (0, … ,0) ∈ 𝕄(1, 𝑘 − 1) = ℝ𝑘−1 , 𝑈 nên 𝑘−1 ∑(−𝑎𝑗𝑙 )𝐷 𝑗 = 𝐸𝑙 , ∀𝑙 = 1, … , 𝑘 − 1, (7) 𝑗=1 𝑘−1 ∑ 𝑎𝑗𝑙 𝑥𝑗 + 𝑎𝑙 = 0, ∀𝑙 = 1, … , 𝑘 − (8) 𝑗=0 Vì 𝑘 phương trình sai phân (3) có bậc 𝑟 > nên hệ số bậc phương trình 0, tức ta có: 𝑘−1 ∑ 𝑎𝑗𝑙 = 0, ∀𝑗 = 1, … , 𝑘 − 1, (7′) 𝑙=0 𝑘−1 ∑ 𝑎𝑗 = Kết hợp (7) 𝑗=0 ′ (7 ) được: (8′) 𝑙=1 𝑗=1 𝑙=1 Định lý sau khẳng định hội tụ (khi ℎ → 0+ ) nghiệm xấp xỉ phương trình (5) nghiệm phương trình vi phân (1) Điều cho thấy, dù phương trình phi tuyết (5), giá trị 𝑞 ≥ 0, có nhiều nghiệm, nhiên với kích thước bước ℎ đủ nhỏ, việc lựa chọn 𝑦𝑞𝑘 véctơ 𝑋 (0) = 𝑌(𝑞−1)𝑘+1 = (𝑦(𝑞−1)𝑘+1 , 𝑦(𝑞−1)𝑘+2 , … , 𝑦𝑞𝑘 ) xấp xỉ ban đầu trình lặp Newton (6) đắn Tức nghiệm phương trình phi tuyến (5) thu từ hội tụ dãy (6), với 𝑞 ≥ 0, gần tùy ý đến nghiệm (1), cần điều chỉnh giá trị ℎ đủ nhỏ Định lý Cố định 𝑞 ≥ Giả sử nghiệm thu bước thứ 𝑞 − nghiệm đúng, tức 𝑌𝑞𝑘+1 = 𝑌(𝑡𝑞𝑘+1 ) 𝑞 ≥ 𝑦𝑞𝑘 = 𝑦(𝑡𝑞𝑘 ) 𝑞 = Gọi 𝑋 = 𝑌∗ nghiệm phương trình (5), 𝐺(𝑋) = 0, thu từ hội tụ dãy (6), lim 𝑋 (𝑚) = 𝑌∗ , 𝑚→∞ http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn 427 Đinh Văn Tiệp Đtg Tạp chí KHOA HỌC & CƠNG NGHỆ ĐHTN tức 𝑌∗ phụ thuộc 𝑌𝑞𝑘 Gọi 𝑌 ∗ = 𝑌(𝑡𝑞𝑘+1 ) = 𝐴 = [0 −1 = [ −1 0 (𝑦(𝑡𝑞𝑘+1 ), … , 𝑦(𝑡𝑞𝑘+𝑘 )) nghiệm phương trình vi phân (1) Khi đó, lim+ ||𝑌∗ − 𝑌 ∗ || = 𝐵(1) Chứng minh Giả sử 𝝆𝒌 (ℎ)ℎ 𝑠 véc tơ có thành phần sai số làm trịn (truncation error) phương trình sai phân (3) với s số lớn cho ℎ 𝑠 nhân tử chung 𝑘 thành phần Vì hệ số bậc phương trình 0, nên 𝑠 ≥ Ta có: 𝐶 = [0 𝑌 ∗ = 𝑦(𝑡𝑞𝑘 )𝐴 + ℎ𝐵𝐹(𝑡𝑞𝑘+1 , 𝑌 ∗ ) + 𝝆𝒌 (ℎ)ℎ 𝑠 , 𝑌∗ = 𝑦𝑞𝑘 𝐴 + ℎ𝐵𝐹(𝑡𝑞𝑘+1 , 𝑌∗ ) Do đó, ‖𝑌 ∗ − 𝑌∗ ‖ ≤ ℎ‖𝐵‖‖𝐹(𝑡𝑞𝑘+1 , 𝑌 ∗ ) − 𝐹(𝑡𝑞𝑘+1 , 𝑌∗ )‖ + 𝝆𝒌 (ℎ)ℎ 𝑠 ≤ ℎ𝐿𝐹 ‖𝐵‖‖𝑌 ∗ − 𝑌∗ ‖ + 𝝆𝒌 (ℎ)ℎ 𝑠 (Ở đây, sử dụng điều kiện Lipschitz 𝑓 suy tồn số Lipschitz 𝐿𝐹 theo 𝑌 cho hàm véc tơ 𝐹(𝑡, 𝑌)) Từ đó, với ℎ > đủ nhỏ, cho < (1 − ℎ𝐿𝐹 ‖𝐵‖), 𝝆𝒌 (ℎ)ℎ 𝑠 ‖𝑌 ∗ − 𝑌∗ ‖ ≤ < 2𝝆𝒌 (ℎ)ℎ 𝑠 − ℎ𝐿𝐹 ‖𝐵‖ Do đó, ta có điều phải chứng minh Trên hướng tiếp cận thứ hai trình thực thi đề cập đoạn cuối phần mở đầu báo Hướng tiếp cận thứ xét đến trình lặp Newton lần để xấp xỉ 𝑌1 phần lại sử dụng đồng thời phương trình thứ k (3) phép hiệu chỉnh, vế phải có chứa 𝑓𝑘+1 mà giá trị tính tốn cách sử dụng phương trình liền trước thứ 𝑘 − 1, phương trình coi phép dự báo Như thế, hướng tiếp cận thứ này, ta có cặp dự báo - hiệu chỉnh Tuy nhiên, cặp làm hẹp đáng kể độ lớn miền ổn định tuyệt đối mà phương pháp BDF bậc thấp (𝑘 ≤ 6) vốn có Đối với 𝑘 = 3, ta có 𝑋 = (𝑥1 , 𝑥2 , 𝑥3 )𝑇 , 4/11 −8/11 𝐴(1) = [14/11 −23/22 0], 9/11 −18/11 428 −4/11 5/22 ], 2/11 −1/11 2/11 ] , 𝐴 = [1], 6/11 23 − 12 12 , 1] , 𝐵 = − 3 [4 4] (0) 𝑇 ℎ→0 225(06): 424 - 431 𝐺(𝑋) = 𝑦𝑞𝑘 𝐴 + ℎ𝐵𝐹(𝑡𝑞𝑘+1 , 𝑋) − 𝑋 𝑥1 𝑓(𝑡𝑛+1 , 𝑥1 ) = 𝑦𝑘 [1] − [𝑥2 ] + ℎ𝐵 [𝑓(𝑡𝑛+2 , 𝑥2 )], 𝑥3 𝑓(𝑡𝑛+3 , 𝑥3 ) 𝐽𝐺 (𝑋) 𝑓𝑦 (𝑡𝑛+1 , 𝑥1 ) 0 𝑓𝑦 (𝑡𝑛+2 , 𝑥2 ) = ℎ𝐵 [ ] (𝑡 ) 0 𝑓𝑦 𝑛+3 , 𝑥3 − 𝐼3 Với 𝑘 = 5, ma trận khối (4) (4′ ) cho sau, khối tác giả xây dựng, 𝐴 = (1,1,1,1,1)𝑇 , 1901 1387 109 637 − − 720 360 30 360 269 133 49 73 − − 90 45 15 45 237 99 39 69 𝐵= − − 80 40 10 40 134 116 68 56 − − 45 45 15 45 425 175 25 25 − [ 144 − 72 72 Trình thực thi thuật tốn 251 720 29 90 27 80 14 45 95 144 ] Trình thực thi phương pháp khối liên tục dạng BDF bậc 𝑘 trình bày dạng giải mã sau Trong trình thực thi này, số 𝑡𝑜𝑙 > đưa vào làm tiêu chuẩn dừng cho phép lặp Newton, đảm bảo sai số phép lặp bước khơng vượt q số Ngồi ra, số M đưa giới hạn cho số lần lặp http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn Đinh Văn Tiệp Đtg Tạp chí KHOA HỌC & CÔNG NGHỆ ĐHTN phép mà vượt số này, trình lặp thất bại Số đoạn chia 𝑁 yêu cầu bội nguyên lần 𝑘 INPUT hàm 𝑓(𝑡, 𝑦), [𝑎, 𝑏], giá trị ban đầu 𝑦(𝑎) = 𝛼, số đoạn chia 𝑁 = 𝑘𝑝, độ tin cậy 𝑡𝑜𝑙 > 0, số lần lặp tối đa M trình lặp OUTPUT dãy xấp xỉ 𝑤𝑖 nghiệm 𝑦(𝑡𝑖 ), ∀𝑖 = 0,1, , 𝑁, thơng báo q trình thất bại Trình thực thi Bước Khởi tạo: 𝑡0 ≔ 𝑎; 𝑤0 ≔ 𝛼; 𝑏−𝑎 ℎ≔ ; 𝑁 𝑌 ≔ (0, … , 𝑤0 )𝑇 ; % Viết 𝑌 = (𝑦1 , … , 𝑦𝑘 ) ma trận 𝐴, 𝐵; 𝑖 ≔ 0; hàm 𝐺(𝑋) = 𝑤0 𝐴 + ℎ𝐵𝐹(𝑡𝑖+1 , 𝑋) − 𝑋; 𝐹𝐿𝐴𝐺 ≔ 0; % Điều kiện vịng While Bước Quy trình lặp: While (𝑖 < 𝑁) and (𝐹𝐿𝐴𝐺 = 0) 𝑘 ≔ 1; While 𝑘 ≤ 𝑀 % Vịng While tính 𝐽𝐺 (𝑌), 𝐺(𝑌); giải hệ phương trình 𝐽𝐺 (𝑌)𝑋 = −𝐺(𝑌); cập nhật 𝑌 ≔ 𝑌 + 𝑋; If ‖𝑋‖ < 𝑡𝑜𝑙 then cập nhật 𝑤0 ≔ 𝑦𝑘 ; chấp nhận xấp xỉ 𝑌𝑖+1 ≔ 𝑌; exit;%Thốt vịng While Else If (𝑘 = 𝑀) then OUT=”fail”; 𝐹𝐿𝐴𝐺 ≔ 1; % Thông báo số vịng lặp vượt q M % Thốt vịng lặp While End If http://jst.tnu.edu.vn; Email: jst@tnu.edu.vn 225(06): 424 - 431 𝑘 ≔ 𝑘 + 1; End % Kết thúc vòng While 𝑖 ≔ 𝑖 + 3; End % Kết thúc vịng While ngồi Bước Xuất kết 𝑌1 , 𝑌𝑘+1 , … , 𝑌𝑘(𝑝−1)+1 , thơng báo q trình thất bại vượt q số vịng lặp M quy định Chương trình sau lập trình cho phương pháp với 𝑘 = Chương trình Matlab function outp=BDFblock(f,a,b,alpha,N,to l,M) % NOTE: N must be a multiple of k % Exact solution to compare -syms p(r); format long; eqn=diff(p,r)==f(r,p); icd=p(a)==alpha; as=dsolve(eqn,icd); xi=double(subs(as,r,a:(ba)/N:b)); ti=a:(b-a)/N:b; % STEP -t0=a; y0=alpha; h=(b-a)/N; A=[1;1;1]; B=[23/12,-4/3,5/12;7/3,2/3,1/3;9/4,0,3/4]; syms s0 s u z s1 s2 s3; K=diag([subs(diff(f(s0,z),z),[ s0,z],[s+h,s1]),subs(diff(f(s0 ,z),z),[s0,z],[s+2*h,s2]),subs (diff(f(s0,z),z),[s0,z],[s+3*h ,s3])]); Jg=h*B*K-eye(3);% Jacobian of G 429 Đinh Văn Tiệp Đtg Tạp chí KHOA HỌC & CƠNG NGHỆ ĐHTN G=u*A+h*B*[f(s+h,s1);f(s+2*h,s 2);f(s+3*h,s3)][s1;s2;s3];%function G t=[t0]; w=[y0]; Y=[0;0;y0]; % -STEP -i=0; FLAG=0; %Use to STOP outer while-loop while (i