Giải hệ phương trình số phức bằng MATLAB

CHƯƠNG 1: TỔNG QUAN VỀ MATLAB1.1. LÀM QUEN VỚI MATLAB.MATLAB là từ viết tắt của Matrix Laboratory, được công ty Math Works khai thácvà phát triển.MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thôngtin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trìnhmáy tính viết trên nhiều ngôn ngữ lập trình khác.Với thư viện Toolbox, MATLAB cho phép mô phỏng tính toán, thực nghiệm nhiềumô hình trong thực tế và kỹ thuật.Khả năng nổi trội của MATLAB:- Các phép toán ma trận.- Giải phương trình, hệ phương trình.- Vẽ đồ thị hàm số 2D, 3D.- Xử lý ảnh trong MATLAB.- Lập trình trong MATLAB.- Một số hàm trong MATLAB.Trong phạm vi đề tài này, nhóm sinh viên sử dụng MATLAB version 2010b.1.1.1. Khởi động và thoát khỏi MATLAB.Màn hình mặc định của MATLAB khi khởi động như sau:- Cửa sổ Command Window: cửa sổ lệnh- Các menu quen thuộc như trong Windows như file, edit, debug,desktop, windowvà help.MATLAB hiển thị dấu nhắc dạng “>>”: câu lệnh được viết sau dấu nhắc và nhấnenter để thực hiện, kết quả được hiển thị ngay trên cửa sổ.Chỉnh sửa câu lệnh bằng các phím: esc: xóa câu lệnh, phím ↑ để lấy lại câu lệnh,phím ,← →, delete, backspace để chỉnh sửa.Cửa sổ Command History: ghi lại toàn bộ các dòng lệnh đã vào trên cửa sổ lệnh.-1-Hình 1.1: Giao diện chính của chương trình.1.1.2. Trợ giúp trực tuyến trong 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ú. Cú pháp: >> help Ví dụ 1.1:>> help sin SIN Sine of argument in radians. SIN(X) is the sine of the elements of X. See also asin, sind. Overloaded methods: sym/sin codistributed/sin Reference page in Help browser doc sinNói chung, MATLAB phân biệt chữ hoa và chữ thường trong câu lệnh. Hầu hết cáctên biến và hàm nội trú của MATLAB được viết bằng chữ thường.1.1.3. Chế độ làm việc trực tiếp và chế độ M-file trong MATLAB.MATLAB có 2 chế độ làm việc:Làm việc trực tiếp: gõ lệnh trực tiếp trong cửa sổ Command và chương trình thựchiện lệnh ngay khi nhấn Enter, kết quả cũng được hiển thị trên cửa sổ.Ví dụ 1.2:>> x = 1;>> 4*atan(x)ans = 3.14159265358979-2-Nếu cuối câu lệnh có dấu ‘;’ thì MATLAB sẽ không hiển thị kết quả câu lệnh đó ởphía dưới. Kết quả sẽ được gán tự động vào biến ans.Chạy chương trình MATLAB với file script được soạn thảo trước, được lưu dướidạng file *m, khi chạy file này các lệnh trong file sẽ thứ tự được thực hiện.Ví dụ 1.3: Ta thực hiện đoạn chương trình trên với M-file, lưu với tên file là pi.m.% Chuong trinh tinh in ra so pi"x = 1;format long g;4*atan(x)EndTrong cửa sổ lệnh ta chỉ việc gõ lệnh >>pi Enter.>> pians = 3.14161.1.4. Một số biến gán sẵn và hàm nội trú của MATLAB.Trong MATLAB có một số tên hàm và biến chuẩn. Khi đặt tên m-fle và tên biếntránh. Trùng với các tên đó để tránh xảy ra xung đột. Ta có bảng các tên biến và tên hàmhay được sử dụng như sau:Bảng 1.1: Danh sách một số biến gán sẵn và hàm nội trú của MATLABSTT Tên Ý nghĩa1 ans Tên biến chứ kết quả nếu chưa gán kết quả tính cho biến nào2 epsSố epsilon, số thực đủ nhỏ để khi thêm vào một số thành một số khác mà MATLAB sẽ phân biệt được nó với số gốc: Eps =2.2204.e-163 Pi Số pi = 3.14164 inf Số vô cùng, kết quả của phép chia 5 NaN Not-a-Number, số vô định, kết quả của phép chia 6 i (and) j Đơn vị ảo hay 7 realmin Số dương nhỏ nhất biểu diễn được trên MTĐT: 2.22518 realmax Số dương lớn nhất biểu diễn được trên MTĐT: 1.79779 abs(x) Hàm giá trị tuyệt đối hoặc modul của số phức x10 acos(x) Hàm 11 asin(x) Hàm 12 atan(x) Hàm 13 atan2(y,x) Hàm 14 conj(x) Hàm tính số liên hợp của số phức x15 cos(x) Hàm 16 exp(x) Hàm 17 imag(x) Phần ảo của số phức x18 log(x) Hàm 19 log2(x) Hàm -3-20 log10(x) Hàm 21 real(x) Hàm lấy phần thực của số phức x22 sign(x) Hàm dấu của số thực x23 sin(x) Hàm 24 sqrt(x) Hàm 25 tan(x) Hàm 26 cot(x) Hàm 1.1.5. Định dạng dữ liệu hiển thị trên màn hình.Tất cả các biến đều có thể được hiển thị trên màn hình theo các định dạng khácnhau phụ thuộc vào phương án sử dụng câu lệnh Format mới nhất. Cú pháp câu lệnh Format:format [ ] Giải thích: Lệnh FORMAT dùng để thay đổi qui cách hiển thị dữ liệu. - Nếu là:+ ‘long’ : Hiển thị kết quả tới 16 chữ số có nghĩa.+ ‘short’ (giá trị mặc định): Hiển thị kết quả với 5 chữ số có nghĩa.+ ‘rat’: Hiển thị kết quả dạng phân số (giá trị xấp xỉ). - Nếu là:+ ‘e’: Hiển thị kết quả kiểu số thực dấu phẩy động.+ ‘g’: Hiển thị kết quả kiểu số thực dấu phẩy tĩnh. Ví dụ 1.4:>> 4*atan(1) ans = 3.1416 >> format long e; ans ans = 34 3.141592653589793e+00 >> format long g ans ans = 3.14159265358979 >> format rat ; ans ans = 355/1131.1.6. Tạo vector ma trận.Một thế mạnh của MATLAB là xử lí được vector, ma trận và cả số phức. Vector vàma trận có thể được gán cho các biến theo nhiều cách khác nhau. Cú pháp của lệnh tạovector cách đều như sau: = [First : Increment : Last]Lệnh sẽ sinh ra một vector hàng với phần tử đầu là First, phần tử cuối là Last và sốgia là Increment, mặc định là 1. Vector này sẽ được gán cho biến . Ví dụ 1.5:-4->> a = [1 2 3 4 5 6 7 8 9 10]; % Tạovector hàng >> b = [1 ; 2 ; 3; 4 ; 5 ; 6 ; 7 ; 8 ; 9 ; 10];% Tạo vectorcột >> c = [1:10]; % Vector hàng giống a>> e = sin(a); % Vector cùng cỡ với a >> A=[1 2 3 ; 4 5 6 ; 7 8 9]; % Ma trậncỡ 3x3 >> B = [A; 10 11 12 ]; % Ma trậncỡ 4x3 >> f = [ 0.5:2:10] f = 0.5000 2.5000 4.5000 6.50008.50001.1.7. Xử lý các phần tử ma trận.Trong MATLAB các phần tử của một vector hay ma trận có thể được xác định theonhiều cách khác nhau. Một cách đơn giản nhất là viết tên ma trận đi kèm với các chỉ sốhàng và cột của của phần tử cần xử lý. Ví dụ 1.6:>> A=[1 2 3 ; 4 5 6 ; 7 8 9 ]; >> C = [A; 10 11 12 ]; >> C(4,2) %% Hiện phần tử hàng 4 cột 2 của ma trận C ans = 11 >> A(8) %% Hiện phần tử thứ 8 trong ma trận A ans = 6 Nếu muốn rút trích cả một hàng, một cột hay một ma trận con thì dùng các câulệnh như sau: Ví dụ 1.7:>> A(2,:) %% Hiện hàng thứ 2 của A ans= 4 5 6 >>A(:,3) %% Hiện cột thứ 3 của A >> Asub = A(1:2, 2:3) ; >> C=A(:,[2 3]; Bạn cũng có thể rút trích dữ liệu trong các ma trận để “lắp ghép” với nhau để tạothành một ma trận mới: Ví dụ 1.8:>> B =A([3 1 1], :) B = 7 8 9 1 2 3 1 2 3 >> E=[A B; B A] 36 E = 1 2 3 7 8 9 4 5 6 1 2 3 7 8 9 1 2 3 7 8 9 1 2 3 -5- 1 2 3 4 5 6 1 2 3 7 8 91.1.8. Các phép toán trên ma trận.Bảng 1.2: Danh sách các phép toán số học trên ma trận.Stt Toán tử Ý nghĩa1 *Phép nhân nói chung: Vô hướng –Vô hướng, Vô hướng -Vector, Vô hướng- Ma trận, Ma trận – Ma trận2 .*Phép nhân phần tử với phần tử tương ứng3 ^Phép luỹ thừa4 .^Phép luỹ thừa của từng phần tử5 ‘Phép chuyển vị ma trận hoặc tính số phức liên hợp6 .’Phép chuyển vị ma trận7 + (-)Phép cộng (trừ) ma trận-ma trận, ma trận-vô hướng8 /Phép chia phải9 ./Phép chia phải tương ứng từng phần tử của ma trận. Các ma trận phải cùng kích thước10 \Phép chia trái11 .\Phép chia trái tương ứng từng phần tử của ma trận. Các ma trận phải cùng kích thướcKhi tính toán với các ma trận, kích thước của chúng phải phù hợp. Nếu không,MATLAB sẽ đưa ra thông báo lỗi.Ví dụ 1.9:>> d = [10:-1.5:5.5]'; %% Tạo ra một vector cột >> C = [ 1 2 3; 4 5 6; 7 8 9]; >> b = [ 10 11 12]; >> b.*b %% Tương tự như b.^2 ans = 100 121 144 >> C*C' ans = 14 32 50 32 77 122 50 122 194 >> C^2 %% Tương tự như C*C ans = 30 36 42 66 81 96 -6-102 126 150 >> C*b %% Câu lệnh có lỗi kích thước ??? Error using ==>* Inner matrix dimensions must agree >> C*b' ans = 68 167 266 >> C.^2; %% Bình phương từng phần tử >> B= C/2; %% Có kết quả tương tự B= 2\A >> a=[1:5}; b=[6:10]; >> a.\b 38 ans = 6.0000 3.5000 2.6667 2.25002.0000 >> C = [ 1 2 3; 4 5 -6; 7 -8 9]; >> d = [ 10; 11; 12]; >> C\d %% Giải hệ phương trình Cx=d ans = 2.2667 1.9333 1.28891.1.9. Các hàm về kích thước vector và ma trận.Trong các chương trình của MATLAB, các biến không cần khai báo trước. Kiểu vàkích thước mỗi biến tùy thuộc vào dữ liệu thực tế mà nó đang lưu trữ. Do đó, nhiều khi tacần phải xác định kích thước hiện tại của ma trận để chọn câu lệnh xử lý thích hợp, chẳnghạn như trong câu lệnh điều khiển vòng lặp.Bảng 1.3: Các hàm về kích thước vector và ma trận.Stt Tên hàm Ý nghĩa1 length(x)Trả về số phần tử của vector x hoặc max của số hàng và số cột của ma trận x2 size(a)Trả về vector 2 chiều gồm số hàng và số cột của ma trận A3 size(a,p)Kết quả là : số hàng nếu p =1, số cột nếu p=2 , bằng 1 nếu p>2Ví dụ 1.10:>> a = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12]a = 1 2 3 4 5 6 7 8 9 10 11 12>> [m n] = size(a)m = 4n = 3>> size(a,1)ans =-7- 4>> size(a,2)ans = 3>> length(a)ans = 41.1.10. Một số ma trận chuẩn của MATLAB.Trong MATLAB có một số ma trận được xây dựng sẵn, gọi là các ma trận chuẩn.Các ma trận đơn giản được cho ở bảng dưới đây:Bảng 1.4: Một số ma trận quen thuộc.Stt Ma trận Ý nghĩa1 ones(m,n) Ma trận gồm toàn số 1, cỡ mn2 zeros(m,n) Ma trận không, cỡ mn3 eye(m,n) Ma trận đơn vị mở rộng, cỡ mn4 [] Ma trận rỗng, tương tự như ones(0,0), zeros(0,0), eye(0,0)Ví dụ 1.11:>> a = ones(3,4)a = 1 1 1 1 1 1 1 1 1 1 1 1>> e = eye(4)e = 1 0 0 0 0 1 0 0 0 0 1 01 0 0 121.2. NHỮNG CÂU LỆNH ĐIỀU KHIỂN CHƯƠNG TRÌNH.1.2.1. Các toán tử, hàm quan hệ và logic.Khi so sánh 2 số, kết quả đúng là 1 và kết quả sai là 0. Nếu các ma trận so sánh vớinhau, thì chúng phải cùng cỡ và việc so sánh thực hiện với từng phần tử tương ứng củahai ma trận và kết quả của phép so sánh là một 0-1 ma trận cùng cỡ với chúng.Bảng 1.5: Danh sách các toán tử quan hệ và logic.Stt Toán tử Ý nghĩa1 < So sánh nhỏ hơn2 <= So sánh nhỏ hơn hoặc bẳng-8-3 > So sánh lớn hơn4 >= So sánh lớn hơn hoặc bẳng5 == So sánh bằng nhau6 ~= So sánh không bằng nhau7 & Toán tử logic Hội8 || Toán tử logic Tuyển9 ~ Toán tử logic Phủ địnhVí dụ 1.12:>> 5~=7-2 ans = 0 >> A =[ 1 2 3; 3 2 1] ; >> A(1,:) <= A(2,:) ans = 1 1 0 >> B = [ 1 2 3; 4 5 6; 7 8 9]; >> L = ~(B>5) 42 L = 1 1 1 0 1 0 0 0 0Bảng 1.6: Danh sách một số hàm quan hệ và logic.STT Hàm Ý nghĩa1 any(x) Bằng 1 nếu một phần tử của vector x0, ngược lại bằng 02 all(x) Bằng 1 nếu mọi phần tử của vector x0, ngược lại bằng 03 find(x)Tạo ra một vector gồm các chỉ số của các phần tử 0 của vectorx; nếu x là ma trận thì nó được coi như vector bằng cách nối cáccột của ma trận với nhau4exist(‘item’)Bằng 0 nếu Item không tồn tại; Bằng 1 nếu Item là biến; Bằng 2nếu Item là M-file; Bằng 3 nếu Item là một Mex-file; Bằng 4nếu Item là file được dịch từ phần mềm Simulink; Bằng 5 nếuItem là tên hàm nội trú của MATLAB5 finite(x)Là ma trận cùng cỡ với x có các phần tử là 1 nếu các phần tửtương ứng của x là hữu hạn, ngược lại là 06 isnan(x)Là ma trận cùng cỡ với x có các phần tử là 1 nếu các phần tửtương ứng của x là NaN, ngược lại là 0-9-7 isempty(x) Bằng 1 nếu x là ma trận rỗng, ngược lại bằng 08 isstr(x) Bằng 1 nếu x là một xâu, ngược lại bằng 09 strcmp(x,y) Bằng 1 nếu 2 xâu x và y giống nhau, ngược lại bằng 010 xor(x,y)Hàm logic đối xứng xor(x,y)= x xor y. Các biến x và y phải làcác ma trận cùng cỡ hoặc một trong chúng phải là vô hướng.Kết quả là một 0-1 ma trận cùng cỡ: phần tử của nó là 0 nếu cả2 phần tử tương ứng của x và y cùng bằng 0 hoặc cùng khác 011 sign(x) Hàm dấu của xVí dụ: 1.13:>> A = [ 1 2 3; 4 0 6; 0 0 0]; >> exist('A') ans = 1 >> B=[ 1 0 3; 4 5 NaN; inf 7 8]; >> isnan(B) ans = 0 0 0 0 0 1 0 0 0 >> finite(B) ans = 1 1 1 1 1 0 0 1 1 >> any(A) ans = 1 1 1 >> any(A') ans = 1 1 0 >> all(A) 44 ans = 0 0 0 >> all(A') ans = 1 0 0 >> C=[ ]; >> isempty(C) ans = 1 >> find(A) ans = 1 2 4 7 8 >>find(A(:,1)) ans = 1 2 >> find(A(:,2)) -10- ans = 1 >> s =' Hello'; isstr(s) ans = 1 >> B =eye(3); >> xor(A,B) ans = 45 0 1 1 1 1 1 0 0 1 >>xor(B,1) ans = 0 1 1 1 0 1 1 1 0 >> x=[ 3 -3 0 4]; >> sign(x) ans = 1 -1 0 11.2.2. Câu lệnh kiểm tra và quyết định If.Cú pháp: If [ elseif < Commands-2 > ] [ else < Commands-3 > ] endGiải thích. Câu lệnh IF dùng để kiểm tra và rẽ nhánh chương trình dựa vào giá trịcủa các biểu thức logic. Câu lệnh con: elseif < Commands-2> Có thể không có hoặc có mặt nhiều lần trong cùng một câu lệnh IF. Đầu tiên, MATLAB kiểm tra giá trị của biểu thức logic : Nếu nó đúng(khác 0) thì thực hiện nhóm lệnh . Ngược lại, nếu =0,MATLAB sẽ lần lượt kiểm tra các biểu thức logic dạng , nếu một biểu thứclogic là đúng thì thực hiện nhóm lệnh tương ứng… hoặc sẽ thực hiện nếu không tìm thấy biểu thức logic nào cho giá trị đúng.Ta có thể mô tả câu lệnh bằng sơ đồ sau:-11-Hình 1.2: Câu lệnh if.Ví dụ 1.14: Tính giá trị của y theo các miền giá trị khác nhau của x:Nếu x<0, y=0:0≤x≤5, y=x2x>5, y=25x Lệnh như sau:>> x = -2x = -2>> if x>5y = 25*xelseif x >= 0y = x^2elsey = 0endy =0Các biểu thức logic trong cấu trúc điều kiện có thể có dạng tổ hợp: nó được tạo nênbởi 1 hoặc nhiều biểu thức logic thành phần và được liên kết bằng các toán tử logic.Trong Matlab có các toán tử logic sau:Toán tử phủ định NOT:được ký hiệu bằng dấu ~Ví dụ 1.15: Nếu (x>=0) có giá trị đúng thì ~(x>=0) có giá trị sai và ngược lại.Toán tử AND: được ký hiệu bằng dấu &Ví dụ: nếu các biểu thức (x>=0),(y>=0) đều có giá trị đúng thì biểu thức tổ hợp(x>=0)&(y>=0) có giá trị đúng. Ngược lại 1 trong 2 biểu thức trên có giá trị sai thì biểuthức tổ hợp (x>=0)&(y>=0) có giá trị sai.Toán tử OR: được ký hiệu bằng dấu |-12-Ví dụ: nếu các biểu thức (x>=0),(y>=0) đều có giá trị sai thì biểu thức tổ hợp(x>=0)|(y>=0) có giá trị sai. Ngược lại 1 trong 2 biểu thức trên có giá trị đúng thì biểuthức tổ hợp (x>=0)|(y>=0) có giá trị đúng.1.2.3. Câu lệnh SwitchCú pháp: switch case < Commands-1> case < Commands-2> case < Commands-n> [otherwise < Commands n+1> ] end Giải thích. Câu lệnh SWITCH dùng để rẽ nhánh thực hiện chương trình tùy thuộcgiá trị của một biểu thức.Đầu tiên, MATLAB tính giá trị của biểu thức , rồi kiểm tra lần lượt giá trịcủa nó có nằm trong các danh sách giá trị hay không. Nếu giá trị biểu thứcđược tìm thấy trong danh sách giá trị thì nhóm lệnh tươngứng sẽ được thực hiện, trái lại MATLAB kiểm tra danh sách thứ i+1 Nếu giá trị củabiểu thức không nằm trong một danh sách giá trị nào thì MATLAB sẽ thực hiện nhómlệnh .Ví dụ 1.16:Đoạn chương trình được viết trong M-flie: phanloai.mn = input('Cho biet diem');disp('Phan loai:');switch n case {0,1,2,3,4} disp('Loai yeu'); case {5,6} disp('Loai trung binh'); case {7,8} disp('Loai kha'); case {9,10} disp('Loai gioi'); otherwise disp('Diem khong hop le');endThực hiện:>> phanloai-13-Cho biet diem 8Phan loai:Loai kha1.2.4. Câu lệnh lặp có số lần lặp xác định For.Cú pháp: For = < Commands > end Giải thích. Trong câu lệnh FOR, nhóm lệnh được thực hiện với sốlần lặp đúng bằng số cột của ma trận A được tính bởi biểu thức . Mỗi lần thựchiện một vòng lặp, biến nhận giá trị bằng một vector cột tương ứng của A.Ví dụ: 1.17:>> s = 0;>> a = [1 2 3; 4 5 6];>> for t=as=s+t;end; ss = 6 151.2.5. Câu lệnh lặp theo điều kiện While.Cú pháp: while < Commands> end Giải thích. Khi thực hiện câu lệnh WHILE, đầu tiên biểu thức logic đượckiểm tra. Nếu nó có giá trị đúng (khác 0) thì nhóm lệnh trong vòng lặpđược thực hiện, sau đó MATLAB quay lại kiểm tra biểu thức logic Quá trìnhnày lặp đi lặp lại cho đến khi biểu thức logic nhận giá trị sai (bằng 0) thì kết thúccâu lệnh lặp.Ví dụ 1.18:>> s = 0.5;>> while s<10s = s+1;end>> ss = 10.50001. 2.6. Câu lệnh break.Cú pháp: break-14-Giải thích. Câu lệnh BREAK không có tham số, dùng để chấm dứt tác dụng củamột câu lệnh có cấu trúc như: FOR, WHILE hoặc IF, SWITCH (nhảy về sau câu lệnhEND tương ứng). Nói chung, khi viết chương trình không nên dùng BREAK đối với cáccâu lệnh IF hoặc câu lệnh SWITCH.1.3. NHÓM LỆNH INPUT, OUTPUT.1.3.1. File dữ liệu.Trong MATLAB, ma trận có thể được lưu trữ dưới một trong hai dạng Mat-file vàASCII file. Mat-file lưu trữ dữ liệu dạng nhị phân, thích hợp cho xử lí trong các chươngtrình MATLAB. ASCII file lưu trữ dữ liệu dưới dạng văn bản, thích hợp với việc truyềndữ liệu trong các chương trình viết bằng các ngôn ngữ khác nhau.1.3.2. Mở và đóng một ASCII file.1.3.2.1. Mở file.Cú pháp: FID = fopen (,) Giải thích. MATLAB mở file có tên , gán file cho biến file có tên FID. Kiểu mở file được xác định bởi . là một xâu có thểnhận giá trị và ý nghĩa như sau: 'r' : Mở để đọc (reading); 'w' : Mở để ghi (writing), xóa bỏ nội dung của file cũ; 'a' : Mở hoặc tạo file để ghi, nối (append) dữ liệu vào đuôi file cũ; 'r+' : Mở file (không tạo file mới) để đọc và ghi; 'w+' : Mở hoặc tạo file để đọc và ghi, xóa bỏ nội dung của file; 'a+' : Mở hoặc tạo file để đọc và ghi, nối dữ liệu vào đuôi file cũ.1.3.2.2. Đóng file.Cú pháp: fclose(FID) Giải thích: Lệnh FCLOSE thực hiện đóng file đã mở với tên biến là FID.Khi thực hiện các câu lệnh ghi thông tin lên file, MATLAB chỉ thực hiện cập nhậtthông tin với nội dung file đang có trong bộ nhớ. Sau câu lệnh FCLOSED, nội dung mớicủa file mới thực sự được cập nhật trên đĩa. Nếu không có câu lệnh này, nội dung cậpnhật có thể bị mất.Bảng 1.7: Một số lệnh trích xuất dữ liệu.Stt Cú pháp Giải thích1 disp(x) Hiện giá trị của biến x hoặc một xâu kí tự lên màn hình-15-2 = input (‘Lời thoại’)In xâu ‘Lời thoại’ ra màn hình và nhập dữ liệu từ bàn phím cho biến.3 save x,yLưu các ma trận x và y vào Mat-file, mặc định kiểu file là *.mat trong thư mục chủ4 load Nhập dữ liệu từ file, mặc định là kiểu file *.mat trong thư mục chủ5fprintf ('Lời thoại % format', x)Đưa ra màn hình lời thoại và giá trị của x theo định dạng của format6fprintf(FID, ' Lời thoại % format', x)Ghi xâu ‘Lời thoại’ và giá trị của x theo định dạng của format vào text file được mở với tên biến file là FIDVí dụ 1.19:>> h = input (' Cho biet chieu cao: '); Cho biet chieu cao: | %% Gõ 15.25 và Enter>> disp(x) 15.250053>> x=[ pi exp(1) 12.34567890]; >> dl = fopen('dulieu.dat', 'w'); >> fprintf(dl, ' So Pi =%12.8f m, So e =%f m , f(x) =%2.3em \n ',x) ; >> fclose(dl); Các bạn hãy chú ý về định dạng dữ liệu xuất của format trong câu lệnh FPRINTF.Kết quả của dãy lệnh trên là tạo ra text file dulieu.dat có nội dung:So Pi = 3.14159265 m, So e = 2.718282 m , f(x)= 1.235e+001 mVí dụ 1.20: Lập bảng tính hàm sin và lưu vào Mat-file dl1.mat: >> x = [ 0 : pi/60: 2*pi]; >> y = sin(x); >> t = [x ; y]; >> save dl1 t; Vẽ đồ thị hàm sin theo bảng số lấy trong Mat-filedl1.mat : >> load dl1; >> a = t(1,; >> b =t(2,; >> plot(a,b); grid on-16-Hình 1.3: Đồ thị hàm y=sin(x).1.4. HÀM TRONG MATLAB.1.4.1. Phân loại hàm.Có thể chia hàm trong MATLAB thành hai loại:- Hàm chuẩn là các hàm nội trú, được lập sẵn của MATLAB. - Hàm do người sử dụng tạo ra là các hàm do người sử dụng MATLAB viết dướidạng hàm M-file hay dạng hàm Inline. Bảng 1.8: Một số hàm số học chuẩn thông dụng.Stt Hàm số Ý nghĩa1 round(x) Quy tròn x2 fix(x) Làm tròn về 03 floor(x) Làm tròn nhỏ đi4 ceil(x) Làm tròn lớn lên5 rem(x,y) Phần dư của phép chia x cho yVí dụ 1.9:>> rem(-15.3,2.6) ans = -2.3000 >> x =cos(2/3)-5 x = -4.2141 >> fix(x) ans = -4 -17->> ceil(x) ans = 55 -4 >> floor(x) ans = -5 >> round(x) ans = -41.4.2. File kịch bản (script file hay M-file).Script file là các file chương trình do người sử dụng viết ra được lưu dưới dạng M-file (*.m). M-file là loại text file nên bạn có thể sử dụng các hệ soạn thảo văn bản khácnhau để soạn thảo file hoặc bạn có thể chọn chức năng mở file (New hoặc Open) trongmenu File. Khi gọi thực hiện chương trình, bạn chỉ cần gõ trên file mà không cần gõ cảphần mở rộng của file.1.4.3. Hàm M-file và cách tạo hàm M-file trong MATLAB.Hàm trong MATLAB có thể được viết dưới dạng M-file hay hàm Inline. Hàm M-file cần được lưu vào thư mục làm việc của MATLAB. Cấu trúc của hàm M-file như sau:- Các dòng chú thích bắt đầu là dấu %.- Một dòng bắt đầu là từ khóa function, sau đó lần lượt là: Danh sách tham số đầu ra(vô hướng hoặc vector), dấu bằng, tên hàm và danh sách các tham số đầu vào để trongngoặc đơn. Dòng này được dùng để phân biệt giữa các file hàm với các script-file.- Các dòng lệnh của hàm. - Dòng cuối cùng có thể thêm từ khóa end hoặc không.Những điều cần chú ý khi tạo hàm:- Trong hàm phải có các lệnh gán giá trị cho tham số ra. Khi kết thúc thực hiện hàm,nếu một trong các tham số ra chưa được gán giá trị lần nào thì MATLAB sẽ đưa ra thôngbáo lỗi. - Các biến sử dụng trong hàm đều là các biến địa phương. Tên biến trong hàm vàtên biến trong bộ nhớ hay trong chương trình gọi có thể trùng tên nhưng đó là hai biếnkhác biệt. - Trong hàm có các biến đặc biệt mặc định là nargin và nargout, chúng là các biếncục bộ. Chúng tự động được gán giá trị bằng số các tham số vào và số các tham số rađược sử dụng trong câu lệnh gọi hàm.Bảng 1.9: Một số lệnh với các m-fileStt Câu lệnh Ý nghĩa1 echo on/off Hiện hoặc ẩn các câu lệnh của M-file khi chúng thực hiện2 return Kết thúc thực hiện hàm một cách bất thường-18-3 type Xem nội dung file văn bản, mặc định đuôi file là *.m4what Xem danh sách M-file và MAT-file trong thư mục hiện hành5 help Hiện các câu chú thích trong M-file lên màn hìnhVí dụ 1.20:Xây dựng m-file giải phương trình bậc 2 có tên Equa2% Ham giai phuong trinh bac 2 function [x1, x2]=Equa2(a,b,c) delta = b^2-4*a*c; x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a);Sau đó gọi hàm trong cửa sổ lệnh của chương trình MATLAB>> [ x y ] = Equa2(1, 2, 4) x = -1.0000 + 1.7321i y = -1.0000 - 1.7321i >> Equa2(1, 2, 4) %% Gọi hàm với nargout = 0 ans = -1.0000 + 1.7321iLưu ý chỉ vị trí lưu M-file để MATLAB có thể đọc được, nếu không tìm thấy filechương trình sẽ báo lỗi.1.4.4. Hàm Inline.INLINE là lệnh tạo một hàm (hay đối tượng –Object ) Inline trong bộ nhớ. Khithoát khỏi MATLAB, các hàm dạng này sẽ bị xóa. Cú pháp: F= inline('Expr','x1', 'x2', ,) F= inline('Expr', N) Giải thích. F = inline('Expr'): Định nghĩa một hàm inline F bằng một biểu thức nằm trong xâu'Expr'. Các tham số vào là các tên biến tự động tìm được trong biểu thức. Nếu biểu thứckhông có biến nào thì hàm sử dụng tham số vào giả là 'x'. F = inline('Expr','x1', 'x2', ,): Định nghĩa một hàm inline F bằng một biểu thức nằmtrong xâu 'Expr'. Tên của các tham số vào của hàm lần lượt là 'x1', 'x2', F = inline('Exp', N): Với N là một số nguyên, MATLAB sẽ tạo hàm inline F với(N+1) biến bằng một biểu thức nằm trong xâu 'Exp'. Tên của các tham số vào của hàmlần lượt là 'x', 'P1' , 'P2', , ’PN’. Khi cần tính toán với một hàm số xác định từ một biểu thức đơn giản chúng ta nênđịnh nghĩa hàm dưới dạng đối tượng Inline. Ví dụ 1.21:>> F1 = inline('pi^2') -19- F1 = Inline function: F1(x) = pi^2 >> F2 = inline('sin(2*pi*f + theta)') F2 = Inline function: F2(f,theta) = sin(2*pi*f + theta) >> F3 = inline('sin(2*pi*f+theta)','theta','f') F3 = 59 Inline function: F3(theta,f) = sin(2*pi*f + theta) >> F2(2,1) ans = 0.8415 >> F3(2,1) ans = 0.9093 >> F4 = inline('x^P1+P3',3) F4 = Inline function: F4(x,P1,P2,P3) = x^P1+P31.5. MỘT SỐ LỆNH BỔ TRỢ.1.5.1. Các lệnh tính toán thời gian của máy tính.Khi nghiên cứu hiệu quả của một giải thuật, cái được người ta quan tâm đầu tiên làvới một bài toán cụ thể thì chương trình thực hiện giải thuật đó chạy hết bao nhiêu thờigian. Trong MATLAB có một số hàm giúp người sử dụng kiểm tra thời gian thực hiệntoán của một chương trình.Bảng 1.10: Danh sách các hàm tính toán thời gian máy tính.Stt Câu lệnh Ý nghĩa1 tic Khởi động đồng hồ tính thời gian2 toc Dừng đồng hồ tính thời gian và cho biết thời gian tính toán3cputime Thời gian làm việc từ khi khởi động MATLAB, tính bằng đơnvị giâyVí dụ 1.22:>> cputime ans = 8.2873e+003 Tính thời gian chạy chương trình Calpi.m: >> tic; calpi;toc ans = 3.1416 Elapsed time is 0.000204 seconds. Để tính thời gian thực hiện chương trình bạn cũng có thể làm như sau: >> t= cputime; Calpi; t=cputime –t ans = -20- 3.1416 t = 0.00021.5.2. Các lệnh quản lý bộ nhớ.Bảng 1.11: Danh sách các lệnh quản lý bộ nhớ.Stt Câu lệnh Ý nghĩa1 who Liệt kê các biến đang sử dụng2 whos Liệt kê các biến đang sử dụng với chi tiết cụ thể3 clear Xóa tất cả các biến trong bộ nhớ4 clear x, y, z Xóa 1 hay nhiều biến cụ thể x, y, zVí dụ 1.23:>> who Your variables are: A B C ans s 61>> whos Name Size Bytes Class A 1x2 16 double array B 3x3 72 double array C 1x4 32 double array ans 1x1 8 double array s 1x7 14 char array Grand total is 23 elements using 142 bytes >> clear A B; >> who Your variables are : C ans s >> t=' Hello!' ; s=' Tito'; >> f=[t,s] f = Hello! Tito >> A=t+s ??? Error using ==> plus Matrix dimensions must agree. >> t ='Viva'; >> s+t %% Được hiểu là cộng 2 matrận ans = 170 210 234 2081.5.3. Tạo menu đơn giản.Để người sử dụng có thể linh hoạt trong việc xử lý các tình huống xảy ra trong khithực hiện chương trình, ta nên bổ sung các menu vào chương trình. Bạn có thể tìm hiểuphương pháp tạo menu đồ họa cao cấp hơn trong MATLAB. Tuy nhiên, trong nội dungcuốn sách về các phương pháp tính toán số chúng tôi chỉ giới thiệu một cách tạo nhữngmenu đơn giản.-21-Hàm MENU Cú pháp:Choice = menu (Header, Item1, Item2, ) Choice = menu (Header, ItemList) Giải thích. Hàm MENU dùng để tạo menu trên màn hình, trong đó: - Header là một xâu dùng để tạo tiêu đề của menu; - Item1, Item2,… là một danh sách liệt kê các xâu ghi tiêu đề các nút để người sửdụng có thể lựa chọn bằng click chuột trái; MATLAB không hạn chế số lượng xâu.- ItemList là một xâu hoặc một mảng xâu mà mỗi xâu là một tiêu đề của nút có thểđược lựa chọn; - Kết quả trả về cho biến Choice là số thứ tự của nút được chọn. Nếu chọn nút đóngcửa sổ trên menu thì kết quả là số 0. Sau đó Menu biến mất. Ví dụ 1.24:>> k = menu('Choose a Name', 'Smith', 'Henry', 'Peter', 'Mary')Kết quả câu lệnh trên cũng tương tự như kết quả sử dụng 2 lệnh liên tiếp: >> ItemList={ 'Smith', 'Henry', 'Peter', 'Mary' }; >> k = menu('Choose a Name', ItemList) Khi đó, tại góc trên bên trái màn hình sẽ xuất hiện menu có dạng: Nếu bạn click chuột trái vào nút “Peter” trên Menu, thì kết quả hiện trên cửa sổCommand sẽ là: k =3 Nếu bạn click chuột trái vào nút trên góc trên bên phải của Menu, thì kết quảhiện trên cửa sổ Command sẽ là: k =0 Trong cả hai trường hợp trên, khi thực hiện click chuột trái xong thì Menu đều biếnmất. Nếu muốn Menu chỉ có thể biến mất khi chọn nút kết thúc thì bạn nên đưa câulệnh MENU vào một vòng lặp while. -22-Ví dụ 1.25:>> k=1; >> while k~=0 k = menu('Choose a Name', 'Smith', 'Henry', 'Peter','Mary') … End-23-CHƯƠNG 2: TỔNG QUAN VỀ HÀM SỐVÀ PHƯƠNG TRÌNH SIÊU VIỆT2.1. TỔNG QUAN VỀ HÀM SỐ.2.1.1. Định nghĩa hàm số.Cho X, Y là hai tập hợp số, ví dụ tập số thực R, hàm số f xác định trên X, nhận giátrị trong Y là một quy tắc cho tương ứng mỗi số x thuộc X với một số y duy nhất thuộc Y.Ký hiệuVới:- Tập X gọi là miền xác định.- Tập Y gọi là miền giá trị.- x gọi là biến độc lập hay còn gọi là đối số, biến số.- y gọi là biến phụ thuộc hay còn được gọi là hàm số.- f(x) được gọi là giá trị của hàm f tại x. Hình 2.1: Mỗi số thuộc tập X tương ứng với một số duy nhất thuộc tập Yqua hàm f.Định nghĩa: Nếu một đại lượng y phụ thuộc vào một đại lượng thay đổi x sao chomột giá trị của x ta luôn xác định được chỉ một giá trị tương ứng của y thì y được gọi làhàm số của x, và x gọi là biến số.2.1.2. Các dạng thể hiện của hàm số.Hàm số được thể hiện dưới 2 dạng: dạng bảng và dạng công thức.Dạng bảng:Bảng 2.1: Hàm số y = 2x+1 với 1 ≤ x ≤ 8 thể hiện dưới dạng bảng.-24-x 1 2 3 4 5 6 7 8y 3 5 7 9 11 13 15 17Dạng công thức (dạng tường minh):y = f(x) với x là biến số.Ví dụ 2.2:Một số hàm số:y = 2 Hàm hằngy = 2x + 1 Hàm số bậc nhấty = 5 + 3x - 4 Hàm số bậc 2y = Hàm phân thứcy = Hàm chứa phép toán căny = + 1 Hàm chứa phép toán lượng giác2.1.3. Tập giá trị và tập xác định của hàm số.Tập giá trị G là tập hợp các giá trị của hàm số y.Tập xác định D là tập hợp các giá trị của biến số x.Ví dụ 2.3: Hàm y = 2x + 1 trong với x ϵ , có:D = G = Hàm y = có:D: x ≥ 0G: y ≥ 02.1.4. Đồ thị của hàm số.Đồ thị của hàm số y = f(x) là tập hợp các cặp giá trị tương ứng (x ; f(x)) trên mặtphẳng tọa độ.Hình 2.1: Mặt phẳng tọa độ.-25-