II. CHỮA BÀI TẬP
5. Cài đặt chương trình giải hệ phương trình vi phân sau:
3 2 2 3 2 2 5 3 dx t y tyz dt dy txy txz dt dz tx xz dt
trong đoạn t[1,10],với điều kiện đầu là: x(1)=-1,10 y(1)=2,33 và z(1)=5,33. Vẽ đồ thị đường cong Contour 3D với 3 trục toạ độ là x, y và z.
102
ĐỀ CƯƠNG BÀI GIẢNG
Học phần: PHƯƠNG PHÁP TÍNH TOÁN SỐ Đơn vị: Bộ môn Toán, Khoa CNTT Thời gian: Tuần 15 Tiết 57-60
GV giảng 2, Thảo luận 1, Kiểm tra: 1, Tự học: 4
Giáo viên: Nguyễn Trọng Toàn Vũ Anh Mỹ
Chương 6 Phương trình vi phân thường
Các mục 6.4 Phương trình vi phân với điều kiện biên Ôn tập và giải đáp
Mục đích - yêu cầu
- Trình bày phương trình vi phân với điều kiện biên. - Tổng ôn và kiểm tra
NỘI DUNG
I. LÝ THUYẾT
6.5 GIẢI PHƯƠNG TRÌNH VI PHÂN VỚI ĐIỀU KIỆN BIÊN
Mục này sẽ giới thiệu phương pháp bắn (Shooting) để giải một dạng phương trình vi phân với điều kiện biên. Đây là một bài toán rất khó nếu như ta không sử dụng các phương pháp số và chương trình hóa quá trình giải.
Giả sử ta muốn giải bài toán Blasius: Tìm hàm y=f(x) xác định trong khoảng [0,)thỏa mãn phương trình vi phân: ''' 1 . '' 0
2
f f f , với các điều kiện:
0 ' 0 0, '( ) 1
f f f .
Bài toán này có thể giải được bằng các phương pháp đã giới thiệu ở mục trước nếu ta biết điều kiện đầu đối với đạo hàm bậc hai: f''(0)=?. Thay vào đó ta lại biết điều kiên biên
vô cùng đối với đạo hàm bậc nhất: f '( ) 1.
Để giải bài toán này, người ta thay điều kiện biên vô cùng bằng điều kiện biên tại
x=10 để thành lập phương trình tìm điều kiện ban đầu phù hợp cho đạo hàm bậc hai. Sau đó
giải bài toán Cauchy với điều kiện đầu tìm được. Kỹ thuật này được gọi là phương pháp bắn. Thủ tục giải bài toán này như sau:
- Lập hàm về phải cho phương trình của bài toán Blasius:
% Function for computing solutions to the Blasius equation function fder =Blasius(x,f)
fder(1)= f(2); fder(2)= f(3);
fder(3)= -f(1)*f(3)/2; fder=fder.';
- Lập hàm Shooting để tìm điều kiện đầu phù hợp cho đạo hàm bậc hai:
% Function for computing solutions to the Blasius equation function dev =Shooting(z)
global Xinf; f0=([ 0 0 z]); Xspan = [ 0 Xinf]; [x, f] = ode45('Blasius', Xspan,f0); n =length(x); dev=f(n,2)-1; %% f’(Xinf)-1
103
% MATLAB code computing solutions to the Blasius equation clear;
global Xinf; Xinf=10;
z0=0.5;
z=fzero('Shooting',z0); %% Giải phương trình f’(Xinf)=1 f0=([ 0 0 z]); Xspan = [ 0 Xinf]; [x, f] = ode45('Blasius', Xspan,f0); figure(1); plot(f(:,2),x); axis([ 0 1.1 0 10]); axis('square'); xlabel(' Velocity U/Uinf');
ylabel(' Distance from the wall');
Chú ý chương trình đã sử dụng khai báo biến toàn cục trong MATLAB:
global X Y Z ...: Khai báo các biến X, Y và Z là các biến toàn cục. Giá trị ban đầu của mỗi biến là một ma trận rỗng. Nếu các hàm có sử dụng các biến này thì cũng phải có khai báo GLOBAL.