chƯƠng 8: phƯƠng trÌnh vi phÂn · chƯƠng 8: phƯƠng trÌnh vi phÂn ĐẠo hÀm riÊng...

14
CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1. Khái nim chung: Partial Differential Equation (PDE) Toolbox cung cp mt môi trường mnh và mmmi để nghiên và gii các phương trình vi phân đạo hàm riêng trong mt phng. Dng phương trình cơ bnca PDE Toolbox là: .(cu) + au = f trong min Các phương trình đượcrirc hoá bng phương pháp phnthuhn(FEM). Các đốitượng trong PDE cung cp công cụ để: xác định bài toán PDE, nghĩa là xác định vùng 2D, các điu kin biên và các hsPDE. giibng phương pháp scác bài toán, nghĩa là to ra lưới không có cu trúc, rirc hoá phương trình và tìm nghimxpx. hin thkết qu2. Sdng GUI: a. GUI: PDE Toolbox có mtbgiao din đồ hongười dùng (graphical user interface GUI) bao gm các khiá cnh ca quá trình tìm nghimca PDE. Để kích hot nó ta nhplnh pdetool ticaslnh ca MATLAB. Trên casGUI có các menu và các icon. Ta dùng các menu hay icon này để thc hin các nhimvnht định. b. Các menu: Có mtsmenu sau đây trên casGUI: File:Tmenu này ta có thOpen và Save mô hình dướidng Mfile. Ta có thin đồ thvà thoát khi GUI. Edit:Tmenu này ta có thct, dán, xoá, copy các đốitượng và chntt ccác đốitượng. Options: Menu này cha các tuchncũng như các thay đổi trên trc x. Draw:Tmenu này ta có thchn các đốitương cơ bn để v. Boundary: Menu này dùng để nhp các điu kin biên cho các vùng. PDE: Menu này cung cp các hp thoi để mô tPDE và xut các hsca nó vào vùng làm vic. Mesh: Ta dùng menu này để to ra lưới và thay đổi các tam giác. Solve: Ta chn menu này để gii các phương trình PDE. Plot:Tmenu này ta vnghim. 154

Upload: others

Post on 01-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG

§1. MỞ ĐẦU

1. Khái niệm chung: Partial Differential Equation (PDE) Toolbox cung cấp một môi trường mạnh và mềm mại để nghiên và giải các phương trình vi phân đạo hàm riêng trong mặt phẳng. Dạng phương trình cơ bản của PDE Toolbox là: ‐∇.(c∇u) + au = f trong miền Ω Các phương trình được rời rạc hoá bằng phương pháp phần tử hữu hạn(FEM). Các đối tượng trong PDE cung cấp công cụ để:

• xác định bài toán PDE, nghĩa là xác định vùng 2D, các điều kiện biên và các hệ số PDE.

• giải bằng phương pháp số các bài toán, nghĩa là tạo ra lưới không có cấu trúc, rời rạc hoá phương trình và tìm nghiệm xấp xỉ.

• hiển thị kết quả 2. Sử dụng GUI: a. GUI: PDE Toolbox có một bộ giao diện đồ hoạ người dùng (graphical user interface GUI) bao gồm các khiá cạnh của quá trình tìm nghiệm của PDE. Để kích hoạt nó ta nhập lệnh pdetool tại cửa sổ lệnh của MATLAB. Trên cửa sổ GUI có các menu và các icon. Ta dùng các menu hay icon này để thực hiện các nhiệm vụ nhất định. b. Các menu: Có một số menu sau đây trên cửa sổ GUI: • File: Từ menu này ta có thể Open và Save mô hình dưới dạng M‐file. Ta có thể in đồ thị và thoát khỏi GUI. • Edit:Từ menu này ta có thể cắt, dán, xoá, copy các đối tượng và chọn tất cả các đối tượng. • Options: Menu này chứa các tuỳ chọn cũng như các thay đổi trên trục x. • Draw: Từ menu này ta có thể chọn các đối tương cơ bản để vẽ. • Boundary: Menu này dùng để nhập các điều kiện biên cho các vùng. • PDE: Menu này cung cấp các hộp thoại để mô tả PDE và xuất các hệ số của nó vào vùng làm việc. • Mesh: Ta dùng menu này để tạo ra lưới và thay đổi các tam giác. • Solve: Ta chọn menu này để giải các phương trình PDE. • Plot: Từ menu này ta vẽ nghiệm.

154

Page 2: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

• Window: Chọn cửa sổ làm việc • Help: Hiển thị cửa sổ trợ giúp. c. Thanh công cụ: Thanh công cụ có dạng như hình vẽ:

