M-FILE, or SCRIPT (tt) Giải PTB2 M-FILE ©Copyright 2007 MATLAB 111 M-FILE, or SCRIPT (tt) >> ptb2 Nhap a = Nhap b = -2 Nhap c = Nghiem cua phuong trinh bac 2: 1 ©Copyright 2007 MATLAB 112 M-FILE, or SCRIPT (tt) SỬ DỤNG FILE SCRIPT Chúng ta soạn script file theo cấu trúc đề nghị sau: a Phần thích (comments section): Viết dịng thích cho chương trình Dịng 1: Tên chương trình từ khóa mơ tả chương trình (dịng MATLAB gọi dòng H1 lệnh lookfor MATLAB tìm thơng tin dịng H1 có yêu cầu) ©Copyright 2007 MATLAB 113 M-FILE, or SCRIPT (tt) Dịng 2: Tên người viết chương trình, ngày viết Định nghĩa tên biến đầu vào đầu Có thể thêm vào định nghĩa tên biến trung gian Lưu ý phải xác định rõ đơn vị đo lường Cho tất biến đầu vào đầu Tên hàm tự tạo sử dụng chương trình b Phần đưa vào giá trị đầu vào (input section) c Phần tính tốn (calculation section) ©Copyright 2007 d Phần trình bày kết quả: Dùng số hàm MATLAB để trình bày kết MATLAB 114 M-FILE, or SCRIPT (tt) Thí dụ: Soạn Script file tính diện tích hình tam giác ABC, biết tọa độ ba điểm không gian R3 Diện tích tam giác tính cơng thức: S = AB ∧ AC Trong đó, ký hiệu (^) tích có hướng hai vectơ AB AC ©Copyright 2007 MATLAB 115 M-FILE, or SCRIPT (tt) Trong cửa sổ Editor/Debugger, ta soạn dòng lệnh sau: ©Copyright 2007 MATLAB 116 M-FILE, or SCRIPT (tt) Trong chương trình hàm cross(u,v) trả vectơ vectơ tích có hướng vectơ u v Lưu ý: vectơ u (hoặc v) xác định thành phần số Thí dụ: u = [1,-2,4], v = [-4,2,0] Hàm norm(p) tính module vectơ p Lệnh clear xuất đầu chương trình xóa tồn biến mà WORKSPACE quản lý dành vùng nhớ để quản lý biến chương trình Dịng lệnh disp(S) thị giá trị biến S cửa sổ lệnhcommand windows(so sánh với lệnh disp(‘text’), hiển thị chuỗi ký tự) ©Copyright 2007 MATLAB 117 M-FILE, or SCRIPT (tt) THỰC HIỆN % File dt_tamgiac.m: Chương trình tính diện tích hình tam giác, % Tên người lập trình % Dữ liệu đầu vào: Tọa ba điểm A,B,C % Dữ liệu đầu ra: Diện tích S ΔABC % Biến trung gian p vectơ tích có hướng hai vectơ AB x AC clear disp(‘CHUONG TRINH TINH DIEN TICH HINH TAM GIAC’) disp(‘KHI BIET TOA DO BA DIEM’) disp(‘=========================================’) a = input(‘Tọa điểm A = ‘); b = input(‘Tọa điểm B = ‘); c = input(‘Tọa điểm C = ‘); p = cross(b-a,c-a); % Tích có hướng hai vectơ AB x AC ©Copyright 2007 S = 0.5*norm(p); % Diện tích ΔABC disp(‘Dien tich tam giac ABC:’) disp(S) MATLAB 118 M-FILE, or SCRIPT (tt) Khi chạy chương trình cho kết quả: >> DT_Tamgiac CT TINH DIEN TICH HINH TAM GIAC KHI BIET TOA DO BA DIEM ================================== Toa diem A = [2,0,0] Toa diem B = [4,0,0] Toa diem C = [3,2,0] Dien tich tam giac ABC: ©Copyright 2007 MATLAB 119 Toolbox Symbolic MATLAB dùng biểu thức dạng biểu tượng (symbolic) chuỗi kí tự để phân biệt với biến hay phép toán dạng số học (numberic) Xem Thí dụ đây: >> x = sym('x'); %Tao bien symbolic x >> eq = 'x^2+2*x+a=0'; %Dinh nghia PT voi bien symbolic x >> solve(eq) %Ham dung de giai PT tren ans = -1+(1-a)^(1/2) -1-(1-a)^(1/2) ©Copyright 2007 MATLAB 120 MẢNG MA TRẬN >> A(:,2:4) % Tạo ma trận gồm cột 2,3,4 A ans = 10 15 -4 -5 -6 >> A(1:2,:) %Tạo ma trận gồm dòng 1,2 A ans = >> A([1 3], [2 4]) % Tạo ma trận gồm phần tử thuộc dịng 1,3 cột 2,4 ©Copyright 2007 MATLAB 146 MẢNG MA TRẬN Tóm tắt: A(k,:) : Véctơ dòng thứ k A (:,l): Vectơ cột thứ l A(k:m,:): Ma trận có dịng thứ k, cột thứ m A([array1], [array2]): Vectơ dòng để ghi số dịng nào, cột cần trích ©Copyright 2007 MATLAB 147 MẢNG MA TRẬN Mảng trống mảng khơng (empty or null array) MATLAB dùng kí hiệu [ ] để mảng trống mảng phần tử Các hàng cột ma trận bỏ đi, cách gán chúng với mảng trống Thí dụ: A(2,:) = [ ], bỏ dòng thứ ma trận A làm thay đổi kích thước ma trận A ban đầu ©Copyright 2007 MATLAB 148 MẢNG MA TRẬN Thí dụ: >> A A= 10 15 -3 -4 -5 -6 >> A(2,:) = [ ]; % Bỏ dòng thứ ma trận A >> A A= 10 15 -3 -4 -5 -6 ©Copyright 2007 MATLAB 149 MẢNG MA TRẬN Thí dụ: >> A A= 10 15 -3 -4 -5 -6 >> A(:,4) = [ ]; % Bỏ tiếp cột thứ >> A A= 10 -3 -4 -5 ©Copyright 2007 MATLAB 150 MẢNG MA TRẬN Các ma trận đặc biệt M = eye(n): tạo ma trận đơn vị cấp n M = ones(m,n): Tạo ma trận có size = m.n, có phần tử M = zeros(m,n): Tạo ma trận có size = m.n, có phần tử M = zeros(n); M = ones(n): Tạo ma trận vuông M cấp n có tất phần tử o ©Copyright 2007 MATLAB 151 CÁC PHÉP TOÁN MA TRẬN Phép cộng trừ A+B A-B % A B ma trận có kích thước, hai đại lượng vơ hướng Phép nhân A*B %Tích hai ma trận Số cột A số hàng B ©Copyright 2007 A.*B % Nhân phần tử A với phần tử B tương ứng A B có kích thước MATLAB 152 CÁC PHÉP TOÁN MA TRẬN Phép chia: A\B % Chia trái ma trận A.\B % Chia trái mảng A/B % Chia phải ma trận A./B %Chia phải mảng Phép lũy thừa: A^k % Lũy thừa ma trận A bậc k Lưu ý: Lỗi phát sinh A k ma trận A.^B % Lũy thừa mảng Là ma trận mà số hạng A(i,j)^B(i,j) ©Copyright 2007 MATLAB 153 CÁC PHÉP TOÁN MA TRẬN Ma trận chuyển vị: A’ Ma trận nghịch đảo inv(a) % Tương đương kí hiệu A-1 Định thức ma trận det(A) % A phải ma trận vuông Phép quay ma trận Rot90(A,n) % Các phần tử ma trận quay góc 90o theo ngược chiều kim đồng hồ A ma trận vuông, n số lần quay Phép đảo ma trận Fliplr(A) %đảo phần tử A từ trái sang phải ©Copyright 2007 Flipud(A) %đảo phần tử A từ xuống MATLAB 154 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH Phương pháp nghịch đảo ma trận Inv(A) Invhilb(n): pinv(A): Tính giả nghịch đảo ma trận nxm với m ≠ n Phương pháp khử Gauss rref([A f]) Phương pháp khử Gauss-Jordan Phương pháp phân rã ma trận LU lu(A) Cú pháp: [L, U, P]=lu(A) − trả ma trận tam giác L, tam giác U ma trận hoán đổi P (ma trận đơn vị mà cột bị hốn chuyển) Ta có, L*U = P*A => X = U\(L\b) ©Copyright 2007 MATLAB 155 HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH Phương pháp phân rã ma trận LU − lu(A) − Cú pháp: [L, U, P]=lu(A) Trả ma trận tam giác L, tam giác U ma trận hoán đổi P (ma trận đơn vị mà cột bị hốn chuyển) Ta có, L*U = P*A => X = U\(L\b) Trả ma trận tam giác U, cịn ma trận LP’=L*P Ta có, LP*U = A => X = U \ (LP\b) ©Copyright 2007 MATLAB 156 TẠO GIAO DIỆN Bài thí nghiệm trang bị cho sinh viên số kiến thức để xây dựng giao diện người dùng môi trường Matlab, nhằm hồn thiện chương trình ứng dụng định Cũng ngôn ngữ cấp cao khác, Matlab hổ trợ nhiều cơng cụ chức cho phép lập trình tạo giao diện sử dụng đẹp nhanh chóng Thí dụ, dạng nút ấn, cửa sổ soạn thảo, dạng menu, … ©Copyright 2007 MATLAB 157 TẠO GIAO DIỆN Các cơng cụ hổ trợ giao diện ©Copyright 2007 MATLAB 158 TẠO GIAO DIỆN Để tạo GIAO DIỆN dùng công cụ GUIDE MATLAB >> guide Hoặc File/Show GUI layout tool Cửa sổ Guide Control Panel xuất Từ cửa sổ truy xuất đến cửa sổ khác Có thể chọn mẫu giao diện có sẵn hay bấm OK để chọn GUI trống ©Copyright 2007 MATLAB 159 TẠO GIAO DIỆN (tt) Cửa sổ biên soạn GUI Vùng bên trái chứa danh sách thành phần đối tượng, vùng có lưới vùng hiển thị, nơi đặt component, bạn bấm chuột trái vào component muốn tạo, sau đưa chuột vùng layout nơi muốn đặt component, bấm chuột trái dùng kích thước component Muốn thay đổi kích chuột phải vào vùng layout, vào menu chọn thuộc tính bấm chuột trái, cửa sổ sau xuất hiện, vào BackGroundColor chọn màu thích hợp Cửa sổ thuộc tính ©Copyright 2007 MATLAB 160