Tải bản đầy đủ (.pdf) (106 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.06 MB, 106 trang )

_________________________________________________________________________

MỤ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
______________________________________________________________________
_________________________________________________________________________
1


_________________________________________________________________________
3.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
______________________________________________________________________
_________________________________________________________________________
2


_________________________________________________________________________

LỜI MỞ ĐẦU

Ngày nay cùng với sự phát triển không ngừng của khoa học và công nghệ thì
máy tính đóng vai trò không thể thiếu được trong cuộc sống xã hội loài người.
Trong thực tiễn có rất nhiều hiện tượng khoa học và kỹ thuật dẫn đến các bài
toán biên của phương trình vật lý toán. Việc giải các bài toán đó đến đáp số bằng số
là 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.

______________________________________________________________________
_________________________________________________________________________

3


_________________________________________________________________________

Chươ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!

______________________________________________________________________
_________________________________________________________________________
4


_________________________________________________________________________

CHƯƠ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
______________________________________________________________________
_________________________________________________________________________
5


_________________________________________________________________________

toá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

______________________________________________________________________
_________________________________________________________________________
6


_________________________________________________________________________


Gá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.
Có thể có tổ hợp các vòng lặp và thường thụt vào để dễ đọc.
For i = 1 : m
For j = 1 : n
A (i,j) = 1 / (i + j - 1);
End
End
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.
Một ví dụ khác, giả sử:
t = -1
0
1
3
5
Và muốn phát sinh một ma trậnVandermonde, ma trận có các cột là lũy thừa các
phần tử của t.

______________________________________________________________________
_________________________________________________________________________
7



_________________________________________________________________________

A=
1

-1

1

-1

1

0

0

0

0

1

1

1

1


1

1

81

27

9

3

1

625

125

25

5

1

Ở đây vòng lặp kép rõ ràng nhất.
n = max (size(t))
for j = 1 : n
for i = 1 : n
A(i,j) = t(i) ^ (n-j);
end

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.
A(:,n) = ones(n,1);
For j = n-1 : -1 : 1
A(:,j) = t .* A(:,j+1);
End
Dạng tổng quát của vòng lặp for là:
For v = expression
Statements
End
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à:
______________________________________________________________________
_________________________________________________________________________
8


_________________________________________________________________________

E = expression;
[ m,n ] = size (E);
For j = 1 : n
v = E (:,j);
Statements
End
Thô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.
______________________________________________________________________
_________________________________________________________________________
9


_________________________________________________________________________

 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
______________________________________________________________________
_________________________________________________________________________
10


_________________________________________________________________________


vù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.
function y = mean(x)
[m, n] = size (x);
if m == 1
m = n; % xử lý vectơ dòng.
End
y = sum (x)/m;
Tệp này định nghĩa một hàm mới tên là mean. Hàm mới mean được dùng
như mọi hàm MATLAB khác. Ví dụ, nếu Z là một vectơ gồm các số từ 1 đến 99
Z = 1 : 99;
Giá trị trung bình tìm thấy bằng cách đánh vào
mean(Z)
Kết quả là
ans =
50
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.

______________________________________________________________________
_________________________________________________________________________
11



_________________________________________________________________________

 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)
[m, n] = size (x);
if m = = 1
m = n;

%xử lý vectơ dòng

end
mean = sum (x)/m;
stdev = sqrt(sum(x.^2)/m – mean.^);
stat minh họa cho khả năng trả về nhiều đối số xuất
Một hàm tính hạng ma trận dùng nhiều đối số nhập:
function r = rank(y, tol)
% hạng của một ma trận
s = svd(x);
if (nargin ==1)
tol = max(size(x)) * s(1) * eps;
end
r = sum(s > tol);
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:

______________________________________________________________________
_________________________________________________________________________
12


_________________________________________________________________________

Khi 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

______________________________________________________________________
_________________________________________________________________________
13


_________________________________________________________________________

 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
Parent


handle

Phần tử cấp trên

Position

[left, below, with, height] Vị trí (khoảng cách, kích cỡ)

Units

‘points’

Đơn vị xác định vị trí

BackgroundColor

[red, green, blue]

Mầu nền

Style

‘pushbutton’

Diện tích chọn

‘togglebutton’

Diện tích chọn


‘checkbox’

Vùng của hộp hỏi đáp

‘radiobutton’

Vùng của nút chọn

‘popupmenue’

Danh mục chọn

‘text’

Vùng của ký tự (text)

‘edit’

Vùng nhập ký tự

‘slider’

Thanh trượt

______________________________________________________________________
_________________________________________________________________________
14



_________________________________________________________________________

String

‘frame’

Khung có mầu

‘string’

Ký tự được hiển thị

[‘string_1; string-2’]

Các

phần

tử

của

danh

mục

(‘popupmenue’)
Value

number


Tích cực = 1, phần tử được chọn
từ danh mục

Tag

string

Nhãn để nhận dạng phần tử

Callback

‘string’

Gọi hàm

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.

______________________________________________________________________
_________________________________________________________________________
15


_________________________________________________________________________

Chứ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á

______________________________________________________________________
_________________________________________________________________________
16


_________________________________________________________________________

vớ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
view(azimuth, elevation) thiết lập góc xem bằng việc khai báo azimuth và
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ừ

______________________________________________________________________
_________________________________________________________________________
17


_________________________________________________________________________

trê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.


______________________________________________________________________
_________________________________________________________________________
18


_________________________________________________________________________

* 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

0


0

0

Đen

1

1

1

Trắng

1

0

0

Đỏ

0

1

0