d. Các GUI mode: Quá trình giải PDE gồm các bước sau: • xác định vùng 2‐D • xác định điều kiện biên • xác định PDE • tạo lưới tam giác • giải PDE • vẽ nghiệm và các thuộc tính vật lí pdetool GUI được thiết kế theo cách tương tự. Ta làm việc trong 6 kiểu khác nhau, mỗi kiểu tương ứng với một bước trong quá trình giải PDE. • Trong Draw mode ta tạo vùng 2‐D. • Trong Boundary mode ta có thể mô tả điều kiện biên • Trong PDE mode ta nhập các hệ số của phương trình vi phân. • Trong Mesh mode ta khởi tạo lưới. • Trong Solve mode ta giải phương trình. • Trong Plot mode ta ve nghiệm và các thuộc tính vật lí khác e. Mô hình CGS và Set Formular: PDE Toolbox dùng mẫu mô hình CSG để mô hình hoá.Ta có thể vẽ các đối tượng chồng nhau. Có 4 loại đối tượng: • Circle • Polygon • Rectangle • Ellipse Mỗi đối tượng có một tên duy nhất trong GUI. Tên mặc định của đối tượng circle là C, đối tượng đa giác là P, đối tượng hình chữ nhật là R, đối tượng hình vuông SQ và đối tượng ellip là E. Tên được hiển thị trên đối tượng. Trong Draw mode ta có thể thay đổi tên và hình dạng đối tượng bằng cách nhấp đúp lên nó. Khi đó một hộp thoại được mở ra và ta thay đổi thông số. Các toán tử + , =, * được dùng để kết hợp các vùng. Toán tử + được dùng để tạo tổ hợp, toán tử ‐ dùng tạo vùng có phần rỗng và toán tử * dùng để tạo ra vùng có giao nhau

155

Page 3: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

f. Tạo các góc tròn: Một ví dụ về cách dùng các công thức là tạo ra một hình chữ nhật có góc tròn. Ta khởi động GUI và chọn Grid và Snap to grid. Sau đó thay đổi Grid Spacing trên trục x là [‐1.5:0.1:1.5] và trên trục y là [‐1:0.1:1]. Chọn Rectangle/square từ menu Draw để vẽ hình chữ nhật bắt đầu tại(‐1,0.5) rộng 2 và cao 1. Để tạo góc tròn ta thêm các hình tròn ở các góc. Mỗi hình tròn có bán kính 0.2 và tâm cách góc đoạn 0.2. Tiếp đến ta vẽ 4 hình vuông mỗi hình có cạnh 0.2 ở 4 góc. Bây giờ ta soạn công thức cho vùng: R1‐(SQ1+SQ2+SQ3+SQ4)+C1+C2+C3+C4 và ghi vào phần trên của GUI. 3. Sử dụng pdrtool: Để bắt đầu ta sử dụng graphic user interface (GUI) pdetool để giải từng bước PDE. Ta sẽ giải phương trình Poisson ‐∆u = f. Miền 2‐D mà ta giải bài toán sẽ rất phức tạp. Điều kiện biên dùng kiểu Neumann và Dirichlet. Trước hết ta gọi MATLAB. Để gọi GUI ta nhập lệnh pdetool từ cửa sổ MATLAB. Để dễ vẽ hình ta chọn Grid và Snap từ menu Option. Bước đầu tiên để giải bài toán là vẽ vùng 2‐D cần giải. GUI cung cấp 4 loại đối tượng cơ bản: đa giác, hình chữ nhật, và hình ellip. Các đối tượng được dùng để tạo ra mô hình Constructive Solid Geometry(CSG). Mỗi đối tượng được gán cho một nhãn và dùng các nhãn này ta tạo ra được một hình phức tạp là tổ hợp của các hình đơn giản trên. Để chọn một đối tượng, ta nhấp chuột lên icon của nó hay chọn nó từ menu Draw. Icon hình có dấu + dùng để vẽ hình từ tâm. Nếu không có dấu + hình được vẽ từ góc. Khi muốn vẽ hình ta bấm vào icon và đặt con trỏ chuột lên hình rồi kéo và thả. Muốn tạo hình vuông hay tròn ta dùng chuột phải. Đầu tiên ta vẽ một hình chữ nhật và đặt tên là R1. Muốn di chuyển hình ta bấm chuột vào hình và kéo đến vị trí mong muốn rồi thả. Muốn thay đổi kích thước hình bấm đúp chuột vào nó để kích hoạt hộp thoại rồi nhập kích thước mong muốn. Từ hộp thoại ta có thể thay đổi tên của nhãn. Nếu ta muốn xoá hình, chọn nó rồi nhấn Del hay chọn Clear từ menu Edit. Khi được chọn biên đối tượng có màu đen. Muốn chọn nhiều đối tượng cùng lúc ta nhấn thêm phím Shifft. Khi muốn chọn tất cả ta dùng Select All trong menu Edit(hay dùng Ctrl + A). Tiếp theo ta vẽ một hình tròn bằng nhấp chuột vào icon hình ellip có dấu + rồi kéo và thả(dùng chuột phải). CSG ta tạo là hình chữ nhật R1 và E1 có được bằng cách dùng công thức R1 + C1 ở ô Set formula trên cửa sổ.

