Lý do chọn đề tài Phương trình đạo hàm riêng xuất hiện trong các vấn đề của vật lý: Lý thuyếtđàn hồi, cơ học cơ học lượng tử, cơ học chất lỏng, điện từ trường, thuỷ khí độnghọc….. Từ nh
Trang 1LỜI CẢM ƠN
Luận văn được hoàn thành tại trường Đại học sư phạm Hà Nội 2 dưới sự hướngdẫn của Tiến sĩ Nguyễn Văn Khải
Tác giả xin trân trọng cảm ơn Ban giám hiệu trường Đại học sư phạm Hà Nội
2, phòng sau đại học, các thầy cô giáo trong nhà trường, các thầy cô giáo dạy caohọc chuyên ngành Toán giải tích đã tạo mọi điều kiện thuận lợi cho tôi kết thúc tốt
đẹp chương trình cao học và hoàn thành luận văn tốt nghiệp
Tác giả xin bày tỏ lòng biết ơn tới thầy giáo TS.Nguyễn Văn Khải, người đãluôn quan tâm, động viên, tận tình hướng dẫn trong suốt quá trình làm luận văn Tác giả trân trọng cám ơn Sở Giáo dục và đào tạo Bắc Giang, trường THPT LýThường Kiệt và THPT Giáp Hải, gia đình, bạn bè cùng học… đã tạo mọi điều kiệngiúp đỡ tác giả hoàn thành tốt luận văn
Hà Nội, tháng 6 năm 2012
Lương Quỳnh Trang
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan bản luận văn này là công trình nghiên cứu của riêng tôidưới sự hướng dẫn của Tiến sĩ Nguyễn Văn Khải
Trong quá trình nghiên cứu, tôi đã kế thừa thành quả khoa học của các nhàkhoa học với sự trân trọng và biết ơn
Hà Nội, tháng 6 năm 2012 Tác giả
Lương Quỳnh Trang
Trang 3MỞ ĐẦU
1 Lý do chọn đề tài
Phương trình đạo hàm riêng xuất hiện trong các vấn đề của vật lý: Lý thuyếtđàn hồi, cơ học ( cơ học lượng tử, cơ học chất lỏng, điện từ trường, thuỷ khí độnghọc…) Đa số các bài toán dạng này đều rất phức tạp không thể giải đúng được
Từ nhu cầu của thực tiễn như vậy, với mong muốn hiểu biết sâu hơn vềphương pháp sai phân và phần mềm Matlab giải gần đúng phương trình đạo hàmriêng, được sự đồng ý hướng dẫn của Tiến sĩ Nguyễn Văn Khải tôi lựa chọn đề tàinghiên cứu:
“Phương pháp sai phân giải gần đúng phương trình đạo hàm riêng.”
2 Mục đích nghiên cứu
Luận văn nghiên cứu phương pháp sai phân nhằm giải gần đúng phươngtrình đạo hàm riêng ( vấn đề cơ sở lý luận cũng như những ví dụ cụ thể) với ứngdụng của phần mềm toán học Matlab
3 Nhiệm vụ nghiên cứu
Luận văn nghiên cứu những bài toán đạo hàm riêng cơ bản đòi hỏi nghiêncứu lược đồ sai phân hóa để giải gần đúng các bài toán dạng phương trình đạohàm riêng
Luận văn nghiên cứu các vấn đề về xấp xỉ, ổn định và hội tụ của lược đồ saiphân đối với bài toán phương trình đạo hàm riêng
Luận văn nghiên cứu một số ví dụ giải gần đúng phương trình đạo hàm riêngnhờ sai phân với ứng dụng phần mềm Matlab
4 Đối tượng và phạm vi nghiên cứu
Một số vấn đề về sai phân và phần mềm Matlab
Ứng dụng của sai phân và phần mềm Matlab để giải gần đúng phương trình
đạo hàm riêng ( cơ sở lý thuyết và một số ứng dụng cụ thể)
5 Phương pháp nghiên cứu
Luận văn dùng phương pháp sai phân và phương pháp giải tích hàm trongquá trình giải gần đúng phương trình đạo hàm riêng
Trang 4Luận văn dïng c¸c phương ph¸p ph©n loại bài to¸n trong khi tiếp cận c¸c bµito¸n đạo hàm riªng.
6 Dự kiến đãng gãp của luận văn
Tr×nh bày một c¸ch hệ thống vấn đề giải gần đóng phương tr×nh đạo hàmriªng nhờ phương ph¸p sai ph©n
Đưa ra lêi giải gần đóng một số phương tr×nh đạo hàm riªng theo phươngph¸p sai ph©n bằng phần mềm Matlab
Trang 5Mục lục
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỞ ĐẦU 3
Mục lục 5
Chương 1 6
Một số kiến thức cơ bản về matlab và sai phân .6
1.1 Một số kiến thức về Matlab 6
1.1.1 Giới thiệu về Matlab .6
1.1.2 Lập trình 7
1.1.3 Toán học trong Matlab 13
1.1.4 Đồ hoạ 20
1.2 Một số khái niệm cơ bản về sai phần .25
1.2.1 Sự hội tụ của lược đồ sai phân .25
1.2.2 Xấp xỉ bài toán bờ vi phân bằng lược đồ sai phân .29
1.2.3 Định nghĩa sự ổn định của lược đồ sai phân Sự hội tụ là hệ quả của xấp xỉ và ổn định .30
Chương 2 34
giải gần đúng phương trình đạo hàm riêng bằng phương pháp sai phân 34
2.1 Phân loại phương trình tuyến tính cấp hai .34
2.2 Bài toán bờ của phương trình Ellip tic và phương pháp sai phân 35
2.2.1 Phân loại bài toán bờ 35
2.2.2 Sai phân hoá các bài toán bờ của phương trình Elliptic .35
2.2.3 Phương pháp giải hệ phương trình sai phân của bài toán bờ phương trình Elliptic 46
2.2.4 Sự hội tụ của bài toán bờ sai phân của phương trình Elliptic 57
2.3 Phương pháp sai phân giải bài toán Cauchy cho phương trình Hyperbolic .60
2.4 Phương pháp sai phân giải phương trình Parabolic .64
2.4.1 Giải bài toán Cauchy 65
2.4.2 Bài toán biên hỗn hợp .66
2.5 Một số phương pháp cơ bản để khảo sát sự ổn định của lược đồ sai phân .68
2.5.1 Phân tích phổ bài toán sai phân Cauchy .68
2.5.2 Nguyên tắc Maximum .73
Chương 3 77
Sử dụng phần mềm matlab giải gần đúng phương trình đạo hàm riêng theo phương pháp sai phân 77
Sử dụng phần mềm Matlab giải gần đúng bài toán bờ Dirichlet trên miền chữ nhật theo phương pháp sai phân .77
Kết luận và kiến nghị 90
Tài liệu tham khảo 91
Trang 6Chương 1 Một số kiến thức cơ bản về matlab và sai phân.
1.1 Một số kiến thức về Matlab.
1.1.1 Giới thiệu về Matlab.
Matlab là ngôn ngữ bậc cao rất có hiệu quả đối với kỹ thuật tính toán Nó hoà
nhập sự tính toán, sự trực quan và lập trình vào một môi trường dễ sử dụng, ở đócác vấn đề và giải pháp được biểu thị bởi các ký hiệu toán học quen thuộc
Matlab là hệ thống tương tác mà ở đó phần tử dữ liệu cơ sở là mảng, nhưng
không đòi hỏi kích thước Điều đó cho phép bạn giải quyết nhiều vấn đề về kỹ thuậttính toán, đặc biệt là các công thức liên quan đến véctơ và ma trận
Matlab là viết tắt của matrix laboratory Khởi đầu nó được viết dành cho sự
truy cập dễ dàng tới phần mềm ma trận được phát biểu bởi các đề án Linpack vàEispack
Matlab có chứa một họ các ứng dụng đặc biệt gọi là công cụ (toolboxes).
Các công cụ này cho phép bạn học và áp dụng các kỹ thuật đặc biệt bao trùm cáclĩnh vực như xử lý tín hiệu, điều khiển hệ thống, mạng noron, logic mờ, sóng, môphỏng và rất nhiều lĩnh vực khác
Có thể tạm coi hệ thống của Matlab gồm 5 phần:
Môi trường phát triển: Đó là tập hợp các công cụ và tiện ích giúp bạn sử
dụng các hàm và các tệp Đa số trong chúng thuộc về giao diện người dùng, baogồm nền Matlab ( Matlab desktop ), cửa sổ lệnh (command window), cửa sổ quá
trình( command history), trình soạn thảo ( editor), trình gỡ rối (debugger), trình
duyệt( browser) để xem trợ giúp ( viewing help), duyệt không gian làm việc
(workspace ),
Thư viện các hàm toán học: Đó là tập mênh mông các giải thuật tính toán, từ
các hàm cơ bản như tổng, tích, sin, cosin, các phép toán số học về số thực và số phức
đến các hàm phức tạp như ma trận ngược, trị riêng của ma trận, các hàm Bessel vàcác biến đổi Fourier nhanh
Trang 7 Ngôn ngữ Matlab: Đó là ngôn ngữ bạc cao về ma trận và mảng với các câu
lệnh điều khiển, các hàm, cấu trúc dữ liệu, nhập/ xuất dữ liệu và các đặc trưng củangôn ngữ lập trình hướng đối tượng(object –oriented programming) Nó cho phép
xây dựng các chương trình nhỏ lẫn các chương trình hoàn thiện
Đồ hoạ: Đồ hoạ trong Matlab quả là tuyệt vời để hiển thị các ma trận, các
véctơ, vẽ và in đồ hoạ, chú giải trên đồ thị Nó bao gồm các hàm ở mức cao để cóthể biểu diễn dữ liệu trong không gian 2 chiều và 3 chiều
Tương tác với bên ngoài: Đó là thư viện mà bạn có thể viết chương trình
bằng ngôn ngữ C hoặc Fortran để tương tác với Matlab Nó bao gồm các tiện ích đểgọi các thủ tục từ Matlab kiểu liên kết động (dynamic linking), gọi Matlab như làgọi một máy tính toán, cũng như các tiện ích để đọc và viết các tệp kiểu Mat –files Để khởi động chương trình trên nền Windows kích đúp vào biểu tượng củaMatlab và để kết thúc phiên làm việc, chọnFile/ Exit trên menu hoặc gõ lệnh quit
tại cửa sổ lệnh Khi bạn bắt đầu chương trình Matlab, cửa sổ mệnh lệnh sẽ mở ra với
kí hiệu >> Để được thực hiện trong môi trường Matlab các file chương trình phải
có đuôi ***.m tức là M- file Nếu muốn tạo một M-file thì kíchFile/ New/ M- file,
mở một file đã tồn tại thì kíchFile/ Open rồi tìm file đó và lựa chọn Nếu file bạn
muốn chạy không được ghi vào danh sách trong phần tìm kiếm thì bạn đưa vào danhsách bằng cách kích File/ Set Path/ Add Folder, tìm kiếm và kích vào tệp, cuối
cùng kích vào nút Save rồi kích Close.
1.1.2 Lập trình
a Nhập/ xuất dữ liệu
Có 3 cách nhập/ xuất dữ liệu trong môi trường Matlab
Nhập/ xuất dữ liệu từ cửa sổ lệnh
Matlab không đòi hỏi phải khai báo biến trước khi dùng Matlab phân biệt chữ hoa
và chữ thường Các số liệu đưa vào môi trường làm việc của Matlab được lưu lại suốt
phiên làm việc cho đến khi gặp lệnh Clear all Matlab cho phép ta nhập số liệu từ
dòng lệnh Khi nhập ma trận từ bàn phím ta phải tuân theo các quy định sau:
Ngăn cách các phần tử của ma trận bằng dấu “,” hay dấu trống
Trang 8 Dùng dấu “ ;” để kết thúc một hàng.
Bao các phần tử của ma trận bằng cặp dấu ngoặc vuông [ ]
Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được thi hành ngay và kết quả hiện lên mànhình Nếu ta không muốn cho kết quả hiện lên màn hình thì sau lệnh ta đặt thêmdấu “;’’ Nếu lệnh quá dài, không vừa một dòng có thể đánh lệnh trên nhiều dòng vàcuối mỗi dòng đặt thêm dấu … rồi xuống dòng
Nhập/ xuất dữ liệu thông qua các file.
Matlab có thể xử lý hai kiểu file dữ liệu: File nhị phân *.mat và file ASCII *.dat
Để lưu các ma trận A, B, C dưới dạng file nhị phân ta dùng lệnh save ABC A B C
và nạp lại các ma trận A, B bằng lệnh load ABC A B Nếu muốn lưu số liệu của ma trận B dưới dạng file ASCII ta dùng lệnh save b.dat B/ ascii.
Nhập/ xuất dữ liệu từ bàn phím
Lệnh input cho phép ta nhập dữ liệu từ bàn phím Ví dụ:
x = input (‘ Nhập x: ’)
Một cách khác để hiển thị giá trị của biến và chuỗi là đánh tên biến vào cửa sổ lệnh
Matlab hoặc dùng disp và fprintf để hiển thị các biến Ví dụ:
disp (‘ Trị số của x= ’), disp (x)
Trong trường hợp muốn nhập một chuỗi từ bàn phím, ta cần phải thêm kí tự s vào
đối số
Lệnh format cho phép xác định dạng thức của dữ liệu.
format rat: Số hữu tỉ format long: Số có 14 chữ số sau dấu phẩy
Trang 9format long e: Số dạng mũ format hex: Số dạng hex format short e: Số dạng mũ ngắn format short: Trở về số dạng ngắn
b Vòng lặp điều khiển
Cấu trúc if- else- elseif- end.
Cú pháp như sau:
if < biểu thức điều kiện 1>
khối các lệnh được thực hiện nếu điều kiện 1 đúng
elseif < biểu thức điều kiện 2 >
khối các lệnh được thực hiện nếu điều kiện 2 đúng
Nói thêm về phép so sánh bằng (= =) Với biểu thức kiểu vô hướng thì không
có gì đáng bàn, ta chỉ lưu ý khi chúng là ma trận Khi đó, thay cho phép so sánh
= =, ta chỉ nên sử dụng hàm isequal (a,b), hàm này nhận giá trị 1 nếu a đúng bằng
b, trái lại hàm bằng 0 Nhưng nếu trong dữ liệu có chứa giá trị phi số NaN, hàmisequal không cho kết quả đúng
Cấu trúc switch- case otherwise- end.
Trang 10Vòng lặp for dùng khi biết trước số lần lặp Cú pháp như sau:
for < chỉ số>= <giá trị đầu>: <mức tăng >:< giá trị cuối >
Break: Phát biểu break để kết thúc vòng lặp for hay while mà không quan
tâm đến điều kiện kết thúc vòng lặp đã thoả mãn hay chưa
một vài tham số đầu vào và tham số đầu ra ( output) Bạn có thể định nghĩa loại hàmnày ngay tại cửa sổ lệnh, hoặc trong một thủ tục, hoặc trong một hàm khác dạng M-file Cú pháp có dạng
f= @(arglist) expression.
ở đây, arglist là danh sách các input, chúng cách nhau bởi dấu phẩy, còn expression
là biểu thức xác định giá trị của hàm Các hàm toán học rất thích hợp với kiểu địnhnghĩa này
buộc phải định nghĩa trong M- file Trong tệp M- file, hàm nguyên thuỷ phải đượchiển thị tại dòng đầu tiên Hàm nguyên thuỷ có phạm vi lớn nhất, tức là nó có thể
Trang 11được triệu gọi từ bên ngoài tệp M- file của nó, tức là từ cửa sổ lệnh hoặc từ các hàmnguyên thuỷ trong các M- file khác Trong khi đó các hàm con chỉ có thể được triệugọi từ hàm nguyên thuỷ hoặc từ các hàm con cùng được định nghĩa trong hàmnguyên thuỷ Cấu trúc như sau
function frime ( arglist)
thuỷ, chỉ có điểm đặc trưng duy nhất là nó phải được đặt trong thư mục Private, làthư mục con của thư mục hiện thời Hàm riêng chỉ được triệu gọi từ các hàm nguyênthuytrong thư mục cha của thư mục private và các hàm riêng khác, không thể triệugọi chúng tại cửa sổ lệnh Các hàm riêng được ưu tiên gọi trước so với các hàmnguyên thuỷ
thân của một hàm khác được gọi là hàm lồng nhau Việc lồng nhau có thể nhiềulần Các hàm cùng được lồng trong một hàm nguyên thuỷ có thể triệu gọi nhau Tấtnhiên lời gọi hàm này không thể xuất hiện bên ngoài hàm nguyên thuỷ, nơi khaisinh ra chúng
Hàm tải bộ (Function Overloading): Tải bộ là cơ chế cho phép các hàm, các
toán tử trùng tên nhưng hành vi khác nhau lại được tồn tại song song Chỉ có điềukhi một lời triệu gọi được phát đi, thì hàm hay toán tử nào có tham số phù hợp vớilời triệu gọi đó sẽ được thực thi
Định nghĩa đệ quy : Matlab cũng như hầu hết các ngôn ngữ lập trình bậc
cao khác đều cho phép bạn định nghĩa kiểu đệ quy Đó là loại định nghĩa đặc biệt vìtrong thân của nó có chứa chính bản thân nó hoặc bản sao là trường hợp riêng của
nó Ví dụ định nghĩa hàm fact (n) để tính giai thừa của n
Trang 12function f= fact (n)
if n<2 f=1; else f= n* fact (n-1);
end
Biến toàn cục (Global Variables): Đó là kiểu biến cho phép mọi hàm truy
cập Ta có thể định nghĩa biến toàn cục tại cửa sổ lệnh hoặc trong thủ tục, cú pháp:
global X Y Z Trong thân hàm, khai báo global X phải được đặt trước câu lệnh
truy cập biến X
Chú ý: Clear X là xoá biến X khỏi cửa sổ làm việc hiện thời ( curent workspace), ở
các cửa sổ làm việckhác vẫn còn X; clear global X là xoá biến X khỏi tất cả các cửa
sổ làm việc ( global workspace) không đâu còn X nữa
Thẻ hàm (Function Handles): Bạn có thể tạo ra thẻ hàm cho hàm và sau đó
sử dụng nó như là hàm Thẻ hàm chính là biến, thường được sử dụng để truyền vàotham số của các hàm khác Cú pháp:
fhandle = @ function_ name;
Một số hàm cơ bản
+ Char(n): Cho ký tự thứ n trong bảng mã ASCII
+ Double (c): Cho số thứ tự trong bảng mã ASCII của ký tự c.
+ Str2num (‘str’): Chuyển xâu ‘ str’ ra số.
+ Num2str (number): Chuyển số ra xâu
Các hàm định giá (Evaluative function)
+ Eval (exprc) : Với expc là một biểu thức xâu ký tự theo cú pháp của
Matlab Ví dụ, bạn định nghĩa một biến tên là myvar và gán cho nó giá tri bằng 5.Khi đó câu lệnh eval (‘myvar’) cũng như eval ([‘my’,’var’]) đều tương đương vớicâu lệnh myvar và cùng biểu thức giá trị 5
+ Feval (f, x): Định giá hàm theo đối x với f là thẻ hàm Nếu định nghĩa f=
@ (x) …; thì feval (f, x) như f(x) Nếu hàm f thuộc kiểu M- files hoặc
build-in thì feval (@f, x) như f(x)
Trang 13+ Subs (expr, vars, vals): Định giá biểu thức expr sau khi thay các biến trong
vars bởi các giá trị tương ứng trong vals
c2 Thủ tục
Trong Matlab, thủ tục là một tệp kiểu M- file, trong đó có chứa các câu lệnh Têncủa thủ tục trùng với tên của tệp và thủ tục không có giá trị trả về Khi được triệugọi, thủ tục có thể tác động lên các biến được phát sinh trong nó hoặc đang có trongworkspace Các biến phát sinh trong khi thủ tục thực thi vẫn được lưu trong
workspace để sử dụng cho tính toán lần sau
1.1.3 Toán học trong Matlab.
a Các hàm Toán học.
a1 Các hàm toán học cơ bản.
Chúng ta có một số hàm toán học thường dùng sau đây:
abs(x) Argument của số phức log(x) Logarithm tự nhiên
acos(x) Hàm ngược của cos log10(x) Logarithm cơ số 10
angle(x) Tính góc số phức x max(x) Giá trị lớn nhất của xasin(x) Hàm ngược của sin min(x) Giá trị nhỏ nhất của xatan(x) Hàm ngược của tan norm(x) Chuẩn của x
ceil(x) Xấp xỉ dương vô cùng real(x) Phần thực của x
conj(x) Số phức liên hợp rem(x,y) Dư của phép chia x/ycos(x) Hàm cosine của x round(x) Làm tròn
floor(x) Xấp xỉ âm vô cùng sin(x) Hàm sin của x
gdc(x,y) ƯCLN của 2 số nguyên x, y sum Tính tổng
icm(x,y) BCNN của 2 số nguyên x,y sprt(x) Khai căn bậc 2
Trang 14imag(x) Phần ảo số phức x tan(x) Hàm tangent
a2 Các hàm số toán học tự tạo.
Matlab cho phép ta tạo hàm toán học và lưu nó vào một file để dùng như hàm
* Cách thứ 2 để biểu diễn một hàm toán học một biến trên dòng lệnh là tạo ra một
đối tượng inline từ một biểu thức chuỗi Ví dụ ta có thể nhập từ dòng lệnh hàm như
sau:
2 1
Trang 15
2 1
Nếu hàm là đa thức ta chỉ cần nhập ma trận các hệ số từ số mũ cao nhất
Ví dụ với đa thức 4 3
P x x x x ta viết: P = [1 4 0 2 1] Để nhân hai đa
thức ta dùng lệnh conv; để chia 2 đa thức ta dùng lệnh deconv Muốn tính trị số của
đa thức ta dùng lệnh polyval và lệnh polyvanlm dùng khi đa thức là ma trận.
b Các lệnh xử lý hàm.
- Lệnh fplot vẽ đồ thị hàm toán học giữa các giá trị đã cho.
- Lệnh fminbnd của Matlab để tìm cực tiểu địa phương của hàm trong
khoảng đã cho Ví dụ:
rồi nhấn phím Enter.
- Lệnh B = [1 2 3] tạo ra vector hàng và lệnh C = [1; 2; 3] tạo ra véctơ cột
- Lệnh B = [1:4; 5:8] tạo ra ma trận 2 hàng (các số kề sai khác 1) và 4 cột
Trang 16- Lệnh C = [1:0.2:2; 3:0.4:5] tạo ra ma trận 2 hàng và 6 cột, các phần tử thuộchàng 1 chênh nhau 0,2 còn hàng 2 chênh nhau 0,4.
Nếu phát hiện số phần tử ở hàng nào đó không khớp với số phần tử ở hàngngay trên nó thì Matlab phát sinh lỗi
Tải ma trận từ tệp dữ liệu ngoài.
Ví dụ 1: Xét chương trình sau:
>> A = [1, 2, 3; 4, 5, 6; 7, 8, 8]; % phát sinh ma trận A
>> save ( ab.m, A, -ascii); % ghi ma trận A vào tệp ab.m
Tham số-ascii chỉ định việc ghi ở dạng văn bản Bạn hãy tìm tệp ab.m trongthư mục hiện thời (Current directory) rồi mở nó bằng cách kích chuột
Nếu không thấy hiển thị cửa sổ này nhấp chuột vào trình đơn desktop trên menubar của cửa số Matlab rồi trỏ tới Current directory rồi check on.
Câu lệnh load ab.m sẽ tải dữ liệu trong tệp ab.m vào bộ nhớ Câu lệnh cuối
cùng ab là để hiển thị ma trận ab Tên biến trong Matlab có sự phân biệt chữ hoa vàchữ thường Tất nhiên chúng ta có thể soạn thảo tệp ab.m bằng trình Edior với thao
tác File/New/M-file (Ctrl+N) Sau đó soạn thảo trực tiếp, mỗi dòng ứng với một
hàng, các cột không cần thẳng Để ghi lại chọn File/Save (Ctrl+S), đặt tên tệp là ab.m (nếu đặt là ab.txt thì sau đó phải load ab.txt).
Sử dụng các hàm có sẵn: Matlab cung cấp một số hàm để tạo các ma trận cơ
bản:
zeros (m,n) tạo ma trận mà các phần tử đều là 0.
ones(m,n) tạo ma trận mà các phần tử đều là 1.
rand (m,n) tạo ra ma trận mà các phần tử ngẫu nhiên phân bố đều.
randn (m,n) tạo ma trận mà các phần tử ngẫu nhiên phân bố trực giao.
Trang 17magic (n) tạo ra ma trận cấp n gồm các số nguyên từ 1 đến n2 với tổng bằngcác hàng bằng tổng các cột n phải lớn hơn hay bằng 3.
pascal (n) tạo ma trận xác định dương mà các phần tử lấy từ tam giác Pascal eye (n) tạo ma trận đơn vị cấp n.
1.60210 160.210 Với số phức, sửdụng i hoặc j và thuộc dạng hậu tố, ví dụ 3e2i là 300i
Tât cả các số được lưu trữ bên trong ở dạng dấu phẩy động (float – pointing)theo chuẩn IEEE (Institute of Electrical and Electronics Engineers), có tới 16 chữ số
lẻ có nghĩa Chúng có trị tuyệt đối nằm trong khảong 10-308 đến 10308
Dạng 2 ngôi (Binary): Quy tắc như phép cộng
Dạng 1 ngôi (Unary): -A là ma trận đối của A
- Phép nhân:
Trang 18A*B: Là tích của A với B, số cột của A phải bằng số hàng của B.
A*3 cũng như 3*A: Ma trận kết quả của mọi phân tử của A nhân với 3
- Tích mảng: A*B thực hiện phép nhân tương ứng các phần tử có cùng chỉ số với
nhau nên A và B phải cùng cỡ, loại trừ một trong chúng là vô hướng
- Phép chia bên phải: Xuất phát từ việc giải phương trình ma trận XA = B.
Gọi là phép chia bên phải bởi A là toán hạng bên phải trong biểu thức B/A
Các ma trận, A và B phải có cùng số cột
- Phép chia bên phải theo phần tử: B./A là ma trận có các phần tử là B(i,j)/A(i,j)
nên A và B phải cùng cỡ Với k là vô hướng thì A./k là ma trận cùng cỡ với A, cócác phần tử là A(i,j)/ k, còn k./A là ma trận cùng cỡ với A, có các phần tử là k/A(i,j)
- Phép chia bên trái, phép chia bên trái theo phần tử: Tương tự phép chia bên phải
và phép chia bên phải theo phần tử
- Phép luỹ thừa:
A^p với A vuông và p là số nguyên dương, chính làA p
A^p với A vuông và p là số nguyên âm, chính là (A-1)p
- Luỹ thừa của mảng:
C = A.^B với A và B cùng cỡ lầm trận mà C(i,j) = A(i,j).B(i,j)
C = A.^k với k vô hướng là ma trận mà C(i,j) = A(i,j).k
C = k.^A với k vô hướng là ma trận mà C(i,j) = k.A(i,j)
- Phép chuyển vị liên hợp phức:
Ví dụ: A = [1 – i, 2; 2 + 3i, i] thì A = [1+i, 2-3i; 2, -i]
- Phép chuyển vị: Ví dụ, A = [1 – i, 2; 2 + 3i, i] thì A = [1-i, 2+3i; 2, i]
Nếu A là ma trận các số thực thì A và A. cho cùng một kết quả, đó chính là ma trậnchuyển vị thông thường
C = A < B: C(i,j) = 1 nếu A(i,j) < B(i,j), trái lại C(i,j) = 0
Trang 19C = A > B: C(i,j) = 1 nếu A(i,j) > B(i,j), trái lại C(i,j) = 0
C = A < = B: C(i,j) = 1 nếu A(i,j) <= B (i,j), trái lại C(i,j) = 0
C = A > = B: C(i,j) = 1 nếu A(i,j) >=B(i,j), trái lại C(i,j) = 0
C = A = = B: C(i,j) = 1 nếu A(i,j) bằng B(i,j), trái lại C(i,j) = 0
C = A = B: C(i,j) = 1 nếu A(i,j) B(i,j), trái lại C(i,j) = 0
~A 1 0 0 1 0xor (A,B) 1 0 1 0 0
- Hướng bit (Bit – wise): Với a = 28 (11100) và b = 21 (10101) thì
bitor (a,b) = 29 (11101), bitand (a,b) = 20 (10100),
bitcmp (a,b) = 3 (00011), bitxor (a,b) = 9 (01001)
- Hướng biểu thức: Giả sử a và b là các biểu thức lôgic, khi đó a b bằng False(logic 0) chỉ khi cả a và b bằng False
Trang 20Nếu giữ A và dấu + có một khoảng trống, còn ngay sau dấu + là con số thì sẽ lỗi, vìMATLAB cho là ta ghép từ ba ma trận A, +1 và A +2, mà +1 là vô hướng nên lỗi làtất nhiên.
a Đồ họa trong không gian 2 chiều.
Phần lớn các câu lệnh để vẽ đồ thị trong mặt phẳng đều là lệnh plot Lệnh plot mở ra một cửa sổ đồ hoạ gọi là cửa sổ figure, trong cửa sổ này nó sẽ tạo độ chia
phù hợp với dữ liệu và đồ thị được tạo thành bởi việc nối các điểm dữ liệu bằng
đường nét liền Ta cũng có thể vẽ nhiều đồ thị trong một cửa sổ
Ví dụ: Vẽ hàm sinx và cosx trên cùng một đồ thị
>> x = linspace (0,2*pi, 30);
>> y = sin (x);
>> z = cos (x);
>> plot (x,y,x,z)
Trang 210 5 10 15 20 25 30 -1
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
Bạn có thể khai báo kiểu màu, nét vẽ của riêng bạn bằng việc đưa plot một
đối số thứ 3 sau mỗi cặp dữ liệu của mảng Các đối số tuỳ chọn này là một xâu ký
tự, có thể chứa một hoặc nhiều hơn như bảng sau:
hướng lên
hướng trái
hướngxuống
Trang 22y vàng X Đường X > tam giác
hướng phải
- Lệnh colordef cho phép bạn lựa chọn kiểu hiển thị Giá trị mặc định của colordef
là trắng Nếu bạn thích màu nền đen, bạn dùng lệnh colordef black.
- Lệnh axis [x min , x max , y min , y max ] thiết lập giới hạn cho 2 trụ.
- Lệnh grid on sẽ thêm đường lưới vào đồ thị hiện tại Lệnh grid off sẽ bỏ các nét này, lệnh grid mà không có tham số đi kèm theo thì sẽ xen kẽ giữa chế độ on và off.
- Lệnh title sẽ thêm vào đồ thị tiêu đề ở đỉnh, trục đứng và trục ngang có thể
có nhãn với lệnh xlabel và ylabel.
- Lệnh subplot (m,n,p) chia cửa sổ hiện tại thành một ma trận mn khoảng để vẽ đồthị và chọn p là cửa sổ hoạt động Các đồ thị thành phần được đánh số từ trái quaphải, từ trên xuống dưới sau đó đến hàng thứ hai
Một số lệnh khác:
- Lệnh loglog tương tự như plot ngoại trừ thang chia là logarithm cho cả 2 trục.
- Lệnh semilogx tương tự như plot ngoại trừ thang chia của trục x là logarithm còn thang chia trục y là tuyến tính Semology cũng vậy.
- Lệnh area (x,y) tương tự như plot (x,y) ngoại trừ khoảng cách giữa 0 và y được điền
đầy, giá trị cơ bản y có thể được khai báo nhưng mặc định thì không
- Lệnh pie (a,b) tạo sơ đồ hình múi trong đó a là một véctơ giá trị và b là một véctơ
- Lệnh rose (v) vẽ một biểu đồ trong toạ độ cực cho các góc trong véctơ v, tương tự
ta cũng có các lệnh rose (v,n) và rose (v,x) trong đó x là một vector.
Trang 23b Đồ hoạ trong không gian 3 chiều.
Matlab cung cấp một số hàm để hiển thị dữ liệu 3 chiều như các hàm vẽ
đường thẳng trong không gian 3 chiều, các hàm vẽ bề mặt và khung dây và màu cóthể được sử dụng thay thế cho chiều thứ tư
Để hiển thị dữ liệu trong không gian 3 chiều ta dùng lệnh plot có khuôn dạng như sau: plot3 (x 1 , y 1 , z 1 , S 1 , x 2 , y 2 , z 2 , S 2 , ) trong đó x n , y n , z n là các vector hoặc matrận vàS n là xâu kí tự tuỳ ý chọn dùng cho việc khai báo màu, tạo biểu tượng hoặc
kiểu đường Chú ý rằng hàm zlabel tương ứng với hàm 2 chiều xlabel và ylabel.
Lệnh axis cũng có khuôn dạng: axis [x min , x max , y min , y max , z min , z max ] thiết lập
giới hạn cho cả 3 trục
Matlab định nghĩa bề mặt lưới bằng các điểm theo hướng trục z ở trên đường
kẻ ô hình vuông trên mặt phẳng xy Nó tạo lên mẫu một đồ thị bằng cách ghép các
điểm gần kề với các đường thẳng Kết quả là nó trông giống như một mạng lưới
đánh cá với các mặt lưới là các điểm dữ liệu
Trang 24-10 -5
10
-10 -5
0 5
10 -0.5 0 0.5 1
Trong ví dụ này [X,Y] = meshgrid(x,y) tạo một ma trận X mà các hàng là bản sao của vectơ x và ma trận Y mà các cột là bản sao của vectơ y, lệnh mesh sắp xếp giá
trị của các phần tử của ma trận vào các điểm (Xi, Yi, Zi) trong không gian 3 chiều
mesh cũng có thể vẽ một ma trận đơn tương tự như mới một đối số; mesh (Z) sử
dụng các điểm(i,j,Z i ).
Các đặc điểm khác của đồ thị trong không gian 3 chiều
- Hàm ribbon (x, y) tương tự như plot (x, y) ngoại trừ cột của y được vẽ như
là một dải riêng biệt trong không gian 3 chiều
- Hàm contour 3 vẽ đồ thị đường viền.
- Hàm contourf sẽ vẽ một đồ thị đường viền kín, không gian giữa đường viền
được lấp đầy bằng màu
- Hai mẫu trạng thái của lệnh mesh dùng với đồ thị lưới là: meshc vẽ đồ thị lưới và thêm đường viền bên dưới, meshz vẽ đồ thị lưới và đồ thị có dạng như màn
che
Trang 25- bar3, bar3h, bie3 lần lượt là phiên bản 3 chiều của bar, barh, pie.
Câu lệnh colormap (M) cài đặt ma trận M là bảng màu được sử dụng bởi hình hiện tại Hàm plot, plot3 không dùng bảng màu này.
1.2 Một số khái niệm cơ bản về sai phần.
1.2.1 Sự hội tụ của lược đồ sai phân.
a Khái niệm về lưới và hàm lưới
Mọi bài toán bờ của phương trình đều có thể viết dưới dạng
0
(
1 0
, sin
1 2
u
x x
u
x dx
sin )
( , )
0 (
1 0
,
u
x u
x dx
du Lu
còn bài toán bờ vi phân
0
(
2 )
0
(
1 0
, )
u x dx
2)()
0(
10
)0(
)1
2 2
x
x x
f dx
du
x u
u x dx
u d
Lu
Ta cần tìm nghiệmu (x) của (1.2.1.1) trên đoạn D [0,1]
Trang 26Muốn vậy, ta chia D thành nhiều đoạn nhỏ bởi các điểm chia 0 = x 0 < x 1 <…< x n
= 1, ta gọi là lưới và ký hiệu là h, sau đó ta tìm nghiệm dạng bảng [u] h là giá trịcủa nghiệm tại các điểm lướix i , i = 0, 1, …N của lưới h
Giả sử rằng lưới h phụ thuộc vào tham số h > 0, với h bé tuỳ ý Khi h 0 thì lưới
0
2 1
u
N n
x u
x h
u u
n n
n n
2
1 , 2 , 1 , )
1 ( 2
0 1 0
2 1 1
h
u u u
N n
x u x h
u u u
n n n n
n n
3,
2
h h
h
Trang 271 ]
[
h x
h x
h u
Cách này thuận tiện dùng trong trường hợp u(x) không phải là hàm liên tục nhưng
khả tích trên mọi đoạn, điều này thường dùng khi xét nghiệm suy rộng gián đoạn,
nếu tồn tại 1
0
2
) ( x dx
u Về sau này không nói gì, ta hiểuu(x) là hàm liên tục, [u] h làvết của u(x), tức là hàm lưới trùng với nghiệm đúng u(x) tại các điểm lưới khi cần
phục hồi hàm nghiệm u(x) theo [u] h người ta dùng các phương pháp xấp xỉ khácnhau Ta coi như bài toán (1.2.1.1) đã giải xong, nếu tìm được hàm lưới[u] h
Tuy nhiên, không tìm được [u] h chính xác mà ta tìm hàm lưới khác u h [u] h khi
h 0
b Lược đồ sai phân hội tụ.
Xét không gian tuyến tính định chuẩn các hàm xác định trên lưới h, chuẩn
Trang 282
) ( )
u của hàmu(x) bình phương khả tích trên [0;1].
Không nói gì bổ sung ta dùng chuẩn (1.2.1.2) Nếuu h U h , v h U h thì độ lệch giữachúng là
h U h
h v
u
.Xét bài toán bờ L h u h = f h trong đóL h là toán tử tuyến tính đưa không gian tuyếntính định chuẩn(U h , ) vào không gian tuyến tính định chuẩn (F h , ).
Định nghĩa: Ta nói rằng nghiệm u h của bài toán bờ sai phân L h u h = f h khi
h 0 hội tụ nghiệm của bài toán bờ vi phân Lu = f, nếu
h U h
h v
Ngoài ra nếu thoả mãn bất đẳng thức
h U h
Au h
n
Au h
u u
,u 0 = b, u 1 = (1 - Ah)b thì có độ
chính xác cấp 2
Nếu lược đồ hội tụ ta có thể chọn h sao cho nghiệm gần đúng u n đạt mọi độ chínhxác tuỳ ý cho trước
Trang 291.2.2 Xấp xỉ bài toán bờ vi phân bằng lược đồ sai phân.
a Độ lệch
h f
Định nghĩa: Ta nói rằng lược đồ sai phân L h u h = f h xấp xỉ bài toán vi phânLu = f
trên nghiệm u của nó, nếu 0
h
h Ff
khi h 0 Ngoài ra, nếu
1
2
u u
N n
Au h
u u u
L
n n
n h
)0(
2,1,2
)()(
h u u
N n
Au h
h x u h x u
n n
n
Trang 30N n
t u
h x
Au dx
x du
n n
n
)()
0(
)0(
1,
2,1),(''6)()(
h C
t u h
0
) ( '' ' 6
0
2
C là hằng số không phụ thuộch => xấp xỉ cấp h.
1.2.3 Định nghĩa sự ổn định của lược đồ sai phân Sự hội tụ là hệ quả của xấp
trong đó C1 là hằng số không phụ thuộc h Khi đó ta có:
Định nghĩa 1: Ta nói rằng lược đồ sai phân (1.2.3.2) ổn định, nếu tồn tại hằng số
h 0 > 0 và hằng số > 0 sao cho h (0, h 0 ) và h F h với
h
F
h thì bàitoán bờ sai phân L h Z h = f h + h
có một và chỉ một nghiệmZ h thoả mãn
h F h h
U h
trong đó C là hằng số không phụ thuộc h
Trang 31Định nghĩa 2: Ta nói rằng lược đồ sai phân (1.2.3.2) với L h là toán tử tuyến tính ổn
trong đóC là hằng số không phụ thuộc h.
Mệnh đề: Nếu L h là toán tử tuyến tính thì hai định nghĩa trên là tương đương.Chứng minh
Ta chứng minh từ định nghĩa 2 suy ra định nghĩa 1
Thật vậy, giả sử bài toán tuyến tính (1.2.3.2) có nghiệm duy nhất thoả mãn(1.2.3.4)
Vậy lược đồ sai phân ổn định theo định nghĩa 1
Ta chứng minh từ định nghĩa 1 suy ra định nghĩa 2
Thật vậy, theo định nghĩa 1 vớih 0 > 0 nào đó và > 0 nào đó thì h (0, h 0)
vàf h F h mà h tồn tại duy nhất nghiệm của các phương trình
Trang 32Với h (0, h 0 ) và f h F h bất kỳ,
h F h
f bài toán (1.2.3.2) có nghiệm duynhấtu h Nghiệm này thoả mãn (1.2.3.5) Trong trường hợp này phương trình
L h u h = f h có nghiệm duy nhấtu h và thoả mãn
f mà f h F h tức là ổn định theo định nghĩa2
Thật vậy, giả sử
h F h
f ta chứng minh có nghiệm duy nhất và ước lượng
h F h
f
f f
u
f
h h
.
2 ,
f f
Bởi vậy phương trình L u h h f h có nghiệm duy nhất, đồng thời
h F h h
b Từ xấp xỉ và ổn định suy ra hội tụ Định lý philipốp
Định lý philipốp: Giả sử lược đồ sai phân L h u h = f h xấp xỉ bài toán vi phân
Lu =f trên nghiệm u với cấp h và ổn định Khi đó nghiệm u h của bài toán sai phân
L h u h = f h hội tụ về nghiệm[u] h, đồng thời
h C C u
u
h U h
U
,
Trang 33C1 là hằng số trong bất đẳng thức C h
h F h
U h
f 1. suy ra (1.2.3.6)
Trang 34Chương 2 giải gần đúng phương trình đạo hàm riêng bằng phương pháp sai phân
2.1 Phân loại phương trình tuyến tính cấp hai.
Xét phương trình tuyến tính cấp hai
Trang 352.2 Bài toán bờ của phương trình Ellip tic và phương pháp sai phân.
2.2.1 Phân loại bài toán bờ.
trong đóa, b, c, d, g, f là các hàm của x, y và mọi (x, y) thuộc G.
Người ta phân biệt loại bài toán bờ
1 Bài toán Dirichlet L u( ) f
x y G
x y
trong đó: =G là biên của miền G
2 Bài toán Neumann
là đạo hàm theo pháp tuyến trong của biên
3 Bài toán bờ hỗn hợp
a Rời rạc hoá miền G sai phân hoá điều kiện bờ (biên)
b Thay toán tử vi phân bằng toán tử sai phân
c Giải hệ phương trình ĐSTT thu được
d Khảo sát sự hội tụ và ổn định của lược đồ sai phân
2.2.2 Sai phân hoá các bài toán bờ của phương trình Elliptic.
a Những bước đi chính trong việc sai phân hoá bài toán bờ Dirichlet.
Trang 36Bài toán bờ ( , ) ( , )
là một bài toán bờ vi phân Để giải bài toán ấy bằng phương pháp sai phân trước hết
ta cần phải sai phân hoá nó Nội dung việc sai phân hoá ấy bao gồm những việc dưới
đây
1 Rời rạc hoá miền G (một miền giới nội G của mặt phẳng xy) Ta giả thiếtbiên của G là một đường cong trơn từng đoạn, và gọi miền G kể cả biên là G
Ta định trước những độ dài khá bé và kẻ trên G những đường thẳng x m = mh; y n =
nl, m,n là nhứng số nguyên nào đó Các đường thẳng ấy tạo nên một lưới chữ nhật
đều; Các giao điểm của các đường thẳng ấy gọi là những điểm lưới Điểm lưới docác đường thẳngx = mh, y = nl tạo nên gọi là là điểm mn Ta gọi các điểm m 1, n
vàm, n 1 là những điểm kề của điểm m, n.
Ta chỉ xét các điểm lưới thuộc G và ký hiệu tập điểm ấy là G h
Trên G hta phân biệt những điểm trong, là những điểm mà cả bốn điểm kề đều thuộc
h
G , và những điểm biên, là những điểm của G h mà không phải là điểm trong, tức lànhững điểm lưới dù chỉ có một điểm lưới kề không thuộc tập các điểm lưới của
h
G Ta ký hiệu tập điểm trong là Gh, tập điểm biên là h (G U h h G h)
Ta vừa thực hiện việc rời rạc hoá miền G Nó tạo ra trên G tập điểm rời rạc G h Dùng phương pháp sai phân, ta sẽ không đi tìm nghiệm u của bài toán Dirichlet trênkhắp miền G, mà sẽ chỉ tìm một cách gần đúng giá trị của u ở những điểm của Gh
Ta ký hiệu nghiệm gần đúng ấy là U, giá trị của U, u ở điểm mn là U mn,u mn Tacũng thường dùng chữ P để chỉ một điểm trong, chữ Q để chỉ một điểm biên, và chỉgiá trị củaU, u ở các điểm P, Q là U(P), u(P), U(Q), u(Q)
2 Sai phân hoá các điều kiện biên
Trang 37Đối với mỗi điểm biên Q ta căn cứ vào các biên kiện: (u(x,y) = (x,y), [(x,y)
trên] mà định U(Q) Nếu Q ở trên thì ta cho ngay:
U(Q) = u(Q) = (Q) (2.2.2.3)
Trường hợp ấy thường xảy ra khi G là miền chữ nhật có cạnh song song với
2 trục vì khi ấy ta dễ chọnh, l để cho các điểm biên đều ở trên
Trường hợp ấy cũng xảy ra cho các điểm ở A, B, C ở hình 2.2.2.1
Nếu Q không ở trên thì ta chọn trên điểm Q’
gần nhất (hoặc khá gần) với Q và lấy
U(Q) = u( Q) = ( Q). (2.2.2.4)
Vì nghiệm u liên tục trên G cho nên:
u(Q) = u( Q) + O(h+l) thành thử cách lấy
Việc định giá trị củaU trên h gọi là sự sai phân hoá các điều kiện biên
Kollats đưa ra một phương pháp xấp xỉ các điều kiện biên tương đối thuận lợi nhưsau:
B D A h C
l A
C B
h
Trang 383 Thay toán tử vi phân bằng toán tử sai phân.
Ta xét một điểm trong mn Theo phương trình Lu(x,y) = f (x,y) ở điểm ấy u(x,y) thoả mãn phương trình
đạo hàm tương ứng ở các vế phải, bỏ qua số hạng 0(h 2 +l 2 ) Vậy ta có thể lập cho
U mn một biểu thức tương tự như Lu mn bằng cách giữ nguyên các a mn, g mnvà thaycác đạo hàm trong Lu mn bằng các vế trái tương ứng của các biểu thức trên Ta gọibiểu thức thu được như vậy là toán tử sai phân tương ứng với toán tử vi phânL, và ký
Trang 39Vì biểu thức này gần đúng vớiLu mn cho nên ta hãy cho nó bằng vế phải của (2.2.2.5)
ta được phương trình:L U h mn f mn (2.2.2.7)
Ta gọi (2.2.2.7) là phương trình sai phân hay sơ đồ sai phân của điểm mn sơ đồ sai
phân này còn gọi là sơ đồ năm điểm vì trong phương trình này có mặt hàmu tính tại
a c A
2
mn mn mn
a c B
2
mn mn mn
b d C
Giả sử các điều kiện sau thoả mãn:
h 1 ) a,b > 0 ( , )x y G (điều kiện đểL(u) là toán tử Elliptic)
h 2 ) g 0 (x,y) G (điều kiện để ( 2.2.1.1) có nghiệm)
Dễ thấy nếu các điều hiệnh 1 , h 2 thoả mãn thì khih, l > 0 đủ bé A mn , B mn , C mn , D mn ,
E mn > 0 trên G h
Nguyên lý Maximum: Giả sử dãy {v mn }, v mn ≠ const
Xác định trên G h và thoả mãn điều kiện
Khi đó{v mn } không đạt max dương (hoặc min âm) trong G h
Trang 40Chứng minh: Giả sử L h v mn 0 và M = max v mn > 0 Khi đó tìm được (m 0 , n 0 )
G h sao cho vm0n0 = M > 0 và có ít ra một điểm kề (m,n) sao cho v mn < M (nếu không,
áp dụng nguyên lý này chứng minh được hệ phương trình sai phân
L h U mn = f mn, U mn h mn có nghiệm duy nhất Để có điều đó ta chỉ cần chứngminh hệ phương trình thuần nhất tương ứngL h U mn = 0; 0
h
mn
U chỉ có nghiệm tầmthường
Thật vậy, nếu hệ phương trình thuần nhất có nghiệm khác 0 thì nó có giá trịdương lớn nhất hoặc giá trị âm nhỏ nhất trên h Đó là điều mâu thuẫn vì trên h ta