Bài giảng Tin học chuyên ngành - Chương 3: Lập trình trong MATLAB
I. PHẦN TỬCƠBẢN
II. HÀM TOÁN HỌC
III.CÁC DẠNG FILE
IV. BIỂU THỨC QUAN HỆVÀ LOGIC
V. CẤU TRÚC ĐIỀU KHIỂN
VI.BÀI TẬP
Tóm tắt nội dung Bài giảng Tin học chuyên ngành - Chương 3: Lập trình trong MATLAB, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ãy cho biết kết quả khi chạy đoạn chương trình sau: a = pascal(3); row = size(a,1); col = size(a,2); for i = (1-row):(col-1) disp(tril(triu(a,i),i)) end n=4; giaithua=1 for i=1:n giaithua=giaithua*i; fprintf('%d! = %d\n',i,giaithua); end CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB Giảng viên: Hoàng Xuân Dương 118 VI. BÀI TẬP: 5. Hãy cho biết kết quả khi chạy đoạn chương trình sau: 6. Viết chương trình cho hiển thị trên màn hình dãy số : 1 2 3 4 5 6 7 8 … n Với n được nhập từ bàn phím a = [1 2 3 4; 4 5 6 7; 7 8 9 10]; [m n]=size(a); for i = 1:m for j=1:n fprintf('%d ', a(i,j)) end end 60 CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB Giảng viên: Hoàng Xuân Dương 119 VI. BÀI TẬP: 7. Viết đoạn chương trình tính tổng của n số tự nhiên, với n được nhập từ bàn phím 8. Viết một hàm minmax.m với tham số ngõ vào là một ma trận a, Kết quả trả về của hàm là giá trị phần tử lớn nhất và phần tử nhỏ nhất trong ma trận 9. Viết một hàm findmax.m với tham số ngõ vào là một ma trận a; Kết quả trả về của hàm là vị trí của phần tử lớn nhất (hàng, cột) trong ma trận 10. Viết một hàm luythuabac3.m với tham số vào là giá trị n; Trả về giá trị tổng lũy thừa bậc 3 của n phần tử 13 + 23 + 33 + ….. + n3 CHƯƠNG 3: LẬP TRÌNH TRONG MATLAB Giảng viên: Hoàng Xuân Dương 120 VI. BÀI TẬP: 11. Viết một hàm tinhtong.m có: Nhận vào giá trị n Trả về giá trị tổng các tích 2 số liên tiếp từ 1 đến n 1*2 + 2*3 + 3*4 + ….. + (n-1)*n 12. Tìm giá trị lớn nhất của n sao cho tổng: 12 + 22 + … + n2 nhận giá trị nhỏ hơn 100. 13. Mô phỏng một phép tính đơn giản cộng, trừ, nhân và chia 2 số. 14. Hàm tính n!. Sử dụng hàm để tính x=7!/(3!*4!) 61 Bài giảng Tin học chuyên ngành Giảng viên: Hoàng Xuân Dương 121Õ CHƯƠNG 4: CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 122 I. ĐA THỨC II. PHÉP NỘI SUY III. HÀM CỦA HÀM IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC V. BÀI TẬP 62 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 123 I. ĐA THỨC: Đa thức được sắp xếp theo lũy thừa giảm Biểu diễn dưới dạng vector hàng, các phần tử là các hệ số của đa thức Ví dụ: Đa thức 2x3 - 8x + 7 được biểu diễn bằng vector p p=[2 0 -8 7] CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 124 I. ĐA THỨC: Một số hàm xử lý đa thức: Hàm Chức năng conv Nhân đa thức polyfit Xấp xỉ bằng đa thức poly Lập đa thức từ nghiệm polyvalm Tính ma trận đa thức roots Tìm nghiệm đa thức deconv Chia đa thức polyder Đạo hàm đa thức polyval Tính giá trị đa thức residue Tính thặng dư, khai triển riêng phần phân số 63 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 125 I. ĐA THỨC: 1. Nghiệm của đa thức: ¾ Nghiệm của đa thức bậc 2 Ví dụ: Giải phương trình bậc 2: 5x2+6x+7=0 >> p = [5 6 7] >> r = roots(p) r = -0.6000 + 1.0198i -0.6000 - 1.0198i >> t = real(r) t = -0.6000 -0.6000 >> a = imag(r) a = 1.0198 -1.0198 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 126 I. ĐA THỨC: 1. Nghiệm của đa thức: ¾ Đa thức bậc n Ví dụ: Giải phương trình bậc 4: x4 - 12x3 + 25x + 116 = 0 >> p = [1 -12 0 25 116] >> r = roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i >> t = real(r) >> a = imag(r) >> pp = poly(r) pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000 64 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 127 I. ĐA THỨC: 2. Nhân 2 đa thức: Ví dụ: Cho 2 đa thức: y = x3+2x2+3x+4 và z = x3+4x2+9x+16 >> p1 = [1 2 3 4] p1 = 1 2 3 4 >> p2 = [1 4 9 16] p2 = 1 4 9 16 >> p = conv(p1,p2) p = 1 6 20 50 75 84 64 Nếu nhân nhiều đa thức thì lập lại nhiều lần lệnh conv CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 128 I. ĐA THỨC: 3. Cộng đa thức: ¾ Hai đa thức cùng bậc: p = p1 + p2; tương tự cho trừ đa thức p = p1 – p2; ¾ Hai đa thức khác bậc: Thêm các hệ số 0 vào đa thức có bậc thấp hơn để 2 đa thức có cùng bậc 65 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 129 I. ĐA THỨC: 4. Chia đa thức: Ví dụ: Cho 2 đa thức: y = x3 + 6x2 + 12x + 8 z = x2 + 1 >> y = [1 6 12 8]; >> z = [1 0 1]; >> p = deconv(y,z) p = 1 6 >> [p,r] = deconv(y,z) p = 1 6 r = 0 0 11 2 % y=(x2 + 1)(x + 6) + (11x + 2) CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 130 I. ĐA THỨC: 5. Đạo hàm: Ví dụ: Cho đa thức y = x3 + 6x2 + 12x + 8 >> y = [1 6 12 8] y = 1 6 12 8 >> z = polyder(y); z = 3 12 12 % z = 3x2 + 12x + 12 66 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 131 I. ĐA THỨC: 6. Vẽ đồ thị: Ví dụ: đa thức y(x) = x3 + 4x2 - 7x – 10 Cho các giá trị của x, tính các giá trị của y tương ứng >> x = linspace(-1,3); >> p = [1 4 -7 -10]; >> y = polyval(p,x); % xác định y ứng với các giá trị x >> plot(x,y) >> xlabel(‘x’) >> ylabel(‘y = f(x) = x3 + 4x2 - 7x – 10’); >> title(‘Vẽ đồ thị’); CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 132 67 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 133 I. ĐA THỨC: 7. Đa thức hữu tỉ: Ví dụ: Cho phân thức: Phân chia phân thức ra từng hệ số: Nếu chiều dài hay bậc của Q(x) lớn hơn P(x) thì k=0 ( ) ( ) ( ) ( )( )( )4x3x1x 7x42 xQ xP +++ += ( ) ( ) k4x C 3x B 1x A xQ xP ++++++= CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 134 I. ĐA THỨC: 7. Đa thức hữu tỉ (tt) Giải: >> num=2*[4 7]; >> den=poly([-1 ; -3 ; -4]); >> [res,poles,k]=residue(num,den) res = -6.0000 5.0000 1.0000 poles= -4.0000 -3.0000 -1.0000 k = [ ] % 4x 6 3x 5 1x 1 )x(Q )x(P +−+++= 68 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 135 I. ĐA THỨC: 7. Đa thức hữu tỉ (tt) Ngược lại từ res, poles, k có thể tìm lại đa thức P(x), Q(x) >> [P,Q]=residue(res,poles,k) P = 0 8 14 Q = 1 8 19 12 Bài tập: Tìm các hệ số của các hàm sau 1. H(s)=10(s+2)/s(s+4)(s+5) 2. H(s)=4/(s+1)(s+2) 3. H(s)=10s/(s+1)(s+4) 4. H(s)=(s+1)/s(s+2)(s+3) 5. H(s)=10s2/(s+1)(s+5) CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 136 II. PHÉP NỘI SUY: 1. Nội suy một chiều: Hàm nội suy (interpolation) một chiều thông dụng nhất: Yi=interp1(X,Y,Xi) Yi=interp1(Y,Xi) Yi=interp1(X,Y,Xi,’method’) Yi=interp1(X,Y,Xi,’method’,’extrap’) Yi=interp1(X,Y,Xi,’method’,extrapval) Y là tập dữ liệu ứng với giá trị cho bởi tập X Yi là giá trị dữ liệu được nội suy ở giá trị Xi 69 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 137 II. PHÉP NỘI SUY: 1. Nội suy một chiều (tt) method là phương pháp sử dụng khi nội suy: • nearest: nội suy cận gần nhất • linear: nội suy tuyến tính (mặc định) • spline, pchip, cubic, v5cubic: nội suy bậc 3 extrap: dùng khi ngoại suy, các giá trị ngoài tầm x, giá trị trả về là extrapval CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 138 II. PHÉP NỘI SUY: 1. Nội suy một chiều (tt) Ví dụ: >> hour=1:12; >> temps=[5 8 9 15 25 29 31 30 22 25 27 24]; >> plot(hour,temps,hour,temps,'.') >> h=linspace(1,12); >> t =interp1(hour,temps,h,'linear'); >> t1=interp1(hour,temps,h,'cubic'); >> t2=interp1(hour,temps,h,'nearest'); >> hold on >> plot(h,t,'g.') >> plot(h,t1,'r.') >> plot(h,t2,'k.') 70 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 139 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 140 II. PHÉP NỘI SUY: 2. Nội suy hai chiều: Nội suy 2 chiều dùng cho hàm 2 biến z=f(x,y) Hàm nội suy hai chiều thông dụng nhất: Zi=interp2(X,Y,Z,Xi,Yi) Zi=interp2(Z,Xi,Yi) Zi=interp2(Z,ntimes) Zi=interp2(X,Y,Z,Xi,Yi,’method’) Z là tập dữ liệu ứng với giá trị cho bởi tập X,Y Zi là giá trị dữ liệu được nội suy ở giá trị Xi,Yi 71 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 141 II. PHÉP NỘI SUY: 2. Nội suy hai chiều (tt) Ví dụ: Cho một tập dữ liệu lương nhân viên: >> years=1950:10:1990 >> service=10:10:30 >> wage=[150.697 199.592 187.625 179.323 195.072 250.287 203.212 179.092 322.767 226.505 153.706 426.730 249.633 120.281 598.243] Nội suy xem một nhân viên có 15 năm phục vụ lãnh lương bao nhiêu vào năm 1975 >> w=interp2(service,years,wage,15,1975) w= 190.6287 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 142 II. PHÉP NỘI SUY: 3. Nội suy nhiều chiều: Vi=interp3(X,Y,Z,V,Xi,Yi,Zi) Vi=interpn(X1,X2,X3,…,V, Y1, Y2, Y3,…) 72 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 143 III. HÀM CỦA HÀM: Matlab biểu diễn các hàm toán học theo 2 cách: định nghĩa bằng hàm M và định nghĩa bằng inline Ví dụ: có thể tạo file hamtruyen.m hay định nghĩa từ dòng lệnh: >> f=inline(‘10*(s+3)/(s*(s+5)*(s+10))’); có thể tạo hàm nhiều biến với inline >> f=inline(‘y*sin(x)+x*sin(y)’,’x’,’y’) )10s)(5s(s )3s(10y ++ += function y=hamtruyen(s) y=10*(s+3)/(s*(s+5)*(s+10)) CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 144 III. HÀM CỦA HÀM: Hàm feval dùng để tính giá trị của một hàm theo biến: Ví dụ: >> f=inline(‘sin(x)+sin(y)’); >> feval(f,90,45) ans=1.7449 Ví dụ: hamtruyen.m >> feval(@hamtruyen,3) ans=10 function y=hamtruyen(x) y=2*x^2-3*x+1; 73 CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 145 III. HÀM CỦA HÀM: Hàm fplot dùng để vẽ hàm theo biến: Ví dụ: hamtruyen.m >> fplot(@hamtruyen,[0,2]) >> grid on function y=hamtruyen(x) y=2*x^2-3*x+1; CHƯƠNG 4: XỬ LÝ CÁC HÀM TOÁN HỌC Giảng viên: Hoàng Xuân Dương 146 IV. XỬ LÝ HÀM DƯỚI DẠNG CHUỖI BIỂU THỨC: Matlab không chỉ tính toán trên các số cụ thể mà còn có thể thực hiện tính toán trên ký hiệu Î Có thể sử dụng một chuỗi biểu thức để biểu diễn hàm Ví dụ: )]'d,c;b,a[('sym dc ba M )'x*2sin()2^xcos(')x2sin()xcos( )'x*2(sqrt/1' x2 1 )'n^x*2/(1' x2 1 2 n ⇒⎥⎦ ⎤⎢⎣ ⎡= −⇒− ⇒ ⇒
File đính kèm:
- Bài giảng Tin học chuyên ngành - Chương 3_Lập trình trong MATLAB.pdf