156

Page 4: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

Cuối cùng ta thêm hai đối tượng là hình chữ nhật R2 và hình tròn E2. Để tạo mô hình ta nhập công thức (R1 + E1 + R2) ‐ E2. Ta có thể lưu CSG như là M‐file bằng cách dùng Save as từ menu File. Sau khi vẽ xong hình ta nhập điều kiện biên cho các biên ngoài cùng. Để nhập điều kiện biên ta bấm chuột vào icon ∂Ω hay chọn Boundary Mode từ menu Boundary. Ta có thể bỏ các biên của vùng con và xác định điều kiện biên. Các đoạn có cạnh xám là biên của vùng con là các vùng chồng nhau của các đối tượng ban đầu. Từ menu Boundary chọn Remove All Subdomain Borders để bỏ tất cả các biên con. Các biên có màu và mũi tên. Màu phản ánh kiểu điều kiện biên và mũi tên hướng về cuối của đoạn biên. Thông tin về hướng được dùng khi khi điều kiện biên được thông số hoá dọc theo biên. Điều kiện biên có thể là hàm của x, y hay là hằng. Mặc định trên biên có điều kiện biên Dirichlet u = 0. Điều kiện biên Dirichlet được thể hiện bằng màu đỏ. Điều kiện biên có thể là Neumann tổng quát(màu xanh) hay hỗn hợp(màu green). Ta chọn điều kiện biên mong muốn bằng cách nhấp chuột vào đoạn biên hay Shift‐click nếu muốn chọn nhiều đoạn biên hay vào menu Edit và chọn Select All và các đoạn biên được chọn có màu đen. Khi này hộp thoại điều kiện biên hiện ra và ta nhập điều kiện biên mong muốn. Trong ví dụ này

ta chọn điều kiện biên Neumann 5nu

−=∂∂ , nghĩa là độ dốc của nghiệm theo

phương pháp tuyến của đoạn biên này là ‐5. Bấm đúp chuột vào các đoạn biên và trong ô Boundary Condition chọn Neumann. Sau đó nhập giá trị ‐5 vào ô g rồi chọn OK. Giá trị vẫn để mặc định là 0. Sau khi mô tả điều kiện biên ta cần nhập các hệ số của PDE. Ta kích hoạt hộp thoại PDE Specification bằng cách nhấp đúp chuột vào icon PDE hay chọn PDE Specification trong menu PDE. Ta cũng có thể bấm đúp vào từng vùng con để nhập các hệ số PDE cho từng vùng con đó. Trong hộp thoại này ta còn phải chọn kiểu phương trình(elliptic, parabolic, hyperbolic hay eigenmode) và xác định kiểu ứng dụng theo kiểu PDE. Bài toán ta đang xét là bài toán elliptic nên ta đánh dấu vào ô tương ứng. Ta nhập các giá trị c = 1.9, a = 0.0 và f = 10 cho bài toán này. Tiếp theo ta tạo lưới tam giác bằng cách bấm chuột vào icon hình tam giác hay chọn Mesh | Initialize Mesh. Nếu muốn kết quả chính xác hơn ta tinh chỉnh lưới bằng cách nhấp vào icon có 4 tam giác hay chọn Mesh | Refine Mesh. dụng Mesh | Jiggle Mesh ta có thể tăng chất lượng của lưới. Ta có thể huỷ các thay đổi về lưới bằng cách chọn Mesh | Undo. Để giải phương trình ta bầm vào icon = hay chọn Solve | Solve PDE. Kết

157

Page 5: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

