Nó tích hợp các công cụ rất mạnh phục vụ tính toán, lập trình, thiết kế, mô phỏng,… trong một môi trường rất dễ sử dụng trong đó các bài toán và các lời giải được biểu diễn theo các ký h
Trang 1MỤC LỤC
MỤC LỤC 1
LỜI MỞ ĐẦU 3
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ NGÔN NGỮ MATLAB 5
1.1 Giới thiệu về Matlab 5
1.2 Hệ thống Matlab 6
1.3 Vòng lặp For 6
1.4 Siêu tệp M_File, nguyên bản và hàm 9
1.5 Giao diện đồ họa 13
1.6 Đồ họa trong không gian ba chiều 16
1.6.1 Đồ thị đường thẳng 16
1.6.2 Đồ thị bề mặt và lưới 16
1.6.3 Thao tác với đồ thị 17
1.6.4 Các đặc điểm khác của đồ thị trong không gian ba chiều 18
1.6.5 Bảng màu 19
1.6.6 Sử dụng bảng màu 20
1.6.7 Sử dụng màu để thêm thông tin 20
1.6.8 Hiển thị bảng màu 20
1.6.9 Thiết lập và thay đổi bảng màu 21
CHƯƠNG 2: TỔNG QUAN VỀ PHƯƠNG TRÌNH SAI PHÂN 22
2.1 Bài toán có trị ban đầu 22
2.1.1 Phát biểu bài toán 22
2.1.2 Lưới sai phân 22
2.1.3 Hàm lưới 23
2.1.4 Đạo hàm lưới 23
2.1.5 Quy ước viết vô cùng bé 23
2.1.6 Công thức Taylor 23
2.1.7 Liên hệ giữa đạo hàm và hàm lưới 24
2.1.8 Phương pháp Euler hiện 25
2.1.9 Phương pháp Euler ẩn 26
2.1.10 Phương pháp Crank – Nicolson 26
2.1.11 Chú ý 27
2.2 Bài toán biên 29
2.2.1 Bài toán vi phân 29
2.2.2 Lưới sai phân 29
2.2.3 Hàm lưới 30
2.2.4 Đạo hàm lưới 30
2.2.5 Phương pháp sai phân 30
2.2.6 Giải bài toán sai phân bằng phương pháp truy đuổi 31
2.2.7 Sự ổn định của bài toán sai phân 34
2.2.8 Sự xấp xỉ 36
2.2.9 Sự hội tụ 37
2.2.10 Sai số tính toán: 39
2.2.11 Trường hợp điều kiện biên loại ba 39
CHƯƠNG 3: PHƯƠNG PHÁP SAI PHÂN GIẢI BÀI TOÁN TRUYỀN NHIỆT MỘT CHIỀU 42
3.2 Lưới sai phân và hàm lưới 43
3.2.1 Lưới sai phân 43
3.2.2 Hàm lưới 45
3.3 Xấp xỉ các đạo hàm 45
Trang 23.4 Phương pháp sai phân hiện 46
3.4.1 Xây dựng phương pháp 46
3.4.2 Bài toán sai phân đối với sai số 47
3.4.3 Sự xấp xỉ 48
3.4.4 Sự ổn định 48
3.4.5 Sự hội tụ 49
3.4.6 Thí dụ 50
3.5 Phương pháp sai phân ẩn 50
3.5.1 Xây dựng phương pháp 50
3.5.2 Bài toán sai phân đối với sai số 52
3.5.3 Sự xấp xỉ 52
3.5.4 Sự ổn định 53
3.5.5 Sự hội tụ 53
3.5.6 Thí dụ 54
3.6 Một số kết quả thử nghiệm 55
3.6.1 Phương pháp sai phân hiện 55
3.6.2 Phương pháp sai phân ẩn 56
CHƯƠNG 4: PHƯƠNG PHÁP SAI PHÂN GIẢI BÀI TOÁN TRUYỀN NHIỆT DỪNG HAI CHIỀU 57
4.2 Lưới sai phân và hàm lưới 59
4.2.1 Lưới sai phân 59
4.2.2 Hàm lưới 59
4.3 Bài toán sai phân 59
4.3.1 Xây dựng bài toán sai phân 59
4.3.2 Sự xấp xỉ 61
4.3.3 Nguyên lý cực đại 61
4.3.4 Một số hệ quả 62
4.3.5 Sự ổn định 65
4.3.6 Bài toán sai phân đối với sai số 66
4.3.7 Sự hội tụ và sai số 67
4.3.8 Về sai số tính toán 67
4.3.9 Giải bài toán sai phân bằng phương thức Seidel codãn 68
4.4 Kết quả thử nghiệm 71
CHƯƠNG 5: PHƯƠNG PHÁP SAI PHÂN GIẢI BÀI TOÁN TRUYỀN NHIỆT NHIỀU CHIỀU 71
5.1 Bài toán truyền nhiệt trong miền chữ nhật 71
5.1.1 Phát biểu bài toán 71
5.1.2 Lưới sai phân 72
5.1.3 Hàm lưới và đạo hàm lưới 73
5.1.4 Phương pháp sai phân hiện 75
5.1.5 Phương pháp sai phân ẩn 76
5.2 Phương pháp luân phương ẩn 77
5.2.1 Xây dựng phương pháp 77
5.2.2 Cách giải bài toán sai phân (5.12) - (5.16) 78
5.2.3 Bài toán sai phân đối với sai số 78
5.2.4 Sự ổn định 79
5.2.5 Sự xấp xỉ 82
5.2.6 Sự hội tụ 83
KẾT LUẬN 84
TÀI LIỆU THAM KHẢO 85
PHỤ LỤC 86
Trang 3là một yêu cầu quan trọng
Một số trường hợp, công việc đó thật đơn giản nhờ vào nghiệm tường minh của bài toán dưới dạng các công thức sơ cấp, các tích phân hoặc các chuỗi hàm Nhưng đại đa số các trường hợp khác, đặc biêt là đối với các bài toán có hệ số biến thiên, các bài toán phi tuyến, các bài toán trên miền bất kỳ thì việc tìm nghiệm tường minh là rất phức tạp, có thể không có Trong những trường hợp đó việc tính nghiệm phải dựa vào các phương pháp giải gần đúng như: Phương pháp sai phân hoặc phương pháp phần tử hữu hạn
Phương pháp sai phân là phương pháp được áp dụng rộng rãi trong nhiều lĩnh vực khoa học và kỹ thuật Nội dung của nó là đưa bài toán cần xét về việc giải
hệ thức, hoặc các hệ thức liên hệ các giá trị của các hàm số tại các điểm khác nhau, như hàm số của đối số nguyên
Với thành tựu của máy tính hiện nay, thì thời gian giải các bài toán vi phân
có thể tính bằng giây, hay “có thể so sánh với thời gian viết vế phải” Người ta cũng dùng phương pháp sai phân để xét và chứng minh sự tồn tại nghiệm của các bài toán vi phân
Với những lý do trên, em đã chọn đề tài: “Phương pháp sai phân và ứng
dụng giải một số bài toán biên đối với phương trình truyền nhiệt” nhằm tìm
hiểu về phương pháp sai phân, ứng dụng phương pháp đó để cài đặt chương trình giải một số bài toán biên đối với phương trình truyền nhiệt
Bố cục đồ án gồm năm chương:
Chương 1: Giới thiệu chung về ngôn ngữ Matlab
Chương 2: Tổng quan về phương pháp sai phân
Trang 4Chương 3: Phương pháp sai phân giải phương trình truyền nhiệt một chiều
Chương 4: Phương pháp sai phân giải phương trình truyền nhiệt dừng hai chiều
Chương 5: Phương pháp sai phân giải phương trình truyền nhiệt nhiều chiều
Đồ án được thực hiện tại khoa Công Nghệ Thông Tin–Đại học Thái Nguyên Trong quá trình thực hiện đề tài sẽ không tránh khỏi những thiếu xót và hạn chế nhất định Em rất mong nhận được sự chỉ bảo của các thầy cô giáo, và những ý kiến đóng góp của các bạn để chương trình được hoàn thiện hơn
Em xin chân thành cảm ơn khoa Công Nghệ Thông Tin, bộ môn Khoa Học
Máy Tính, các thầy cô giáo, các bạn và đặc biệt là thầy Nguyễn Đình Dũng, người
đã trực tiếp hướng dẫn và giúp đỡ em hoàn thành đồ án
Em xin chân thành cảm ơn!
Trang 5CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ NGÔN NGỮ MATLAB
1.1 Giới thiệu về Matlab
MatLab là một phần mềm chuyên dụng chạy trong môi trường Windows do hãng MathWork sản xuất và cung cấp Có thể coi MatLab là một ngôn ngữ tính toán, kỹ thuật Nó tích hợp các công cụ rất mạnh phục vụ tính toán, lập trình, thiết
kế, mô phỏng,… trong một môi trường rất dễ sử dụng trong đó các bài toán và các lời giải được biểu diễn theo các ký hiệu toán học quen thuộc
Các ứng dụng điển hình:
- Toán học tính toán
- Phát triển thuật toán
- Tạo mô hình, mô phỏng
- Khảo sát, phân tích số liệu
- Đồ hoạ khoa học kỹ thuật
- Phát triển ứng dụng, gồm cả xây dựng giao diện người dùng đồ hoạ GUI Matlab là một hệ thống tương tác mà phần tử dữ liệu cơ bản là một mảng mà không cần khai báo kích thước Điều này cho phép giải nhiều bài toán kỹ thuật , đặc biệt là các bài toán liên quan đến ma trận và vector
Matlab (Matrix Laboratory)
Ban đầu Malab được viết chỉ để phục vụ cho việc tính toán ma trận Trải qua
thời gian dài, nó đã được phát triển thành một công cụ hữu ích, một ngôn ngữ của tính toán kỹ thuật
Trong môi trường đại học, nó là một công cụ chuẩn cho các khoá học mở đầu
và cao cấp về toán học, khoa học và kỹ thuật
Trong công nghiệp, nó là công cụ được lựa chọn cho việc phân tích, phát triển
và nghiên cứu hiệu suất cao
Malab cung cấp một họ các giải pháp theo hướng chuyên dụng hoá được gọi
là các Toolbox Các toolbox cho phép người sử dụng học và áp dụng các kỹ thuật chuyên dụng cho cho một lĩnh vực nào đó Toolbox là một tập hợp toàn diện các hàm của Matlab (M-File) cho phép mở rộng môi trường Matlab để giải các lớp bài
Trang 6toán cụ thể Các lĩnh vực trong đó có sẵn các toolbox bao gồm: xử lý tín hiệu, hệ thống điều khiển, logic mờ, mô phỏng,…
1.2 Hệ thống Matlab
Hệ thống Matlab gồm 5 thành phần chính:
- Ngôn ngữ Matlab: là một ngôn ngữ ma trận, mảng cấp cao với các câu lệnh,
hàm, cấu trúc dữ liệu, vào/ ra, các tính năng lập trình hướng đối tượng Nó cho phép lập trình các ứng dụng từ nhỏ đến các ứng dụng lớn và phức tạp
- Môi trường làm việc Matlab: Đây là một bộ các công cụ và phương tiện mà
ta sử dụng hoặc lập trình Nó bao gồm các phương tiện cho việc quản lý các biến trong không gian làm việc Workspace cũng như xuất nhập dữ liệu, gỡ rối,…
- Xử lý đồ họa: Đây là hệ thống đồ hoạ của Matlab Nó bao gồm các lệnh cao
cấp cho trực quan hoá dữ liệu hai chiều và ba chiều, xử lý ảnh, ảnh động,… Nó cung cấp các lệnh cấp thấp cho phép ta tuỳ biến giao diện đồ họa cũng như xây dựng một giao diện đồ hoạ mạnh và hoàn chỉnh các ứng dụng của Matab
- Thư viện toán học Matlab: Đây là tập hợp khổng lồ các thuật toán tính toán
từ các hàm cơ bản như sin, cos,… tới các hàm cơ bản như nghịch đảo ma trận, tìm trị riêng ma trận,…
- Giao diện chương trình ứng dụng Matlab API (Application program
Interface): Đây là thư viện cho phép viết các chương trình C và Fortran tương thích
với Matlab, Simulink, một chương trình đi kèm với Matlab, là một hệ thống tương tác với việc mô phỏng các hệ động học phi tuyến Nó là một chương trình đồ hoạ sử dụng chuột để thao tác cho phép mô hình hoá một hệ thống bằng cách vẽ một sơ đồ khối trên màn hình Nó có thể làm việc với các hệ thống tuyến tính, hệ thống phi tuyến, hệ thống liên tục theo thời gian, hệ gián đoạn theo thời gian,…
1.3 Vòng lặp For
MATLAB có phiên bản riêng của nó về vòng lặp “DO” hoặc “FOR” tìm
thấy trong các ngôn ngữ máy tính Nó cho phép một câu lệnh, một nhóm lệnh, được lặp lại một số lần cố định trước
Ví dụ:
For i=1:n, x(i) = 0, end
Trang 7Gán 0 vào n phần tử đầu của x Nếu n nhỏ hơn 1 thì lệnh vẫn hợp pháp, nhưng câu lệnh bên trong không được thực hiện Nếu x chưa có, hoặc có ít hơn n
phần tử thì không gian thêm vào được tự động phân phối
A
Dấu chấm phẩy cuối câu lệnh bên trong vòng lặp để hủy việc in lặp ra màn
hình, trong khi lệnh A sau vòng lặp hiển thị kết quả cuối cùng
Một điểm quan trọng là: mỗi vòng lặp for phải gắn với từ khóa end Nếu
nhập vào lệnh:
For i = 1 : n, x(i) = 0
Thì hệ thống sẽ kiên nhẫn chờ nhập các lệnh còn lại trong thân vòng lặp Không có
gì xảy ra cho đến khi đánh vào end
Trang 8end end
Nhưng vòng lặp đơn với các phép toán trên vectơ có ý nghĩa hơn và cũng minh họa
cho vấn đề vòng lặp for có thể chạy được
expression đúng là một ma trận, vì trong MATLAB, các cột của ma trận được gán
từng cột vào biến v và rồi các lệnh statements được thực hiện Một cách rõ ràng
hơn của việc hoàn thành cùng công việc này là:
Trang 9Thông thường expression là loại như m:n, hoặc m:i:n, đó là ma trận chỉ có một
dòng, bởi vậy các cột của nó đơn giản là các đại lượng vô hướng Trong trường hợp
đặc biệt này, vòng lặp for giống như các vòng lặp “FOR” hay “DO” của các ngôn
ngữ lập trình khác
1.4 Siêu tệp M_File, nguyên bản và hàm
MATLAB thường dùng chế độ dòng lệnh; khi nhập một dòng lệnh đơn thì MATLAB thực hiện ngay lập tức và hiển thị kết quả MATLAB cũng có khả năng
thực hiện một dãy các lệnh lưu trong một tệp Hai chế độ này tạo thành một môi trường thông dịch
Các tệp chứa các lệnh của MATLAB gọi là siêu tệp M-file vì chúng có tên
mở rộng là “.m” Ví dụ một tên tệp là csdl.m có thể chứa các lệnh của MATLAB
để tính các hàm csdl
Một M-file gồm một dãy các lệnh chuẩn của MATLAB, có thể chứa các
tham chiếu đến các M-file khác, một M-file có thể gọi đệ quy đến chính nó
Kiểu thứ nhất của M-file là một dãy dài tùy ý các lệnh Các tệp như thế gọi là các tệp nguyên bản Kiểu thứ hai của M-file cung cấp khả năng mở rộng
MATLAB, gọi là tệp hàm, chúng cho phép các hàm mới thêm vào các hàm đã có
Nhiều tính năng của MATLAB nhận được từ khả năng này để tạo ra các hàm mới,
để giải các bài toán do người dùng chỉ định
Cả hai kiểu M-file, nguyên bản và hàm, là các tệp văn bản ASCII bình thường, và được tạo ra bằng cách dùng một trình soạn thảo văn bản hay trình xử lý
từ tùy chọn
Trang 10 Tệp nguyên bản
Khi nguyên bản được gọi, MATLAB thực hiện các lệnh trong tệp, thay cho
việc đợi nhập từ bàn phím Các lệnh trong tệp nguyên bản thực hiện toàn cục trên
dữ liệu trong vùng làm việc Các nguyên bản thường hữu ích cho việc vận hành các phân tích, giải toán, hoặc thực hiện các công việc đòi hỏi quá nhiều lệnh mà trở nên cồng kềnh trong chế độ tương tác
Ví dụ: Giả sử các lệnh của MATLAB
% Một M-file để tính các số Fibonnaci
f = [1 1]; i = 1;
While f(i) + f(i+1) < 1000
f (i+2) = f(i) + f(i+1);
i = i + 1;
end
plot (f)
Được chứa trong một tệp tên là Fibonnaci.m Vào lệnh Fibonnaci làm cho
MATLAB thực hiện các lệnh, tính 16 số Fibonnaci đầu tiên và tạo ra hình vẽ Sau
khi thực hiện tệp xong, các biến và còn lại trong vùng làm việc
Các chương trình mẫu của MATLAB là các ví dụ tốt cho cách sử dụng các M-file để thực hiện nhiều nhiệm vụ phức tạp hơn Tên nguyên bản statup.m được
tự động thi hành khi MATLAB được gọi Các hằng vật lý, các thừa số chuyển đổi
kỹ thuật, hoặc các thứ khác muốn định nghĩa trước trong vùng làm việc có thể đặt trong các tệp này Trên hệ thống mạng hoặc nhiều người dùng, thì có một nguyên
bản tên matlab.m được dành riêng để dùng cho quản lý hệ thống Nó có thể dùng
để cài đặt các định nghĩa và các thông điệp rộng rãi
Tệp hàm
Nếu dòng thứ nhất của một M-file chứa từ “function”, thì tệp là một tệp
hàm Một hàm khác với một nguyên bản là có thể truyền các đối số, các biến định nghĩa, thực hiện bên trong tệp là cục bộ của hàm và không thao tác toàn cục trong
Trang 11vùng làm việc Các tệp hàm là hữu ích cho việc mở rộng MATLAB đó là tạo ra các hàm MATLAB mới bằng cách dùng chính ngôn ngữ MATLAB
Sau đây là một ví dụ đơn giản Tệp mean.m chứa các lệnh:
% MEAN giá trị trung bình, đối với vectơ, MEAN(x)
% Trả về giá trị trung bình, đối với ma trận, MEAN(x)
% Là một vectơ dòng chứa các giá trị trung bình của mỗi cột
Hãy xét vài chi tiết của mean.m:
Dòng thứ nhất khai bào tên hàm, các đối số nhập, và các đối số xuất Không
có dòng này thì tệp sẽ là tệp nguyên bản thay vì tệp hàm
Sau dấu % là lời chú thích và được bỏ qua
Vài dòng đầu cung cấp tư liệu M-file, được hiển thị nếu đánh vào helpmean
Trang 12 Các biến m, n và y là cục bộ của mean và sẽ không còn trong vùng làm việc khi mean thực hiện xong (Hoặc nếu trước đó đã có thì không bị thay đổi)
Không cần phải đặt các số nguyên từ 1 đến 99 vào biến x Thực ra, dùng
mean với biến tên là Z Vectơ Z chứa các số nguyên từ 1 đến 99 được truyền
hoặc sao chép vào mean, ở đây nó trở thành một biến cục bộ tên là x
Một phiên bản phức tạp hơn của mean gọi là stat tính độ lệch chuẩn:
function [mean, stdev] = stat(x)
stdev = sqrt(sum(x.^2)/m – mean.^);
stat minh họa cho khả năng trả về nhiều đối số xuất
Ví dụ này minh họa cho cách dùng biến thường xuyên nargin để tìm số đối
số nhập Biến nargout, mặc dù không được dùng ở đây nhưng chứa số đối số xuất
Vài gợi ý trợ giúp:
Trang 13Khi một tệp M-hàm được gọi lần đầu thì được biên dịch và đưa vào bộ nhớ Sau đó có thể sử dụng cho các lần gọi sau mà không cần biên dịch lại Nó còn trong
bộ nhớ trừ khi không đủ bộ nhớ, trong trường hợp này có thể bị xóa tự động
Lệnh what trình bày danh sách thư mục các tệp M-file có thể sử dụng trong thư mục hiện hành, lệnh type liệt các tệp M-file, và ! dùng để gọi trình soạn thảo,
cho phép tạo ra hoặc sửa đồi tệp M-file
Nói chung, nếu nhập tên nào đó cho MATLAB, ví dụ đánh vào whoopie, thì
MATLAB thông dịch qua các bước sau:
1 Tìm xem whoopie có phải là một biến
2 Kiểm tra whoopie có phải là hàm gắn liền
3 Tìm trong thư mục hiện hành có không một tệp có tên whoopie.m
4 Tìm trong các thư mục chỉ định bởi biến môi trường MATLABPATH
có không một tệp có tên whoopie.m
Do đó đầu tiên MATLAB thử dùng whoopie như một biến, nếu có, trước khi dùng
whoopie như một hàm
1.5 Giao diện đồ họa
Để tiện dụng và thoải mái ta có thể tạo nên một giao diện đồ hoạ (GUI) giữa
người sử dụng và Matlab Giao diện đó là một đồ hoạ giao lưu tích cực (interface), được xây dựng tương tự như một hộp đối thoại (Dialog Box) Trong giao diện đó ta
có thể xuất dữ liệu dưới cả hai dạng: Văn bản và đồ hoạ Có hai cách để tạo GUI, ta
có thể tạo theo phương thức thủ công, hoặc tận dụng các công cụ đồ hoạ do Matlab cung cấp
Phương pháp tạo GUI bằng đồ hoạ
Khi vào lệnh guide ta sẽ gọi trình đồ hoạ GUIDE để soạn thảo, thấy một Layout rỗng Việc đầu tiên phải làm là mở Menue Tools/Application Options để xác định:
Liệu ta chỉ muốn tạo GUI dưới dạng file có định dạng fig
Trang 14 Hay đồng thời tạo cả script (m-file) Nếu chọn option này, sau khi đã hoàn thiện, để sử dụng GUIDE ta chỉ việc nhập tên của m-file đó ở cửa sổ command Windows, hoặc kích hoạt ở Mennue Tools / Activate Figure
Tiếp theo ta lần lượt sử dụng chuột để gắp các phần tử GUI từ thư viện nằm
phía bên trái của Layout rỗng và nhả vào các vị trí ta muốn.Có thể sử dụng chuột để
co dãn, thay đổi kích thước của Layout và các phần tử thuộc Layout Các kích thước
đã xuất hiện trên Layout cũng là kích thước trên GUI sau này
Các phần tử của Layout được quản lý theo một cấu trúc phân cấp, trong đó
đồ hoạ của GUI đứng ở cấp cao nhất Có thể kiểm tra cấu trúc đó bằng cách mở cửa
sổ Tools / Object Browser
Mỗi phần tử của cửa sổ Layout đều cần phải có những đặc điểm (tham số) nhất định Để soạn thảo các tham số ấy, ta sử dụng Property Inspecter, gọi bằng
một trong các cách: Nháy chuột kép vào phần tử, dùng lệnh inspect, hay qua Menue
Tools / Property Inspector
Các tham số xác định đặc điểm của GUI
Position [left, below, with, height] Vị trí (khoảng cách, kích cỡ)
BackgroundColor [red, green, blue] Mầu nền
Style ‘pushbutton’ Diện tích chọn
Trang 15‘frame’ Khung có mầu
(‘popupmenue’)
từ danh mục
Mọi phần tử đều có thể nhận nội dung hay giá trị cho sẵn trước, và trong quá
trình sử dụng, do gọi hàm (Call back) nội dung hay giá trị đó có thể bị thay đổi Vậy
là chúng đã có sẵn chức năng xuất dữ liệu Với ‘edit’ có cả hai chức năng: nhập và
hiển thị ký tự
Từng phần tử, tuỳ theo thứ tự gắp thả chúng, có thể bị xếp chồng lên nhau
Đặc biệt các phần tử frame cần được tạo đầu tiên để tránh chúng che lấp các phần tử
khác Sau này ta có thể thay trình tự đó bằng cách đổi thứ tự của các chuỗi lệnh
tương ứng trong m-file Ngoài ra để thu được một Layout đẹp mắt có thể sử dụng công cụ menue Layout / Align Objects để gióng thẳng hàng các phần tử của GUI
Tham số value chứa giá trị hiện tại của phần tử:
Phần tử ‘pushbutton’ Giá trị đó cho biết, liệu diện tích của nút nhấn có được
chọn (=1) hay (=0) Hoặc đối tượng nào trong danh mục đánh số thứ tự (1, 2, 3…) được chọn
Phần tử ‘edit’ (nhập ký tự) cho biết giá trị của số được nhập Nếu dữ liệu
nhập là chuỗi ký tự, giá trị sẽ là một ma trận
Phần tử ‘popupmenue’ Do đặc điểm chọn mang tính duy nhất nên không tồn
tại các giá trị khác nhau
Các phần tử còn lại: Các giá trị được cung cấp nhờ thao tác gọi hàm
Trang 16Chức năng thực sự của các phần tử thuộc GUI nằm ẩn trong các tham số
của Callback Mỗi khi kích hoạt phần tử (nháy chuột hay nhập dữ liệu), các lệnh sẽ được chuyển cho Matlab dưới dạng chuỗi ký tự và được thực hiện
Mỗi lần khi thêm một phần tử (có khả năng thực hiện một thao tác nào đó) vào Layout của GUI, Matlab sẽ tự động bổ xung thêm một hàm con mang tên
Tagname_Callback Trong đó Tagname là ký hiệu giành cho thao tác, viết ở dòng
Tag của cửa sổ Property inspector Thông thường Matlab đặt tên cho các hàm con
đó như: checkbox1_Callback, popupmenu2_Callback,… và lần lượt đánh số (nếu
có nhiều hàm con cùng mạng), chúng theo thứ tự tăng dần
Nếu người thiết kế GUI muốn đặt tên khác, người đó sẽ phải chủ động đặt
tên trên dòng Tag trước khi cất (save) GUI Nếu đã lỡ cất rồi ta không chỉ phải thay đổi Tag trong Property Inspector, mà còn phải đồng thời thay thủ công tên hàm con trong Application M-file
1.6 Đồ họa trong không gian ba chiều
Matlab cung cấp một số hàm để hiển thị dữ liệu ba chiều như các hàm vẽ đường thẳng trong không gian ba chiều, các hàm vẽ bề mặt và khung dây, màu có thể được sử dụng thay thế cho chiều thứ tự
1.6.1 Đồ thị đường thẳng
Lệnh plot từ trong không gian hai chiều có thể mở rộng cho không gian ba chiều bằng lệnh plot3 Khuôn dạng của plot3 như sau:
plot3(X1,Y1,Z1,S1,X2,Y2,Z2,S2, ) Trong đó Xn, Yn, Zn là các vector hoặc ma trận, Sn 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
Đối với đồ thị trong không gian ba chiều khi muốn đặt một xâu ký tự vào một vị trí bất kỳ ta có thể dùng hàm text, hàm text cũng có khuôn mẫu như sau:
text(x,y,z,string)
1.6.2 Đồ thị bề mặt và lưới
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 x-y Nó tạo nê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 như một mạng lưới đánh cá
Trang 17với các mắt lưới là các điểm dữ liệu Đồ thị lưới này thường được sử dụng để quan sát những ma trận lớn hoặc vẽ những hàm có hai biến
Hàm meshgrid và hàm mesh
Bước đầu tiên là đưa ra đồ thị lưới của hàm hai biến z=f(X,Y), tương ứng với
ma trận X và Y chứa các hàng và các cột lặp đi lặp lại, Matlab cung cấp hàm
meshgrid cho mục đích này
[X,Y]=meshgrid(x,y), tạo một ma trận X, mà các hàng của nó là bản sao của
vector x, và ma trận Y có các cột của nó là bản sao của vector y Cặp ma trận này sau đó được sử dụng để ước lượng hàm hai biến sử dụng đặc tính toán học về mảng của Matlab
Để thay đổi màu sắc với sự trợ giúp của Matlab có thể tham khảo colormaps…
Hàm surf
Đồ thị bề mặt của cùng một ma trận Z trông như đồ thị lưới trước đó, ngoại
trừ khoảng cách giữa hai đường thẳng là khác nhau Đồ thị loại này dùng hàm surf
với đối số như hàm mesh
1.6.3 Thao tác với đồ thị
Matlab cho phép khai báo góc để từ đó quan sát được đồ thị trong không gian ba chiều
Hàm view
elevation ‘elevation’ mô tả vị trí người quan sát, được xem như là góc đo bằng độ
trên hệ trục x-y ‘azimuth’ mô tả góc trong hệ trục nơi người quan sát đứng
Azimuth được đo bằng độ từ phần âm trục y Phía âm trục y có thể quay
theo chiều kim đồng hồ một góc -37.5 độ từ phía người quan sát
Elevation là góc mà tại đó mắt ta thấy được mặt phẳng x-y
Sử dụng hàm view cho phép quan sát hình vẽ từ các góc độ khác nhau Ví dụ nếu elevation thiết lập âm, thì view sẽ nhìn hình từ phía dưới lên Nếu azimuth
thiết lập dương, thì hình sẽ quay ngược chiều kim đồng hồ từ điểm nhìn mặc định
Thậm chí ta có thể nhìn trực tiếp từ trên bằng cách thiết lập view(0,90) Thực ra thì
đây là điểm nhìn mặc định hai chiều, trong đó x tăng từ trái qua phải, và y tăng từ
Trang 18trên xuống dưới, khuôn dạng view(2) hoàn toàn giống như mặc định của
view(0,90), và view(3) thiết lập mặc định trong không gian ba chiều
Lệnh view có một dạng khác mà rất tiện ích khi sử dụng là view([X Y Z])
cho phép quan sát trên một vector chứa hệ trục toạ độ decac trong không gian ba chiều Khoảng cách từ vị trí quan sát đến gốc toạ độ không bị ảnh hưởng
Có thể lấy lại các thông số azimuth và elevation mà ta quan tâm bằng lệnh
[az,el]=view
Lệnh rotate3d
Một công cụ hữu ích khác là quan sát đồ thị không gian ba chiều bởi hàm
rotate3d Các thông số azimuth và elevation có thể được tác động bởi chuột
rotate3d on cho phép chuột can thiệp rotate3d off không cho phép
Lệnh hidden
Lệnh dấu các nét khuất Khi vẽ đồ thị, thì một số phần của nó bị che khuất bởi các phần khác, khi đó nếu dùng lệnh này thì các nét khuất sẽ bị dấu đi, ta chỉ có
thể nhìn thấy phần nào nằm trong tầm nhìn Nếu chuyển đến hidden off ta có thể
nhìn thấy phần khuất đó qua mạng lưới
1.6.4 Các đặc điểm khác của đồ thị trong không gian ba 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 ba chiều
* Hàm clabel tăng thêm độ cao cho đồ thị đường viền, có ba mẫu clabel(cs),
clabel(cs,V) và clabel(cs,’manual’) clabel(cs), trong đó cs là cấu trúc đường viền
được trả về từ lệnh contour, cs=contuor(z) lấy nhãn tất cả các đồ thị đường viền với độ cao của nó Vị trí của nhãn được lấy ngẫu nhiên clabel(c,’manual’) định vị nhãn đường viền ở vị trí kích chuột tương tự như lệnh ginput đã nói ở trên Nhấn phím return kết thúc việc tạo nhãn này
* 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 màn che
* Hàm waterfall được xem như mesh ngoại trừ một điều là hàm mesh chỉ
xuất hiện ở hướng x
Trang 19* fill3 phiên bản ba chiều của fill, vẽ một đa giác đều trong không gian ba chiều Khuôn dạng tổng quát của nó là fill3(x,y,z,c), trong đó chiều đứng của đa
giác được chỉ bởi ba thành phần x,y,z Nếu c là một ký tự, đa giác sẽ được lấp đầy màu như ở bảng màu c cũng có thể là một vector hàng có ba thành phần ([r g b]) trong đó r, g, b là các giá trị giữa 0 và 1 thay cho các màu đỏ, xanh lá cây và xanh
da trời Nếu c là một vector hoặc ma trận, nó được sử dụng như một chỉ số chỉ ra sơ
đồ màu Nhiều đa giác có thể được tạo ra bằng cách cho thêm nhiều đối số như
fill3(x1,y1,z1,c1,x2,y2,z2,c2,…)
Lệnh rand(m,n) tạo một ma trận ngẫu nhiên m hàng n cột bao gồm các phần
tử ngẫu nhiên thuộc đoạn [0,1]
1.6.5 Bảng màu
Matlab định nghĩa biểu đồ màu như là một ma trận có ba cột Mỗi hàng của
ma trận định nghĩa một màu riêng biệt sử dụng các số trong dải 0 và 1 Những số này chỉ ra các giá trị RGB, độ nhạy của các màu thành phần đỏ, xanh lá cây, và xanh da trời trong một màu do các thành phần đó tạo ra Một số mẫu cơ bản được cho trong bảng dưới đây:
Đỏ Xanh lá cây Xanh da trời Màu
Trang 20Hàm Mô tả bảng màu hsv Giá trị màu bão hoà (HSV) hot Đen-đỏ-vàng-trắng
gray Xám cân bằng tuyến tính bone Xám có pha nhẹ với màu xanh copper sắc thái của màu đồng
pink Màu hồng nhạt nhẹ white Trắng hoàn toàn flag Xen kẽ đỏ, trắng, xanh da trời, và đen jet Sự thay đổi màu bão hoà
prism Có màu sắc lăng kính cool Màu xanh tím
lines Màu của nét vẽ summe Bóng của xanh lá cây và vàng autumn Bóng của đỏ và vàng
winter Bóng của xanh lá cây và xanh da trời spring Bóng của magenta và yellow
kê trong bảng kiểu đường, điểm đánh dấu, màu của plot Phần lớn các hàm vẽ khác:
mesh, surf, contour, fill, pcolor và các biến của nó, sử dụng bảng màu hiện tại
1.6.7 Sử dụng màu để thêm thông tin
Màu có thể được dùng để thêm thông tin vào đồ thị ba chiều nếu nó được sử
dụng để tạo thành chiều thứ tự Các hàm như mesh và surf biến đổi màu dọc theo trục z, trừ khi một đối số màu được đưa ra như surf(X,Y,Z) hoàn toàn tương đương với surfX,Y,Z,t) trong đó thành phần thứ t được dùng như một chỉ số trong biểu đồ
màu Điều này khiến cho đồ thị đầy màu nhưng lại không thông tin khi mà trục z đã tồn tại
1.6.8 Hiển thị bảng màu
Trang 21Ta có thể hiển thị bảng màu theo một số cách sau Một trong những cách đó
là xem tất cả các phần tử trong một ma trận bảng màu một cách trực tiếp
Ví dụ: >> hot(4)
ans = 0.3333 0 0
vị thanh màu ngang dưới hình vẽ hiện tại, colorbar(‘v’) định vị thanh màu đứng về bên phải hình vẽ colorbar không có đối số thì thêm một thanh màu ngang, nếu
thanh màu này không tồn tại hoặc là cập nhật nếu nó tồn tại
1.6.9 Thiết lập và thay đổi bảng màu
Thực tế colormaps là các ma trận, có nghĩa là ta có thể thao tác chúng giống như bất kỳ một ma trận nào khác Hàm bridhten(n) nhờ vào đặc điểm này thay đổi
colormap độ tăng hoặc độ giảm độ nhạy của của các màu đậm brighten(n) và brighten(-n) phục hồi colormap ban đầu Lệnh newmap=brighten(cmap,n) điều
chỉnh phiên bản của thanh màu đã được khai báo mà không làm ảnh hưởng đến
colormap hiện tại hoặc cmap, brighten(gcf,n) làm sáng tất cả các đối tượng trong
hình vẽ hiện tại
Ta có thể tạo colormap của riêng mình bằng cách tạo ra một ma trận
mymap m hàng, 3 cột và cài đặt nó cùng với colormap(mymap) mỗi giá trị trong
một ma trận colormap phải thuộc khoảng từ 0 đến 1 Nếu sử dụng một ma trận với
nhiều hơn hoặc ít hơn 3 cột hoặc chưa một giá trị nào đó bé thua 0 hoặc lớn hơn 1
colormap sẽ đưa ra thông báo lỗi
Ta có thể kết nối các colormap theo kiểu toán học Mặc dù kết quả đôi khi
không thể đoán trước được
Vì các colormap là các ma trận, chúng có thể được vẽ đồ thị Lệnh rgbplot
vẽ đồ thị các giá trị của colormap tương tự như lệnh plot, nhưng sử dụng màu đỏ,
màu xanh lá cây và xanh da trời cho nét vẽ rgbplot(gray) cho biết cả ba màu tăng
Trang 22tuyến tính và đồng đều Lệnh rgbplot với một số colormap khác như jet, hsv, và
prism
Giá trị hiện tại của cmin và cmax được trả lại bằng caxis không có đối số Chúng
thường là những giá trị lớn nhất và nhỏ nhất của dữ liệu, caxis([cmin cmax]) sử dụng
colormap nguyên bản cho dữ liệu trong dải giữa cmin và cmax, những điểm dữ liệu lớn
hơn cmax sẽ bị chia ra thành các màu kết hợp với cmax Những điểm dữ liệu có giá trị nhỏ hơn cmin sẽ bị chia ra thành các màu kết hợp với cmin Nếu cmin nhỏ hơn min(data) hoặc cmax lớn hơn max(data) thì các màu kết hợp với cmin hoặc cmax sẽ không bao giờ được sử dụng; chỉ một phần nhỏ của colormap được sử dụng caxis(‘auto’) sẽ hồi phục giá trị mặc định của cmin và cmax.
CHƯƠNG 2 TỔNG QUAN VỀ PHƯƠNG TRÌNH SAI PHÂN
2.1 Bài toán có trị ban đầu
2.1.1 Phát biểu bài toán
Cho khoảng x ,0 X Tìm hàm u u x xác định tại x ,0 X và thỏa mãn:
x u x x X f
Trong đó fx,u là một hàm số cho trước và là một số cho trước
Giả sử bài toán (2.1), (2.2) có nghiệm u u x đủ trơn, nghĩa là nó có đạo
hàm liên tục đến cấp mà ta cần
2.1.2 Lưới sai phân
Ta chia đoạn x ,0 X thành N đoạn con bằng nhau, mỗi đoạn con dài
b a N
h bởi các điểm x ix0i h,i0,1, ,N Tập các điểm x i gọi là một
lưới sai phân trên x ,0 X, ký hiệu là h , mỗi điểm x gọi là một nút của lưới, h i
gọi là bước đi của lưới
Ta sẽ tìm cách tính gần đúng giá trị của nghiệm u x tại các nút x i của lưới h
Đó là ý tưởng đầu tiên của phương pháp sai phân, hay còn gọi là phương pháp lưới
Trang 23Ta sẽ thấy rằng khi h bé thì đạo hàm lưới “xấp xỉ” được đạo hàm thường
2.1.5 Quy ước viết vô cùng bé
Khái niệm xấp xỉ liên quan đến khái niệm vô cùng bé Để viết các vô cùng
bé một cách đơn giản ta sẽ áp dụng qui ước sau đây:
Giả sử đại lượng h là một vô cùng bé khi h0 Nếu tồn tại số 0 và hằng số M 0 sao cho:
Trang 24Giả sử F x là một hàm số xác định và có đạo hàm đến cấp m 1 trong một khoảng , chứa x và x x , x có thể dương hay âm Khi đó người ta chứng minh được công thức Taylor sau:
c F
m
x x
F m x
x F x x
F x x F x x F
m m m
m
1 1
'' 2 '
!1
!
!2
M x
!
!2
!1
m
x O x F m x
x F
x x
F
x x F x x F
2.1.7 Liên hệ giữa đạo hàm và hàm lưới
Giả sử hàm u x đủ trơn Theo công thức Taylor (2.4) ta có:
' 2
1 u x h u x h u x O h x
Ta suy ra:
x O h u
h
x u x u
Do đó:
Trang 25
x O h u
h
x u x u
2 ' 2
2 1
2
!2
12
h x
u
h x
u
h x
2 ' 2
2
2
!2
12
h x
u
h x
u
h x
h
x u x u u
xi i
h O x
u h
x u x u
i i
2.1.8 Phương pháp Euler hiện
Bây giờ thay trong (1.1) u' x i
bởi u thì (1.5) cho: xi
x O h f x u x O h u
h
x u x u
,'
1
Ta suy ra:
2
1 u x h f x,u x O h x
Trang 26Công thức (1.10) cho phép tính v khi đã biết i 1 v Dựa vào (1.2) ta đặt thêm i
Thì hai công thức (2.10), (2.11) cho phép tính ra tất cả các
Phương pháp tính bằng (2.10), (2.11) gọi là phương pháp Euler Sau khi đã
có v ta xem i v là gần đúng của i u x i
Phương pháp Euler là phương pháp sai phân đơn giản nhất để giải gần đúng bài toán (2.1), (2.2)
Ở đây khi đã biết v muốn tính ra i v ta chỉ phải tính giá trị của biểu thức ở i 1
vế phải của (2.10), chứ không phải giải một phương trình đại số nào Vì lẽ đó
phương pháp sai phân (2.10), (2.11) thuộc loại phương pháp sai phân hiện Nó cũng
có tên là phương pháp Euler hiện
2.1.9 Phương pháp Euler ẩn
Nếu trong (2.1) ta thay u' x i bởi
i x
u thì (2.6) cho:
x O h f x u x O h u
h
x u x u
i
,'
1
Ta suy ra:
2
1 h f x ,u x O h x
u x
bằng (2.13), (2.11) lại là phương pháp sai phân khác Ở đây khi đã biết v muốn i 1
tính ra v ta phải giải phương trình đại số (2.13) đối với ẩn số i v Vì lẽ đó phương i
pháp sai phân này thuộc loại phương pháp sai phân ẩn Nó cũng có tên là phương
pháp Euler ẩn
2.1.10 Phương pháp Crank – Nicolson
Trang 27Nếu áp dụng (2.7) ta có:
2 2
2 2
'
h
x u x
u
i i
i i
2
,,
2
,,
h O x
u x f x u x
h x u x
Công thức (2.15) cho phép tính v khi đã biết i1 v Thêm điều kiện (2.11) thì i
các công thức (2.15), (2.11) cho phép tính ra tất cả các v Ở đây khi đã biết i v i
muốn tính ra v i1 ta phải giải phương trình đại số (2.15) đối với ẩn số v i 1 Vì lẽ đó
phương pháp sai phân này thuộc loại phương pháp sai phân ẩn Nó cũng có tên là
phương phápCrank - Nicolson ẩn
Trang 28pháp Euler ẩn Cụ thể hơn người ta chứng minh được rằng với giả thiết
const L
h O
Euler h
O x
u
Sau khi đã tính v ta xem nó là gần đúng của i u x i , nhưng vẫn còn nhiều câu hỏi phải giải đáp, như: cho h0 thì tại x xác định, i v có i u x i hay không? Và sai số v i u x i có thể có ước lượng là bao nhiêu được không?
Để chứng minh sự hội tụ và đánh giá sai số ta cần đến kết quả sau:
Bổ đề 1: Nếu i là những đại lượng thỏa mãn:
Trang 292 0 1
i i
B B
B C
Đó là (2.18) Với điều kiện (2.17) ta có:
B 1 B 2 B 1
Từ đó suy ra (2.19) và (2.20)
2.2 Bài toán biên
2.2.1 Bài toán vi phân
Cho hai số a và b với Tìm hàm u u x xác định tại axb thỏa mãn
Giả sử bài toán (2.21) – (2.22) có nghiệm duy nhất u đủ trơn trên a, b
Chú ý: Đây chính là bài toán biên của phương trình elip một chiều Nó mô tả
hiện tượng truyền nhiệt dừng trong một thanh vật chất mà nhiệt độ ở hai đầu mút của thanh được ấn định trước
2.2.2 Lưới sai phân
Ta chia đoạn a, b thành N đoạn con bằng nhau, mỗi đoạn con dài
b a N
h bởi các điểm x iaih, i 0,1, N Mỗi điểm x i gọi là một nút lưới,
h gọi là bước lưới
Tập: hx i,1iN1
gọi là tập các nút trong
Tập: hx0, x N
Trang 30v v
i i
1 1
h h
v v h
v v h
v v
v
i i i
i i i i
x x x
i i i
2 1 1
1 1
v a v a v
1 1
1 1 1 1
2.2.5 Phương pháp sai phân
Ta tìm cách tính gần đúng giá trị của nghiệm đúng u x i tại các nút x ih Gọi giá
trị gần đúng đó là v i Muốn có v i ta thay bài toán vi phân bởi bài toán sai phân:
a v q v f v
Trang 31n n
n
i i
i i i i
i
d x
C x A
n i
d x
B x C x
A
d x
B x
C
1
1 1
0 1
0 0 0
1 ,,2,
n n
C A
B C
C A
B C A
B C
00
0
00
0
00
00
0
1 1
2 2
1 1 1
0 0
dạng 3 đường chéo
1
0,x , ,x n x
1
0,d , ,d n d
Truy đuổi phải
Ta đi tìm nghiệm của hệ (2.27) trong dạng:
1, ,2,1,01
Trang 32Từ đó ta có công thức truy hồi:
A C
B
i i i
i i
d A
i i i
i i i i
0
C
d x C
Nhưng để tính theo công thức (2.28), ta cần có x Ẩn n x sẽ được tìm nhờ n
phương trình cuối cùng của hệ (2.27)
d x C x
n n n n
A C
d A x
n n
n
n
i i
i
i
i i i
i i i i i
i i
x
n i
x
x
C
d C
B
n i
A C
d A
A C
B
1 ,,1,0
;
;
1 ,,2,1
;
;
1 1
1
0
0 1 0
0
1
1 1
(2.29)
Trang 33Công thức tìm nghiệm hệ (2.27) theo (2.29) gọi là công thức truy đuổi Xuất phát từ
1,1 ta tính 2, 2…cuối cùng có n, n Có x ta tính tiếp n x n1, x n2, , x0 Khi tính nghiệm xuất phát từ x bên phải nên còn gọi là công thức truy đuổi phải n
Truy đuổi trái
Bây giờ nếu ta tìm nghiệm của hệ (2.27) xuất phát từ cách đặt:
i
i i i i
i
d B
C B
C B A
;
;
1 1
B C
d B
B C
A
i i i
i i i i i
i i
i i
n n n n
n n n
n
C
d x C
A
x 1 1 có dạng (2.28’) suy ra:
n
n n n
n n
C
d C
Trang 340 1 0 0
Lại theo (2.28’) ta có:
1 0 1
0 0 0
B C
d B x
Như vậy nghiệm của hệ (2.27) tìm được theo công thức:
B C
A
i i i
i i
C
d B
i i i
i i i i
d B
x
0 1 0
0 1 0 0
10
2.2.7 Sự ổn định của bài toán sai phân
Trước hết để đo độ lớn của hàm lưới 1
N
max:
0
Định nghĩa: Nói bài toán sai phân (2.24) – (2.25) là bài toán ổn định nếu nó
có nghiệm duy nhất với mọi vế phải và điều kiện biên, đồng thời nghiệm thỏa mãn:
Trang 35 f M const M
Ý nghĩa của bài toán ổn định là :
Bài toán sai phân có nghiệm duy nhất, đồng thời nghiệm đó phụ thuộc liên tục vào vế phải của phương trình sai phân và điều kiện biên, nghĩa là khi vế phải của phương trình sai phân và điều kiện biên thay đổi ít thì nghiệm cũng thay đổi ít
Bất đẳng thức (2.32) nói lên ý nghĩa đó, ta gọi nó là bất đẳng thức ổn định
của bài toán (2.24) – (2.25)
Định lý:Bài toán sai phân (2.24) - (2.25) là bài toán ổn định
Chứng minh Ở trên bài toán sai phân (2.24) – (2.25) đã đưa về dạng sau Để
i i i i i i
Y
1 1
2 2 1 1
j j j
A C
F A
j j j j
A
F A
A C
Từ (2.36) ta suy ra:
Trang 361 1
2 1
1 1 1 2
1 1 1
j
s s j
A A
A
1 1
N F
C
j F C
1
1 0
1
f C
a b F
C
N
0 2
a b Z
2.2.8 Sự xấp xỉ
Trang 37Bằng công thức Taylor (1.4) ta có:
'' 4
3 ''
2 '
1
!3
!
h x u
h x hu x
u x
'' 3
2 ''
' 1
6
h x u
h x u h
x u x u
1
82
2
h O x k
h x k
h x k
h x k a
i i
i
i i
8
14
16
12
ku
h x ku u
16
12
ku
h x ku u
i x i
Vì lẽ đó ta nói toán tử sai phân L xấp xỉ toán tử vi phân L tới cấp h 2
h O
Hơn nữa, vì v0u0 0 và v Nu N 0 nên ta cũng nói, bài
toán sai phân (2.24), (2.25) xấp xỉ bài toán vi phân (2.21), (2.22)
Trang 38v a qz az
z
L
h x
x
x x
h
x x
x x
h M M
M u v z
Trang 39Xấp xỉ + ổn định = Hội tụ Xấp xỉ cấp 2 + ổn định = Hội tụ cấp 2
2.2.10 Sai số tính toán:
Nếu các vế phải và điều kiện biên không có được một cách chính xác, nghĩa
là thay cho f i,, ta chỉ có
,,
2.2.11 Trường hợp điều kiện biên loại ba
Ngoài điều kiện biên loại một (1.22) còn có trường hợp điều kiện biên loại ba:
Trang 400 ' 0
1
h x hu x
u x
0 ' 0
1
h x hu x
u x
0 '' 0
' 0 1
2u x O h
h x u h
u u
0 1
2
h x k
h x k
' 0 0
1 1
2 k x u x k x u x O h
h x u x k h
u u
Hay:
' 2
0 ' 0
'
h x u x k u
Đến đây ta có thể thay k a u' a ở (2.48) bởi a u x
1 nhưng làm như thế thì sai số xấp xỉ điều kiện biên chỉ là O h Muốn sai số xấp xỉ này có cấp cao hơn ta dựa vào (2.21) để viết:
' ' 0 0
x x x
x q x u x f x x
u x
Do đó (2.50) cho
20 ' 0 1
h x u x k u
a x q x u x f x xx0 + O 2
h