Đề cương chi tiết bài giảng Lập trình Matlab
MATLAB có trợ giúp trực tuyến đối với tất cả các lệnh và hàm nội trú. Hãy gõ lệnh
help sau đó là tên lệnh hoặc tên hàm mà bạn muốn tìm hiểu.
Thí dụ 1. Nếu trong cửa sổ Command bạn gõ lệnh:
>> help tanh
TANH Hyperbolic tangent.
TANH(X) is the hyperbolic tangent of the elements of X.
See also atanh .
Nếu bạn gõ lệnh help mà không xác định tên lệnh đi theo thì xuất hiện một menu
gồm nhiều chủ đề (topic) để bạn có thể lựa chọn.
Thí dụ 2. Nếu gõ lệnh:
>> help
thì kết quả trên màn hình là:
HELP topics:
matlab\general - General purpose commands.
For more help on directory/topic, type "help topic".
Nói chung, MATLAB phân biệt chữ hoa và chữ thường trong câu lệnh.
computing the motion of a nonlinear pendulum clear; Tspan=[0 25]; Theta0 = 0; Theta1 = input(' Give initial velocity : '); %%Van toc ban dau y0=[Theta0 Theta1]; [t,y]=ode45('Pendu', Tspan,y0); figure(1);plot(t,y(:,1),'r',t,y(:,2),'b'); xlabel('Time');ylabel('Angle, Angular Velocity '); pause; figure(2); plot(y(:,1),y(:,2)); xlabel('Angle');ylabel('Angular Velocity '); Kết quả chạy chương trình với Theta1=2 là hai đồ thị: Bài toán 3. Xét sự chuyển động của một con tàu vũ trụ dưới tác động của trường hấp dẫn của 2 thiên thể. Mỗi thiên thể đều chịu tác động của một lực sinh bởi lực hấp dẫn của con tàu. Nhưng khối lượng của con tàu quá nhỏ nên ảnh hưởng không đáng kể đến chuyển động của các thiên thể. Vì thế ta có thể bỏ qua ảnh hưởng này. Trong lĩnh vực cơ học vũ trụ, bài toán này còn có tên gọi là bài toán ba vật cô lập. Bài toán được áp dụng cho việc tính toán các quĩ đạo của con tàu, trái đất và mặt trăng của trong hệ toạ độ (quay) có gốc là tâm trường hấp dẫn của trấi đất và mặt trăng. Trong hệ toạ độ này, trái đất nằm ở vị trí (-M,0) và mặt trăng ở vị trí (E,0), tàu vũ trụ ở tọa độ (x,y). Các phương trình được cho như sau: 2 2 3 3 1 2 2 2 3 3 1 2 ( ) 2 ; 2 E x Md x dy M x E x dtdt r r d y dx Ey My y dtdt r r , trong đó r1 = 22 yMx , r2 = 22 yEx và E=1-M. Chọn M=0.012277471 (cho hệ mặt trăng- trái đất) và điều kiện đầu: x(0) = 1,15; 0 dx ( ) dt = 0 ; y(0) = 0; 0 dy ( ) dt = 0,0086882909. y Earth x Moon M E Hình 6.3 Vị trí tương đối của 3 vật thể Một lần nữa ta lại rút gọn hệ các phương trình vi phân cấp 2 về hệ phương trình vi phân cấp 1 gồm 4 phương trình: X1(t) = x(t), X2(t) = dx dt , Y1(t) = y(t) và Y2(t) = dy . dt Hệ phương trình vi phân cần giải là: 2 1 11 2 1 3 3 1 22 1 2 2 1 1 2 1 3 3 1 2 ( ) ( ) 2 , 2 X E X M M X EX Y X R RXd Y Ydt Y EY MY X Y R R trong đó R1 = 2 1 2 1 YMX và R2 = 2 2 1 1 .X E Y Thủ tục giải bài toán như sau: - Cài đặt hàm vế phải của hệ phương trình % Function defining the Restricted Three-Body function yp =Apollo(t,y) M=0.012277471 ;E=1-M; xx = y(1); yy = y(3); r1 = sqrt((xx+M)^2 +yy^2); r2 = sqrt((xx-E)^2 +yy^2); yp(1) = y(2); yp(2) = 2*y(4) +y(1)- E*(y(1)+M)/r1^3-M*(y(1)-E)/r2^3; yp(3) = y(4); yp(4) = -2*y(2) +y(3)- E*y(3)/r1^3-M*y(3)/r2^3; yp=yp.'; - Cài đặt chương trình tính toán: % MATLAB code for the Restricted Three-Body Problem clear; Tspan=[0 23.7]; M=0.012277471 ; E=1-M; Options= odeset('reltol',1e-5, 'abstol',[ 1e-5 1e-5 1e-5 1e-5]); x0=1.15; xdot0= 0; y0=0; ydot0 = 0.0086882909; V0=[x0 xdot0 y0 ydot0]; [t,y]= ode45('Apollo',Tspan,V0,Options); figure(1); plot(y(:,1),y(:,3)); axis([-.8 1.2 -.8 .8]); grid on; hold on; plot(-M,0,'o'); plot(E,0,'o'); hold off; xlabel('X-axis'); ylabel('Y-axis'); text(0, 0.05,'Earth'); text(0.9, -0.15,'Moon'); figure(2); for i=1:length(t); tt=t(i); xn(i) = cos(tt)*y(i,1) + sin(tt)*y(i,3); yn(i) = -sin(tt)*y(i,1) + cos(tt)*y(i,3); xmoon(i)= E*cos(tt); ymoon(i)= -E*sin(tt); xearth(i) = -M*cos(tt); yearth(i)=M*sin(tt); end; plot(xn,yn,'r',xmoon,ymoon,'g:',xearth,yearth,'bo'); axis([-2 2 -1.5 1.5]);grid on; hold on; legend('SpaceCraft','Moon', 'Earth'); xlabel('X-axis'); ylabel('Y-axis'); plot(xn(1),yn(1),'rx'); hold off; % Animation figure(3); for i=1:length(t) plot(xn(i),yn(i),'r+',xmoon(i),ymoon(i),'go',xearth(i),yearth(i),'bo'); axis([-2 2 -1.5 1.5]); pause(0.01); end; A. CHỮA BÀI TẬP Sử dụng các hàm nội trú của MATLAB. 1. Hãy dùng phương pháp Euler để giải gần đúng bài toán Cauchy sau đây với bước đi h = 0,02: ' , 1 5 (1) 1 x y y x y y 2. Dùng phương pháp Hiện ẩn hình thang tính gần đúng hàm y= f(x) cho bởi bài toán Cauchy sau đây với h = 0,05: ' , 0 2 (0) 5 x y x x y y 3. Dùng phương pháp Hiện ẩn trung điểm giải gần đúng bài toán Cauchy sau đây với h = 0,1: ' , 0 10 1 (0) 2 x y x y y 4. Dùng phương pháp Runge-Kutta giải gần đúng bài toán Cauchy sau đây với bước đi h = 0,1: ' , 0 10 2 (0) 0 xy y x y B. THỰC HÀNH Cài đặt chƣơng trình và lập hàm 1. Cài đặt chương trình tìm y=f(x) trong đoạn [0,10] thoả mãn phương trình vi phân: ‟‟‟‟ 2. ‟‟‟. ‟. – 4 ‟‟ 3. . 6 0 y y y y y x y với điều kiện đầu ‟‟‟ 0 ‟‟ 0 1; ‟ 0 0 0,5. y y y y Sai số tương đối là 10-4 và sai số tuyệt đối là 10- 6. Vẽ đồ thị phụ thuộc của y‟‟ đối với y, y‟dưới dạng đường cong Contour 3D. 2. Cài đặt chương trình giải hệ phương trình vi phân: ' 2 3 ' 3 2 ' 7 5 y x g hy g x hy h gy xh trong đoạn x[ 1,10] , với điều kiện đầu là: y(1) =3, g(1)=2 và h(1)=1 với sai số tương đối là 10 -5 và sai số tuyệt đối là 10- 8. Vẽ đồ thị của 3 hàm y, g và h trên cùng một hệ trục toạ độ bằng 3 màu đỏ, xanh dương và xanh lá cây. 3. Cài đặt chương trình giải hệ phương trình vi phân: 3 2 2 3 5 2 3 dx t y yz dt dy ty xzt dt dz x txz dt trong đoạn t[2,15],với điều kiện đầu là: x(2) =1,5 y(2)=2,34 và z(2)=3,33 Vẽ đồ thị đường cong Contour 3D với 3 trục toạ độ là x, y và z. 4. Tìm 3 hàm y=y(x), g=g(x) và h=h(x) thoả hệ phương trình vi phân: ' 4 ' 5 2 ' 2 y xg gyh g xy hy h xgy xh trong đoạn x[ 0,20] , với điều kiện đầu là: y(0) =1, g(0)=1,2 và h(0)=5 với sai số tương đối là 10-4 và sai số tuyệt đối là 10- 6. Vẽ đồ thị của 3 hàm y, g và h trên cùng một hệ trục toạ độ bằng 3 màu đỏ, xanh dương và xanh lá cây, cùng với các chú thích trên đồ thị. 5. Cài đặt chương trình giải hệ phương trình vi phân sau: 3 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. - Yêu cầu SV chuẩn bị: Cài đặt các chương trình các phương giải bài toán Cauchy. - Ghi chú: Đọc các tài liệu tham khảo 1,2,3,4,5. BỘ MÔN DUYỆT ĐỀ CƢƠNG CHI TIẾT BÀI GIẢNG Thay mặt nhóm Chủ nhiệm bộ môn ( Dùng cho 4 tiết giảng) môn học Học phần: Lập trình MATLAB Nhóm môn học: Bộ môn: Toán Tô Văn Ban Khoa : Công nghệ thông tin Nguyễn Trọng Toàn Thông tin về nhóm môn học: TT Họ tên giáo viên Học hàm Học vị 1 Nguyễn Trọng Toàn Giảng viên chính TS 2 Vũ Thanh Hà Giảng viên chính TS 3 Vũ Anh Mỹ Giảng viên ThS Địa điểm làm việc: Bộ môn Toán (1301 nhà S4) Điện thoại, email: 069 515 330, bomontoan_hvktqs@yahoo.com Bài giảng 15: Phƣơng trình vi phân thƣờng Chương, mục: Chương 6, mục 6.5 Tiết thứ: 57-60 Tuần thứ: 15 - Mục đích, yêu cầu: Hướng dẫn các phương pháp giải phương trình vi phân với điều kiện biên. - Hình thức tổ chức dạy học: Lý thuyết, thảo luận, tự học, tự nghiên cứu - Thời gian: Lý thuyết trên lớp: 2 tiết Bài tập + Thực hành: 2 tiết Tự học, tự nghiên cứu : 4 tiết - Địa điểm: Giảng đường do P2 phân công. - Nội dung chính: 6.5 FTVP với điều kiện biên. Thực hành chương trình về Hệ phương trình vi phân. Ôn tập và giải đáp thắc mắc. Kiểm tra. - Yêu cầu SV chuẩn bị: Ôn tập toàn bộ chương đã học. - Ghi chú: Đọc các tài liệu tham khảo 1,2,3,4,5. 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, '( ) 1f 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: '( ) 1f . Để 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 - Cài đặt chương trình tính toán: % 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. ÔN TẬP VÀ KIỂM TRA - Rà soát tất cả các nội dung đã học - Giải đáp thắc mắc - Hướng dẫn phương pháp thi hết môn học - Cho SV làm bài kiểm tra 60 phút - Yêu cầu SV chuẩn bị: Ôn tập toàn bộ chương đã học. - Ghi chú: Đọc các tài liệu tham khảo 1,2,3,4,5.
File đính kèm:
- Đề cương chi tiết bài giảng Lập trình Matlab.pdf