quả được vẽ ra. Mặc định, hình vẽ dùng màu và thanh màu để chỉ giá trị. Nếu muốn nghiệm được xuất dưới dạng vec tơ cho vùng làm việc của MATLAB. Có nhiều kiểu vẽ cho phép ta quan sát nghiệm. Muốn vậy ta vào menu Plot và chọn kiểu hiển thị nghiệm thích hợp. 4. Dùng các hàm dòng lệnh: Mặc dù pdetool Gui cung cấp một môi trường làm việc thuận tiện nhưng vẫn có những trường hợp ta phải dùng các hàm dòng lệnh. Đó là: • hình dạng hình học của vùng được khảo sát khác đường thẳng, cung tròn, cung ellip. • điều kiện biên không tiêu chuẩn • các hệ số của PDE và của điều kiện biên phức tạp • có trên hai biến phụ thuộc • nghiệm không bị hạn chế • nghiệm khó biểu diễn. Quá trình xác lập bài toán và giải nó được phản ánh trong thiết kế của GUI. Một số cấu trúc dữ liệu xác định các khía cạnh khác nhau của bài toán và các giai đoạn xử lí khác nhau tạo ra các cấu trúc dữ liệu mới. a. Mô hình CSG: Mô hình CSG được mô tả bằng ma trận Geometry Description, set formular và ma trận Name Space. Các cấu trúc dữ liệu này được mô tả trong hàm decsg. b. Phân nhỏ các hình: Hình được phân nhỏ được mô tả bằng ma trận Decomposed Geometry hay bằng ma trận Geometry M‐file. Khi này hình dạng được mô tả như là một bộ các vùng cạnh nhau cực tiểu bao bởi các đoạn biên. Một ma trận Decomposed Geometry có thể được tạo từ mô hình CSG bằng dùng hàm decsg. Nó cũng có thể xuất từ GUI bằng cách chọn Export Decomposed Geometry trong menu Boundary. Một Geometry M‐file tương đương với một ma trận Decomposed Geometry đã cho có thể được tạo ra bằng cách dùng hàm wgeom và xem bằng hàm pdegplot. Cấu trúc dữ liệu của ma trận Decomposed Geometry và M‐file Geometry được mô tả trong hàm pdegeom c. Điều kiện biên: Điều kiện biên được mô tả bằng ma trận Boundary Condition hay M‐file Boundary. Các điều kiện biên được cho như là hàm trên các biên. Ma trận điều kiện biên có thể xuất từ GUI bằng chọn Export Decomposed Geometry, Boundary Cond’s. . .trong menu Boundary. Một M‐file chứa điều kiện biên tương đương với ma trận điều kiện biên có thể tạo được

158

Page 6: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

từ hàm wbound. Cấu trúc dữ liệu của ma trận điều kiện biên mô tả trong hàm assemb và pdebound. d. Hệ số của phương trình: PDE được mô tả bằng ma trận Coefficient hay M‐file Coffficient đối với mỗi hệ số c, a, f và d. Các hệ số là hàm trên các vùng con. Các hệ số có thể xuất từ GUI bằng chọn Export PDE Coefficients. . . từ menu PDE. Cấu trúc dữ liệu của nó được mô tả trong hàm assempde. e. Lưới: Một lưới tam giác được mô tả bằng dữ liệu lưới gồm ma trận Points, ma trận Triangle. Trong lưới, vùng nhỏ nhất được tam giác hoá thành các vùng con, các đoạn biên. Số liệu lưới được tạo từ hình dạnh hình học bằng hàm initmesh và thay đổi bằng hàm refinemesh và jigglemesh. Hàm adaptmesh tạo số liệu lưới. Lưới được vẽ bằng hàm pdemesh. f. Nghiệm: Nghiệm của bài toán PDE được biểu diễn bằng vec tơ. Mỗi nghiệm là giá trị tại một điểm lưới của mỗi biến phụ thuộc. Các véc tơ nghiệm được tạo ra bằng hàm assempde, pdenonlin, adaptmesh, parabolic, hyperbolic, và pdeeig. g. Quá trình và biểu diễn: Cho cặp nghiệm‐lưới ta có các công cụ khác nhau để xem các nghiệm. pdeintrp và pdertni có thể dùng để nội suy giữa các hàm. tri2grid dùng để nội suy hàm từ lưới tam giác tới lưới hình chữ nhật. pdegrad và pdecgrad tính gradient của nghiệm. pdeplot để vẽ nghiệm và pdecont, pdesurf thể hiện nghiệm dạng contour và mặt.

§1. MỘT SỐ BÀI TOÁN 1. Các ví dụ về bài toán elliptic:

a. Phương trình Poisson trên hình tròn đơn vị: Ví dụ đầu tiên về bài toán elliptic là giải phương trình Poisson xác định