Xanh lá cây


0

0

1

Xanh da trời

1

1

0

Vàng

1

0

1

Tím đỏ

0

1

1


Lam xám

-5

-5

-5

Xám trung bình

-5

0

0

Đỏ tối

1

-62

-40

Đỏ hồng

-49

1


-83

Ngọc xanh biển

Một số hàm của Matlab tạo ra bảng màu ở trên.
______________________________________________________________________
_________________________________________________________________________
19


_________________________________________________________________________

Hà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

1.6.6 Sử dụng bảng màu
Lệnh colormap(M) cài đặt ma trận M như là bảng màu được sử dụng bởi
hình hiện tại.
Ví dụ: colormap(cool) cài đặt một version 64 đầu vào của bảng màu cool.
Hàm plot và plot3 không dùng bảng màu trên, chúng sử dụng các màu liệt
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

______________________________________________________________________
_________________________________________________________________________
20


_________________________________________________________________________

Ta 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

0.6667

0

0

1.0000

0

0


1.0000 0.3333

0

Thêm vào đó hàm pcolor có thể được sử dụng để biểu diễn một bảng màu.
Hàm colorbar thêm một thanh màu đứng hoặc thanh màu ngang(cân chỉn
màu) vào cửa sổ hình vẽ, đưa ra biểu đồ màu cho trục hiện tại. colorbar(‘h’) định
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
______________________________________________________________________

_________________________________________________________________________
21


_________________________________________________________________________

tuyế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:
u '  f  x, u 

x0  x  X

u x 0   

(2.1)
(2.2)


Trong đó f x, 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
h  b  a  N bởi các điểm x i  x0  i h, i  0,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 i gọi là một nút của lưới, h
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.
______________________________________________________________________
_________________________________________________________________________
22


_________________________________________________________________________

2.1.3 Hàm lưới
Đó là những hàm số xác định tại các nút của lưới  h . Giá trị của hàm lưới v
tại nút x i viết là vi .
Một số hàm u x  xác định tại mọi x  a, b  sẽ tạo ra hàm lưới u có giá trị
tại nút x i là u i  u  xi  .
2.1.4 Đạo hàm lưới
Xét hàm lưới v . Đạo hàm lưới tiến cấp một của v , ký hiệu là v x , có giá trị
tại nút xi là:

vx 
i


vi 1  vi
h

Đạo hàm lưới lùi cấp một của v , ký hiệu là v x , có giá trị tại nút x i là:

v

xi



vi  vi 1
h

Ta 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 h  0 . Nếu tồn tại số   0 và
hằng số M  0 sao cho:

 h   Mh 
thì ta viết:

 h   O h  
Viết như trên có nghĩa là: khi h nhỏ thì  h  là một đại lượng nhỏ và khi
h  0 thì  h  tiến đến số 0 không chậm hơn Mh 

2.1.6 Công thức Taylor


______________________________________________________________________
_________________________________________________________________________
23


_________________________________________________________________________

Giả 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:

F  x  x   F  x   x F '  x  

x 


2!

m 1

m

m!

x 2 F '' x   ...

F

m 


x   x  F m1 c 
m  1!

(2.3)

Trong đó c là một điểm ở trong khoảng từ x đến x  x ; để diễn tả điều đó
ta có thể viết c  x   . x với 0    1 .
Ta giả thiết thêm:

x   ,  

F m 1 x   M  const,

Khi đó số hạng cuối cùng ở (2.3) là một vô cùng bé khi x  0 và công thức
Taylor (2.3) viết gọn hơn:
2
x '

x  ''
F x  x   F  x  
F x 
F x   ...
1!
2!
m

x   m 
m 1


F  x   O x 
m!



(2.4)



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ó:
u  xi 1   u  xi  h   u  xi   h u ' xi   Oh 2 

Ta suy ra:

ux 
i

u xi 1   u xi 
 u '  xi   O h 
h

(2.5)

Cũng có:
u  xi 1   u xi  h   u x i   h u '  xi   O h 2 

Do đó:

______________________________________________________________________

_________________________________________________________________________
24


_________________________________________________________________________

u xi 

u  xi   u  xi 1 
 u '  xi   Oh 
h

(2.6)

Ngoài ra với qui ước:

h
xi1 2  xi  ,
2

u i1 2  u xi1 2 

Ta còn có:
2

h
h
1 h

u  xi 1   u  xi 1 2    u xi1 2   u ' xi 1 2     u '' xi 1 2   O h 3 

2
2
2!  2 

2

h
h
1 h

u  xi   u  xi 1 2    u xi 1 2   u ' xi1 2     u '' xi 1 2   O h 3 
2
2
2!  2 

Ta suy ra:

u  xi 1   u xi   hu ' xi 1 2   Oh 3 
Do đó:

u x i 1  u xi 

u xi 1   u  xi 
 u ' xi 1 2   Oh 2 
h

(2.7)

Đồng thời:


u xi1   u xi 
 u xi 1 2   Oh 2 
h

(2.8)

2.1.8 Phương pháp Euler hiện
Bây giờ thay trong (1.1) u '  xi  bởi u xi thì (1.5) cho:

u xi 

u xi1   u xi 
 u '  xi   Oh   f xi , u xi   O h 
h

Ta suy ra:
u  xi 1   u xi   h f  xi , u  xi   O h 2 

(2.9)

Bỏ qua vô cùng O h 2  bé, thay u xi  bởi vi , là gần đúng của u  xi  , ta được:
v i1  vi  h f  xi , v i 

(2.10)

______________________________________________________________________
_________________________________________________________________________
25



×