Tải bản đầy đủ (.ppt) (91 trang)

TIN HỌC CHUYÊN NGÀNH CƠ ĐIỆN MATLAB ỨNG DỤNG

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.6 MB, 91 trang )

TIN HỌC CHUYÊN NGÀNH
CƠ ĐIỆN
---------------------MATLAB ỨNG DỤNG


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ố ngun 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;



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 hố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);



§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.



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)



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
Dân
số

1900

1910

75.995 91.972

1920

1930

1940

1950

1960


1970

1980

1990

105.71 123.30 131.66 150.69 179.32 203.21 226.50 249.63
1
3
9
7
3
2
5
3


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 = yj j = 1 , 2 , . . . m ;
Khi đó z được cho bởi ma trận cỡ mn
tương ứng của hàm tại (xi , yj).

z = [ zij ]

với zij là giá trị

Để 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
1950
1960
1970
1980
1990
y
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





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<0 đường chéo thứ k phía dưới đường chéo chính;
trui(A) tạo ma trận cùng cỡ với ma trận A, có các phần tử từ đường chéo chính

trở lên là phần tử của A, cịn các phần tử khác bằng 0;
trui(A,k) tạo ma trận cùng cỡ với ma trận A, có các phần tử từ đường chéo thứ k
trở lên là phần tử của A, còn các phần tử khác bằng 0;
tril(A) tạo ma trận cùng cỡ với ma trận A, có các phần tử từ đường chéo chính
trở xuống là phần tử của A, cịn các phần tử khác bằng 0;
tril(A,k) tạo ma trận cùng cỡ với ma trận A, có các phần tử từ đường chéo thứ k
trở xuống là phần tử của A, còn các phần tử khác bằng 0;
Thí dụ 17: Cho ma trận A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]. Hãy :
Trích các phần tử thuộc đường chéo chính, đường chéo thứ 2 phía trên đường
chéo chính lưu vào vector cột; Tạo ma trận cùng cỡ với A có các phần tử của A từ
đường chéo chính trở lên, các phần tử khác bằng 0; Tạo ma trận cùng cỡ với A có
các phần tử của A từ đường chéo thứ 3 trở xuống, các phần tử khác bằng 0;



2.8. Một số ma trận đặc biệt trong MATLAB
[]
zeros(n)
zeros(m,n)
eye(n)
ones(n)
ones(size(A))
diag(X)
magic(n)

pascal(n)

ma trận rỗng không chứa phần tử nào.
ma trận không cấp n;
ma trận không m hàng n cột;

ma trận đơn vị cấp n;
ma trận vng cấp n có mọi phần tử bằng 1;
ma trận cùng cỡ với A nhưng mọi phần tử bằng 1;
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.
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;
ma trận có các phần tử của tam giác Pascal


§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
2x1 + 10x2 + 6x3 + 7x4
3x1 + 6x2 + 20x3 + 5x4
4x1 + 7x2 + 5x3 + 28x4

=
=
=
=

5
-1
4.3

-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


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]



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 tốn rồi trả lại kết quả tính tố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.


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.



×