trên hìng tròn đơn vị. Bài toán được mô tả bằng phương trình: ‐∆u = 1 trong miền Ω, u = 0 trên ∂Ω. Trong đó Ω là hình tròn đơn vị. Trong trường hợp này nghiệm chính xác là:

4

yx1)y,x(u22 −−

=

Như vậy ta có thể đánh giá được sai số theo các phương pháp chia lưới khác nhau. Ta thực hiện giải bài toán theo các bước sau:

• nhập lệnh pdetool từ cửa sổ lệnh của MATLAB và con trỏ chuột trở thành dấu +.

• mở menu Options, đánh dấu mục Grid và Snap. Vẽ hình tròn đơn vị bằng bấm vào icon hình ellip trên thanh công cụ và kéo rồi thả chuột. Nếu

159

Page 7: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

hình tròn chưa thỏa mãn yêu cầu thì bấm đúp vào nó để kích hoạt hộp thoại và nhập lại các thông số mô tả chính xác tâm và bán kính của hình tròn.

• nhập kiểu biên bằng cách bấm vào menu Boundary và chọn Boundary Mode hay bấm đúp vào nút ∂Ω. Khi này biên của vùng ∂Ω được vẽ và biên ngoài được gán điều kiện biên mặc định(điều kiện biên Dirichlet u = 0 trên biên). Trong trường hợp này đây là điều kiện biên mong đợi. Nếu điều kiện biên khác đi ta bấm đúp vào biên để hiển thị hộp thoại và sửa lại điều kiện biên cho phù hợp và hiển thị nó.

• để xác định phương trình vi phân đạo hàm riêng nhấp chuột vào nút PDE trên thanh công cụ(có thể chọn menu PDE | PDE Speficification). Khi này một hộp thoại được mở ra và ta có thể xác định các hệ số c , a và f. Trong trường hợp này c = 1 , f = 1 và a = 0.

• nhấp chuột vào nút Mesh(nút hình tam giác) hay chọn Mesh | Initialize Mesh . Khi này một lưới hình tam giác được khởi gán và hiển thị.

• nhấp nút Refine(nút tam giác có nhiều tam giác con) hay chọn Mesh | Refine Mesh. Như vậy lưới mịn hơn được khởi gán và hiển thị.

• để giải phương trình nhấp nút = hay chọn menu Solve | Solve PDE (Ctrl‐E). Dùng hộp thoại Plot Selection trong menu Plot | Parameters để chọn các hiển thị nghiệm khác nhau.

• để so sánh nghiệm số và nghiệm chính xác, chọn menu Plot | Parameters để hiển thị hộp thoại Plot Selection. Trong mục Property của Color chọn user enrty. Sau đó nhập biểu thức MATLAB u‐(1‐x.^2‐y.^)/4 vào trường soạn thảo user etry và nhấp nút lệnh Plot. Ta nhận được hình vẽ sai số tuyệt đối của nghiệm. Để xuất kết quả vào vùng làm việc của MATLAB ta dùng Mesh | Export Mesh và Solve | Export Solution. Để tinh chỉnh kết quả nhấp nút Refine và = nhiều lần. Kết quả lưu trong ct8_2.m.

b. Bài toán phản xạ sóng: Bài toán này dùng để tính phản xạ sóng từ một vật thể bị rọi sóng tới. Với bài toán này ta khảo sát một màng nằm ngang rộng vô hạn chịu các dịch chuyển nhỏ theo chiều thẳng đứng u. Màng cố định ở biên. Ta coi môi trường đồng nhất và tốc độ sóng là hằng c. Khi sóng là điều hoà theo t ta có thể tính trường bằng cách giải một bài toán xác lập duy nhất.

Với tie)y,x(u)t,y,x(u ω−= phương trình sóng có dạng:

0uctu2

2

=∆−∂∂

trở thành: 0ucu2 =∆−ω−

160

Page 8: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

hay phương trình Helmholz: 0uku 2 =−∆−

Trong đó k là số sóng, liên quan đến tần số góc ω, tần số f và độ dài sóng λ bằng:

λπ

=2

cf2

ck

Bây giờ ta phải mô tả điều kiện biên. Coi sóng tới là một sóng phẳng theo hướng:

))asin(),a(cos(a =r : ti)tx.ak(i e)y,x(ve)t,y,x(v ω−ω− ==

rr

Trong đó : )y,x(ve x.aik =

rr

u là tổng của v và sóng phản xạ r: u = v + r

Điều kiện biên đối với biên đối tượng là u = 0, nghĩa là r = ‐ v(x,y)(với sóng âm, v là nhiễu loạn áp suất do đó điều kiện biên thích hợp phải là ∂u/∂n=0). Sóng phản xạ đi ra khỏi đối tượng. Điều kiện biên bên ngoài phải chọn sao sóng không bị phản xạ. Điều kiện như vậy thường gọi là không phản xạ và ta dùng điều kiện bức xạ Sommerfeld. Khi đạt đến vô cùng, r thoả mãn xấp xỉ phương trình sóng một chiều:

0rctr

=∇ξ+∂∂ r

cho phép sóng chỉ chuyển động theo hướng x(x là khoảng cách bức xạ từ vật thể). Với nghiệm điều hoà theo t,đ iều này trở thành điều kiện biên Neumann tổng quát hoá:

ikrr =∇ξr

Vì lí do đơn giản hoá, coi pháp tuyến bên ngoài của vùng khảo sát xấp xỉ

hướng bên ngoài ξ. Bây giờ ta dùng pdetool để giải bài toán. Sử dụng mode Generic Scalar bằng cách vào menu Option|Application và đánh dấu vào Generic Scalar , bắt đầu bằng cách vẽ vùng 2‐D của bài toán.

Đối tượng bị chiếu sáng là một hình vuông R1 với cạnh 0.1 đơn vị và tâm ở [0.8 0.5] và quay 450 (vào Draw|Rotate ) và coi vùng tính là C1 là hình tròn có bán kính 0.45 và tâm cùng một chỗ với hình vuông. Mô hình CGS là C1‐R1.

Với biên ngoài, ta dùng điều kiện biên Neumann với q = ‐jk. Hệ số sóng k = 60 tương ứng với bước sóng 0.1 đơn vị. Như vậy ta cần nhập giá trị q = ‐60j và g = 0 bằng cách vào menu Boundary| Specify Boundary Condition...

Đối với biên hình vuông ta dùng điều kiện biên Dirichlet:

161

Page 9: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

x.aike)y,x(vrrr

−=−= Trong bài toán này, sóng tới phải đi qua đoạn ‐x. Như vậy điều kiện

biên có dạng đơn giản là: ikxe)y,x(vr −=−=

Vào menu Boundary| Specify Boundary Condition... và nhập điều kiện biên Dirichlet h = 1, r = ‐exp(‐i*60*x). Vào menu PDE|PDE Specification... và nhập các hệ số của phương trình là c = 1, a = ‐3600 và f = 0. Tiếp theo bấm vào nút công cụ chia lưới để chia lưới cho bài toán. Ta lưu tất cả kết quả vào file ct8_4.m.

Bây giờ ta có thể giải bài toán và có nghiệm phức. Để thấy được sự lan truyền sóng phản xạ, sau khi giải bài toán ta chọn

Draw|Export Geometry Description, Set Formular, Label...; Boundary|Export Decomposed Gemetry, Boundary Condʹs...; PDE|Export Coeficients...; Solve|Export Solution... và chạy các lệnh MATLAB sau(lưu trong file ct8_5.m):

m = 10; % so khung hinh h = newplot; hf = get(h,ʹParentʹ); set(hf,ʹRendererʹ,ʹzbufferʹ) axis tight; set(gca,ʹDataAspectRatioʹ,[1 1 1]); axis off; M = moviein(m,hf); maxu = max(abs(u)); for j = 1:m uu = real(exp(‐j*2*pi/m*sqrt(‐1))*u); fprintf(ʹ%d ʹ,j); pdeplot(p,e,t,ʹxydataʹ,uu,ʹcolorbarʹ,ʹoffʹ,ʹmeshʹ,ʹoffʹ); caxis([‐maxu maxu]); axis tight, set(gca,ʹDataAspectRatioʹ,[1 1 1]); axis off; M(:,j) = getframe(hf); if j = = m fprintf(ʹdone\nʹ); end end movie(hf,M,50);

162

Page 10: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

c. Bài toán mặt cực tiểu: Trong nhiều bài toán hệ số c, a và f không chỉ phụ thuộc vào x và y mà còn vào u. Ta khảo sát phương trình:

0u|u|1

1.2

=⎟⎟

⎜⎜

⎛∇

∇+∇−

trong hình tròn đơn vị ( ) 1yx|y,x 22 ≤+=Ω với u = x2 trên ∂Ω. Đây là bài toán phi tuyến tính và không thể giải với trình giải solver. Do đó trình pdenonlin được dùng.

Vùng tìm nghiệm là hình tròn đơn vị. Vẽ hình tròn này và xác định điều kiện biên bằng cách vào menu Boundary|Boundary Mode. Dùng Select All của menu Edit để chọn tất cả các biên. Sau đó nhấp đúp vào biên để mở hộp thoại Boundary Condition. Điều kiện biên u = x^2 được nhập vào bằng cách đánh x.^2 vào mục của r. Tiếp theo mở hộp thoại PDE Specification để xác định

PDE. Đây là phương trình elliptic với 2|u|1

1c∇+

= , a = 0 và f = 0. Hệ số c được

nhập vào bằng cách đánh c =1./sqrt(1+ux.^2+uy.^2). Khởi gán lưới và làm tinh lại một lần. Trước khi giải phương trình chọn Parameters . . . từ menu Solve và dùng tuỳ chọn Use nonlinear và đặt sai số 0.001. Nhấn nút = để giải phương trình. Dùng hộp thoại Plot Selection để vẽ nghiệm dạng 3‐D.

d. Chia vùng: PDE Toolbox được thiết kế để làm việc với sự phân vùng cấp 1. Nếu vùng Ω phức tạp, thường nên phân nó thành các vùng có cấu trúc đơn giản hơn đơn giản. Các cấu trúc như vậy thường được thực hiện bởi pdetool.

Giả sử Ω là một tập hợp các vùng con Ω1, Ω2,..., Ωn.Vậy ta có thể đánh số lại các nút của lưới trên Ω sao cho chỉ số của các nút ở các vùng con được nhóm lại với nhau trong khi tất cả chỉ số của các nút chung của 2 hay nhiều vùng con như cũ. Do ma trận K có các số hạng khác 0 chỉ ở các hàng và các cột chỉ các nút cạnh nhau, nên nó được phân thành:

⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜

⎛⋅⋅⋅⋅⋅⋅

=

CBBBBK00

B0K0B00K

K

n21

Tnn

T22

T11

L

L

MMOMM

Trong khi vế phải là:

163

Page 11: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

⎟⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜⎜

=

c

n

2

1

ff

ff

f M

Thường trình assempde của PDE Toolbox có thể gộp các ma trận Kj, Bj, fj và C một cách riêng rẽ nên ta có thể kiểm soát được việc lươ và xử lí các ma trận này. Hơn nữa cấu trúc của hệ thống tuyến tính Ku = F được đơn giản hoá bằng cách chia K thành từng ma trận riêng phần như trên. Bây giờ ta khảo sát một màng hình L. Ta có thể vẽ màng này bằng lệnh: pdegplot(ʹlshapegʹ) Chú ý các biên giữa các vùng con. Có 3 vùng con vì miền đang xét có dạng L. Như vậy công thức ma trận với n = 3 từ trên có thể dùng. Bây giờ ta tạo lưới :

[p,e,t] = initmesh(ʹlshapegʹ); [p,e,t] = refinemesh(ʹlshapegʹ,p,e,t); [p,e,t] = refinemesh(ʹlshapegʹ,p,e,t);

Với trường hợp này với n = 3 ta có:

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

c

3

2

1

3

2

1

321

T33

T22

T11

ffff

cuuu

CBBBBK00B0K0B00K

Và nghiệm xác định bằng cách loại trừ khối:

L

)uBf(KufKBfKBfKBfu)BKBBKBBKBC(

cT11

111

31

3321

2211

11ccT3

133

T2

122

T1

111

−=

−−−=−−−−

−−−−−−

Khi giải bài toán, ta dùng phương pháp phân tích Choleski. Cac lệnh MATLAB như sau( lưu trong ct8_7.m):

echo on clc % Gia pt Poissonʹs % ‐div(grad(u))=1 % tren mang L voi u=0 tren bien. % Bai toan duoc gia bang cach chia vung. pause % Nhan phim bat ki de tiep tuc.

164

Page 12: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

clc % Dinh nghia bai toan g = ʹlshapegʹ; % mang dang L b = ʹlshapebʹ; % 0 tren bien c = 1; a = 0; f = 1; time = []; [p,e,t] = initmesh(g); [p,e,t] = refinemesh(g,p,e,t); [p,e,t] = refinemesh(g,p,e,t); pause % Nhan phim bat ki de tiep tuc. clc np = size(p,2); % Truoc het tim cac diem chung cp = pdesdp(p,e,t); % Dinh vi khong gian nc = length(cp); C = zeros(nc,nc); FC = zeros(nc,1); pause % Nhan phim bat ki de tiep tuc. % Ket hop vung 1 va cap nhat [i1,c1] = pdesdp(p,e,t,1); ic1 = pdesubix(cp,c1); [K,F] = assempde(b,p,e,t,c,a,f,time,1); K1 = K(i1,i1); d = symmmd(K1); i1 = i1(d); K1 = chol(K1(d,d)); B1 = K(c1,i1); a1 = B1/K1; C(ic1,ic1) = C(ic1,ic1) + K(c1,c1) ‐ a1*a1ʹ;

165

Page 13: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

f1 = F(i1); e1 = K1ʹ\f1; FC(ic1) = FC(ic1) + F(c1) ‐ a1*e1; pause % Nhan phim bat ki de tiep tuc. % Ket hop vung 2 va cap nhat [i2,c2] = pdesdp(p,e,t,2); ic2 = pdesubix(cp,c2); [K,F] = assempde(b,p,e,t,c,a,f,time,2); K2 = K(i2,i2); d = symmmd(K2); i2 = i2(d); K2 = chol(K2(d,d)); B2 = K(c2,i2); a2 = B2/K2; C(ic2,ic2) = C(ic2,ic2) + K(c2,c2) ‐ a2*a2ʹ; f2 = F(i2); e2 = K2ʹ\f2; FC(ic2) = FC(ic2) + F(c2) ‐ a2*e2; pause % Nhan phim bat ki de tiep tuc. % Ket hop vung 3 va cap nhat [i3,c3] = pdesdp(p,e,t,3); ic3 = pdesubix(cp,c3); [K,F] = assempde(b,p,e,t,c,a,f,time,3); K3 = K(i3,i3); d = symmmd(K3); i3 = i3(d); K3 = chol(K3(d,d)); B3 = K(c3,i3); a3 = B3/K3; C(ic3,ic3) = C(ic3,ic3) + K(c3,c3) ‐ a3*a3ʹ; f3 = F(i3); e3 = K3ʹ\f3; FC(ic3) = FC(ic3 )+ F(c3)‐a3*e3; pause % Nhan phim bat ki de tiep tuc.

166

Page 14: CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN · CHƯƠNG 8: PHƯƠNG TRÌNH VI PHÂN ĐẠO HÀM RIÊNG §1. MỞ ĐẦU 1.. Khái niệm chung: Partial Differential Equation (PDE) Toolbox

% Giai u = zeros(np,1); u(cp) = C\FC; % cac diem chung u(i1) = K1\(e1‐a1ʹ*u(c1)); % cac diem tren vung 1 u(i2) = K2\(e2‐a2ʹ*u(c2)); % cac diem tren vung 2 u(i3) = K3\(e3‐a3ʹ*u(c3)); % cac diem tren vung 3 % Ve pdesurf(p,t,u) pause % Nhan phim bat ki de tiep tuc. echo off Các lệnh giải bằng GUI lưu trong ct8_8.m

2. Các ví dụ về bài toán parabolic:

a. Phương trình truyền nhiệt: khối kim loại bị đốt nóng: Bài toán parabolic nói chung là bài toán về phương trình truyền nhiệt dạng:

0utud =∆−∂∂

Phương trình truyền nhiệt mô tả sự lan truyền nhiệt trong các vật thể. Ví dụ đầu tiên mà ta xem xét là một thanh kim loại có một lỗ hình chữ nhật bị đốt nóng. Tại đầu bên trái của thanh nhiệt độ là 1000C. Tại đầu bên phải nhiệt lan truyền từ thanh vào môi trường không khí chung quanh với tốc độ hằng, ví dụ là 10. Các biên khác cách nhiệt. Do đó ta có các điều kiện biên sau: • u = 100 ở bên trái (điều kiện biên Dirichlet)

• 10nu

−=∂∂ ở bên phải (điều kiện biên Neumann)

• 0nu=

∂∂ trên các biên khác(điều kiện biên Neumann)

Với phương trình truyền nhiệt ta cần điều kiện đầu: nhiệt độ của thanh kim loại tại t0. Trong bài toán này nhiệt độ ban đầu của thanh là 00C. Cuối cùng ta xác định thời điểm bắt đầu truyền nhiệt là t = 0 và ta muốn tính toán quá trình truyền nhiệt trong suốt 5s. Sau khi đã khởi động pdetool và chọn Generic Scalar ta vẽ mô hình CSG dễ dàng. Ta vẽ hình chữ nhật R1: [‐0.5 ‐0.8 1 1.6]. Ta vẽ tiếp hình chữ nhật khác (lỗ) R2: [‐0.05 ‐0.4 0.1 0.8]. Mô hình này là R1 ‐ R2. Bấm vào nút ∂Ω để xác định biên để mô tả biên và điều kiện biên. Dùng

167