intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Matlab ứng dụng

Chia sẻ: Anh Duc | Ngày: | Loại File: PPT | Số trang:91

209
lượt xem
47
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Matlab ứng dụng" trình bày về các bài toán liên quan đến đa thức, tìm cực trị của hàm số, lập trình bằng matlab, Simulink,... Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu tham khảo hữu ích.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Matlab ứng dụng

  1. TIN HỌC CHUYÊN NGÀNH  CƠ ĐIỆN ­­­­­­­­­­­­­­­­­­­­­­ MATLAB ỨNG DỤNG
  2. Một số hàm thông dụng trong MATLAB Hàm với biến số thực: abs(x) cho giá trị tuyệt đối của x ; sign(x) cho dấu của x ; fix(x) cho phần nguyên của x tức là làm tròn về phía số 0 ; ceil(x) làm tròn x tới số nguyên nhỏ nhất x tức là làm tròn về phía + ; floor(x) làm tròn x tới số nguyên lớn nhất x ; tức là làm tròn về phía - ; round(x) làm tròn về số nguyên gần x nhất; frac(x) cho phần phân số (thực sự ) của x: frac(x) = x – fix(x); sqrt(x) cho căn bậc hai dương của x, (nếu x âm ta được số phức); nthroot(x,n) cho căn bậc n (thực) của số thực x; exp(x) cho hàm mũ cơ số e tức là ex; pow2(x) cho hàm mũ cơ số 2 tức là 2x; log(x) cho logarit tự nhiên (cơ số e) của x; log10(x) cho logarit thập phân của x; log2(x) cho logarit cơ số 2 của x; factor(x) cho kết quả phân tích số x thành các thừa số nguyên tố; primes(x) cho ra các số nguyên tố nhỏ hơn hoặc bằng x;
  3. gcd(x,y) cho ước số chung lớn nhất của 2 số nguyên x và y ; lcm(x,y) cho bội số chung nhỏ nhất của 2 số nguyên x và y ; factorial(n) cho tính số n giai thừa (n!) ; perms(v) với v là mảng có độ dài n cho tất cả mọi hoán vị có thể có của mảng v; nchoosek(N,k) cho số các tổ hợp chập k của N (số CkN); dot(A,B) cho tích vô hướng của hai véc tơ A và B; cross(A,B) cho tích có hướng (tích véc tơ) của hai véc tơ A và B; Các hàm lượng giác: sin(x) , cos(x) , tan(x) , cot(x) (x tính theo radian); sind(x), cosd(x), tand(x), cotd(x) (x tính theo độ); Các hàm lượng giác ngược: asin(x) , acos(x) , atan(x) , acot(x) kết quả là radian; asind(x) , acods(x) , atand(x) , acotd(x) kết quả là độ; Các hàm sec(x) (=1/cos(x)) , csc(x) (=1/sin(x)) , asec(x) (=1/acos(x)) , acsc(x) (=1/asin(x)); Các hàm hypebolic: sinh(x) , cosh(x) , tanh(x) , coth(x); Và các hàm ngược của chúng asinh(x) , acosh(x) , atanh(x) , acoth(x);
  4. §1. CÁC BÀI TOÁN LIÊN QUAN ĐẾN ĐA THỨC 1.1. Giá trị và nghiệm của đa thức Để nhập một đa thức ta nhập các hệ số từ cao đến thấp, các hệ số được viết giữa hai dấu [ ] và tách nhau bằng dấu cách. Để tìm giá trị của đa thức p tại x = x0 dùng lệnh polyval(p,x0). Tìm nghiệm r của đa thức p dùng lệnh roots(p). Biết nghiệm r của đa thức, tìm đa thức p dùng lệnh p = poly(r). Tìm đạo hàm một đa thức p ta dùng lệnh polyder(p). Tìm nguyên hàm một đa thức p dùng lệnh polyint(p) (coi hằng số C=0). Chú ý: Nếu sau một lệnh của MATLAB ta đánh dấu chấm phảy thì lệnh đó được thực hiện nhưng không cho ra kết quả trên màn hình, còn nếu không có chấm phảy thì ta có kết quả trên màn hình dưới hai dạng: ans, nếu không đặt tên biến phải tìm; kết quả của biến đó, nếu nó đã được đặt tên. Thí dụ 1: Cho đa thức p = x3 – 2x – 5. Tìm nghiệm của đa thức; Giá trị đa thức tại x = 5; Đạo hàm và nguyên hàm của đa thức.
  5. 1.4. Đa thức nội suy Khi muốn có đa thức biểu diễn dãy số liệu thực nghiệm (xi , yi) thì sau khi vào các số liệu x và y trong dấu ngoặc vuông [ ] , các số cách nhau bằng dấu cách, ta dùng lệnh polyfit(x,y,n) với n là bậc đa thức mà ta chọn. Trong trường hợp ta có n +1 cặp số liệu mà ta chọn bậc đa thức n thì ta được đa thức nội suy Lagrange. Thí dụ 4: Tìm hàm xấp xỉ bậc nhất biểu diễn dãy số liệu x=(2; 4; 6; 8); y=(0.35; 0.573; 0.725; 0.947) Chú ý: Với cách nhập a:b ta có thể tạo ra một dãy các số từ a đến b cách nhau 1 đơn vị; Với cách nhập a:n:b ta có thể tạo ra một dãy các số từ a đến b cách nhau n đơn vị. Thí dụ 5: Tìm hàm xấp xỉ bậc hai biểu diễn dãy số liệu x=(7;12; 17; 22; 27; 32; 37); y=(83.7; 72.9; 63.2; 54.7; 47.5; 41.4; 36.3) Thí dụ 6: Tìm đa thức nội suy Lagrange của dãy số liệu x=(1; 2; 3; 4); y=(17; 27.5; 76; 210.5)
  6. Nội suy tại một giá trị cụ thể xi. Sau khi vào x , y ta dùng lệnh interp1(x,y,xi,’linear’) (interpolation) nếu muốn nội suy tuyến tính hoặc interp1(x,y,xi,’spline’) nếu muốn nội suy đa thức bậc ba tại điểm xi. Thí dụ 7: Nội suy đa thức giá trị hàm tại xi = 4.5 theo dãy số liệu sau: x=(4; 4.2; 4.4; 4.6; 4.8; 5); y=(0.6026; 0.62325; 0.64345; 0.66276; 0.68124; 0.69897); Thí dụ 8: Dân số Hoa Kỳ (tính theo triệu người) từ 1900 đến 1990 (tính theo 10 năm một) được cho ở bảng dưới. Hãy dự đoán dân số Hoa Kỳ năm 2000. Năm 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 Dân 75.99 91.97 105.7 123.3 131.6 150.6 179.3 203.2 226.5 249.6 số 5 2 11 03 69 97 23 12 05 33
  7. MATLAB cũng cho phép ta nội suy giá trị của hàm hai biến z = f(x , y) tại điểm (xo , yo) theo các giá trị cho trước cùa hàm tại các điểm (x , y). Trường hợp các giá trị hàm z cho theo lưới các điểm có tọa độ (xi , yj) Giả sử x = xi i= 1 , 2 , . . . , n ; y = y j j = 1 , 2 , . . . m ; Khi đó z được cho bởi ma trận cỡ m n z = [ zij ] với zij là giá trị tương ứng của hàm tại (xi , yj). Để nội suy giá trị hàm tại (x0 , y0) ta dùng lệnh zo = interp2(x,y,z,xo,yo,’linest’). Thí dụ 9. Dãy x được quan sát từ 1950 đến 1990 với bước là 10 (tức là 1950 1960 1970 1980 1990, n = 5), dãy y được quan sát từ 10 đến 30 với bước 10 (tức là 10 20 30, m = 3); z là ma trận cỡ 3 5 , Hãy nội suy giá trị của z tại x = 1975, y = 15. x y 1950 1960 1970 1980 1990 10 150.697 179.323 203.212 226.505 249.633 20 199.592 195.072 179.092 153.706 120.281 30 187.625 250.287 322.767 426.730 598.243
  8. 2.6. Trích các phần tử từ ma trận Có một ma trận. Ta có thể lấy ra một phần của ma trận đó bằng các hàm: diag(A) lấy các phần tử trên đường chéo chính lưu vào vector cột; diag(A,k) lấy các phần tử trên đường chéo k lưu vào vector cột. Trong đó: k = 0 đường chéo chính; k>0 đường chéo thứ k phía trên đường chéo chính k
  9. 2.8. Một số ma trận đặc biệt trong MATLAB [] ma trận rỗng không chứa phần tử nào. zeros(n) ma trận không cấp n; zeros(m,n) ma trận không m hàng n cột; eye(n) ma trận đơn vị cấp n; ones(n) ma trận vuông cấp n có mọi phần tử bằng 1; ones(size(A)) ma trận cùng cỡ với A nhưng mọi phần tử bằng 1; diag(X) ma trận có các phần tử trên đường chéo chính là các phần tử của véc tơ X, các phần tử khác bằng 0. magic(n) ma trận magic cấp n gồm các số nguyên từ 1 đến n2 sao cho tổng mọi phần tử trên một hàng, một cột , đường chéo đều bằng nhau; pascal(n) ma trận có các phần tử của tam giác Pascal
  10. §3. GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH 3.1. Hệ Cramer AX = B với det(A) 0 Ta có thể dùng ma trận đảo A-1 để tìm nghiệm X = inv(A)*B nhưng để có kết quả nhanh hơn ta dùng lệnh chia trái X = A\ B Thí dụ 19: Giải hệ : 10x1 + 2x2 + 3x3 + 4x4 = 5 2x1 + 10x2 + 6x3 + 7x4 = -1 3x1 + 6x2 + 20x3 + 5x4 = 4.3 4x1 + 7x2 + 5x3 + 28x4 = -9 3.2. Trường hợp det(A) = 0 Ta kiểm tra điều kiện về hạng của ma trận [A] và ma trận mở rộng [A B] (dùng lệnh rank()). Nếu hạng hai ma trận đó bằng nhau thì hệ có vô số nghiệm; ta có thể giải bằng cách dùng ma trận giả đảo bởi lệnh X = pinv(A)*B khi đó ta được nghiệm có chuẩn nhỏ nhất; Nếu hạng hai ma trận khác nhau thì hệ vô nghiệm. Thí dụ 20: Giải hệ phương trình x1 + 3x2 + 7x3 = 5 -x1 + 4x2 + 4x3 = 2 x + 10x + 18x = 12
  11. 3.3. Hệ phương trình tổng quát AX = B , với A là ma trận chữ nhật m n Nếu m < n thì trước khi giải phải kiểm tra điều kiện tương thích về hạng. Nếu điều kiện đó được thoả mãn thì có thể giải hệ bằng X = pinv(A)*B nếu muốn có nghiệm có chuẩn nhỏ nhất; Y= A\ B nếu muốn có nghiệm có số thành phần khác không ít nhất. Thí dụ 21: Giải hệ phương trình x1 - x2 - x3 - 3x4 + x5 = 1 x1 + x2 - 5x3 - x4 + 7x5 = 2 -x1 + 2x2 + 2x3 + 2x4 + x5 = 0 -2x1 + 5x2 - 4x3 + 9x4 + 7x5 = -0.5 Nếu m > n và rank(A) = n hệ có nghiệm duy nhất; Nếu rank(A) = rank([A B]) < n hệ có vô số nghiệm. Thí dụ 22: Giải hệ Ax = B Với A = [1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12] ; B = [1 ; 3 ; 5 ; 7]
  12. 4.2. Biểu diễn hàm trong MATLAB Các hàm MATLAB. MATLAB có một tệp là M-file chứa rất nhiều hàm, các hàm đó nhận các giá trị đưa vào, tính toán rồi trả lại kết quả tính toán. Ta cũng có thể tự tạo nên các hàm M-file. Chọn File, New rồi chọn function, ta có màn hình soạn thảo để đánh các lệnh vào đó. Chẳng hạn, ta đưa vào một hàm và đặt tên là humps như sau: function y = humps(x) y=1./((x-0.3).^2 + 0.01) + 1./((x-0.9).^2 + 0.04) - 6; % các phép tính về mảng, có dấu chấm. Ta lưu hàm đó bằng lệnh Save, nó được lưu với tên humps.m. Bây giờ muốn sử dụng nó thì ở cửa sổ lệnh ta chỉ việc chuyển nó thành hàm sử dụng (function handle) bằng cách gõ thêm ký tự @ trước tên hàm. Thí dụ 25: Tính giá trị của hàm humps nêu trên tại x = 2.0 Các hàm không tên (Anonymous Functions). Một cách thứ hai để biễu diễn hàm là tạo nên ở cửa sổ lệnh một hàm không tên bằng một xâu biểu thức diễn tả hàm đó và cũng làm cho nó thành một hàm handle theo kiểu handle=@(đối số) hàm không tên; Thí dụ 26: Tính giá trị hàm y = 0.5x + 2-x tại x = 1. Thí dụ 27: Tính giá trị hàm z = ysinx + xcosy tại x = ,y=2 .
  13. 4.3. Vẽ đồ thị hàm số 4.3.1. Vẽ theo từng điểm Cho dãy điểm (xi , yi), vẽ các điểm đó trên mặt phẳng bằng lệnh plot(x,y). Chú ý là khi biểu diễn hàm phải dùng các phép tính về mảng. Thí dụ 28: Vẽ đồ thị y = x2 - 2x + 1 trong khoảng x từ -10 đến 10 Khi dùng lệnh vẽ như trên MATLAB chọn kiểu đường đồ thị là nét liền, mầu đồ thị là mầu xanh, đường đồ thị là đường trơn không có đánh dấu. Ta có thể thêm một số lựa chọn khác để biểu diễn đồ thị được tốt hơn.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2