88
Chương 2 Thực hành tính toán trên Matlab

Lttt matlab chuong 2

Embed Size (px)

Citation preview

Page 1: Lttt matlab chuong 2

Chương 2

Thực hành tính toán trên Matlab

Page 2: Lttt matlab chuong 2

2 13/03/2014

Phép toán Mô tả

+ x+y

- x-y

* x*y

/ x/y

\ x\y = y/x

^ x^y

Lập trình tính toán

2.1 Các toán tử cơ bản của Matlab

Page 3: Lttt matlab chuong 2

3 13/03/2014

Độ ưu tiên Phép toán Tính ưu tiên

1 (,) Từ trong ra ngoài

2 ^ Từ trái qua phải

3 ±a

4 *,/,\ Từ trái qua phải

5 +,- Từ trái qua phải

Lập trình tính toán

2.1 Các toán tử cơ bản của Matlab (tt.)

Độ ưu tiên của phép toán:

Page 4: Lttt matlab chuong 2

4 13/03/2014 Lập trình tính toán

2.2 Biến (variable) Không cần khai báo biến

Một biến sẽ được tự động tạo ra trong quá trình gán dữ liệu cho biến đó.

Tên biến: bắt đầu bằng một ký tự chữ, tiếp theo có thể là ký tự chữ, ký tự số hoặc dấu gạch chân “_”

Ví dụ:

– Hợp lệ: a, a_b1, a1

– Không hợp lệ: _a, 1a, abc*

Lệnh “who” và “whos”: cho biết thông tin về các biến đang hiện hữu.

Page 5: Lttt matlab chuong 2

5 13/03/2014 Lập trình tính toán

2.2 Biến (variable) (tt.) Một số biến mặc định (hằng số):

Tên biến Giá trị / Ý nghĩa

ans Tên biến mặc định dùng để lưu kết quả của phép tính cuối cùng

pi π = 3.14159…

eps epsilon = 2-52

inf Vô cực (∞)

nan hay NaN Not a Number (vô định)

Page 6: Lttt matlab chuong 2

6 13/03/2014 Lập trình tính toán

2.2 Biến (variable) (tt.) Một số biến mặc định (tt.):

Tên biến Giá trị / Ý nghĩa

i, j

nargin/nargout Số đối số input/output của hàm

realmin Số thực dương nhỏ nhất (2-1022)

realmax Số thực dương lớn nhất

((2-esp)*21023)

e Nhân lũy thừa của 10 (5e2 = 5*102 = 500)

Page 7: Lttt matlab chuong 2

7 13/03/2014 Lập trình tính toán

2.2 Biến (variable) (tt.) Xóa giá trị của biến: Xóa biến x là xóa vùng nhớ đã cấp phát cho biến x.

Lệnh Ý nghĩa

clear x Xóa một biến x

clear x y z Xóa một lúc nhiều biến

clear Xóa hết các biến hiện hữu

Page 8: Lttt matlab chuong 2

8 13/03/2014

Tìm USCLN, BSCNN

Lệnh tìm USCLN

>> gcd(a,b)

Lệnh tìm BSCNN

>> lcm(a,b)

Lập trình tính toán

2.3 Tính toán số học và đại số thông dụng

Page 9: Lttt matlab chuong 2

9 13/03/2014

Ví dụ:

Tìm USCLN của 2^100-1 và 2^60-1 >>gcd(2^52-1,2^30-1)

3

Tìm BSCNN của 45,72 >>lcm(45,72)

360

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Tìm USCLN, BSCNN (tt.)

Page 10: Lttt matlab chuong 2

10 13/03/2014

Phân tích một số ra tích các thừa số nguyên tố Cú pháp

>> factor(n) Ví dụ: Phân tích 1223456789 >>factor(1223456789)

3109 393521

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 11: Lttt matlab chuong 2

11 13/03/2014

Tìm số nguyên tố

Trước một số a cho trước >> primes(a)

Xác định a có phải là số nguyên tố hay không >> isprime(a)

Ví dụ: Tìm các số nguyên tố trước số 20? >> primes(20)

2 3 5 7 11 13 17 19

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 12: Lttt matlab chuong 2

12 13/03/2014

Tìm phần dư >> rem(a,b) hoặc >>mod(a,b)

Ví dụ: >> rem(16,-12)

4 >> mod(16,-12)

-8

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 13: Lttt matlab chuong 2

13 13/03/2014

Dạng hiển thị số >>format <kiểu>

Lập trình tính toán

Kiểu Hiển thị Ví dụ

short (mặc định) 4 chữ số thập phân 3.1416

long 15 chữ số thập phân 3.141592653589793

bank 2 chữ số thập phân 3.14

rat Dạng phân số a/b 355/113

2.3 Tính toán số học và đại số (tt.)

Page 14: Lttt matlab chuong 2

14 13/03/2014

Khai báo biến hình thức

Khai báo biến:

>> syms a b c

hoặc

>> a = sym(‘a’)

Khai báo biến phức:

>>syms x y real

hoặc >> x=sym(‘x’,‘real’); y=sym(‘y’,‘real’);

>>z =x+i*y Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Presenter
Presentation Notes
Đối với một biến thực symbolic thì nó có các tính chất của số thực ví dụ như (x)^2>0 (khi khai báo là syms x real) còn khi khai báo là syms x thì các biến này chỉ đơn thuần là biến symbolic không có các tính chất của số thực tức là (x)^2 sẽ không có dấu mà chỉ coi là các ký tự symbolic mà thôi
Page 15: Lttt matlab chuong 2

15 13/03/2014

Khai báo biến hình thức (tt.)

Khai báo hàm số: >> syms f(a,b)

>> f(a,b)=2*a+b

>> f(2,3) 7

Hoặc

>> syms x y

>> g(x,y)=2*x+y

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 16: Lttt matlab chuong 2

16 13/03/2014

Tính tổng

Hữu hạn:

>> symsum(f(i),m,n)

Vô hạn:

>> symsum(f(i),m,inf)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 17: Lttt matlab chuong 2

17 13/03/2014

Tính tổng (tt.)

Lập trình tính toán

∑= +

+10

121

1x x

x

2.3 Tính toán số học và đại số (tt.)

Page 18: Lttt matlab chuong 2

18 13/03/2014

Tính tổng (tt.)

Lập trình tính toán

∑−

=

1

0

3n

kk

2.3 Tính toán số học và đại số (tt.)

Page 19: Lttt matlab chuong 2

19 13/03/2014

Tính tổng (tt.)

Lập trình tính toán

21

1k k

=∑

2.3 Tính toán số học và đại số (tt.)

Page 20: Lttt matlab chuong 2

20 13/03/2014

Tính tích

Hữu hạn:

>> symprod(f(i),m,n)

Vô hạn:

>> symprod(f(i),m,inf)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

Page 21: Lttt matlab chuong 2

21 13/03/2014

Tính tích (tt.)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

∏=

−20

22

2 1k k

k

Page 22: Lttt matlab chuong 2

22 13/03/2014

Tính tích (tt.)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.)

21

114n n

=

Page 23: Lttt matlab chuong 2

23 13/03/2014

Cú pháp:

>>expand(expr)

Ví dụ: Khai triển (x + y)4

>> expand((x+y)^4) x4 + 4x3y + 6x2y2 + 4xy3 + y4

Lập trình tính toán

Khai triển biểu thức đại số

2.3 Tính toán số học và đại số (tt.)

Page 24: Lttt matlab chuong 2

24 13/03/2014

Cú pháp:

>>factor(expr)

Ví dụ: >>expr1=(x-1)*(x-2)*(x-3)

expr1=(x-1)(x-2)(x-3)

>>expr2=expand(expr1) expr2=x3-6x2+11x-6

>>factor(expr2) (x-3)(x-1)(x-2)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Phân tích thành nhân tử

Page 25: Lttt matlab chuong 2

25 13/03/2014

Cú pháp:

>>simplify(expr)

>>simple(expr)

Ví dụ: Đơn giản biểu thức

cos5(x) + sin4(x) + 2cos2(x) – 2sin2(x) – cos(2x)

>>simplify(cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-cos(2*x))

cos(x)5 + cos(x)4

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Đơn giản biểu thức

Page 26: Lttt matlab chuong 2

26 13/03/2014 Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Đơn giản biểu thức (tt.)

Page 27: Lttt matlab chuong 2

27 13/03/2014

Cú pháp:

>>subs(expr,old,new)

Ví dụ: >> syms z

>> expr=x^2+y^2-2*z^2*x x2 – 2xz2 + y2

>> subs(expr,{x,y},{1,z}) 1 – z2

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Tính giá trị biểu thức

Page 28: Lttt matlab chuong 2

28 13/03/2014

Cú pháp:

>>[N D]=numden(frac)

Ví dụ: >> [N D]=numden(x/y+y/x)

N = x2 + y2

D = xy

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Tính tử và mẫu của phân số

Presenter
Presentation Notes
Numerator: tử số Denominator: mẫu số
Page 29: Lttt matlab chuong 2

29 13/03/2014

Cú pháp:

>> solve(eqns)

Ví dụ: Giải phương trình ax2+bx+c=0 >> syms a b c x;

>> f=a*x^2+b*x+c;

>> solve(f) -(b+(b^2-4*a*c)^(1/2))/(2*a)

-(b-(b^2-4*a*c)^(1/2))/(2*a)

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Giải phương trình & hệ phương trình

Page 30: Lttt matlab chuong 2

30 13/03/2014

Ví dụ (tt.): >> solve(f,b)

-(a*x^2+c)/x

Giải phương trình x2+2x=1 >> syms x real

>> solve(‘x^2+2*x=1’) hoặc >>solve(x^2+2*x==1)

2^(1/2)-1

-2^(1/2)-1

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Giải phương trình & hệ phương trình (tt.)

Page 31: Lttt matlab chuong 2

31 13/03/2014 Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Giải phương trình & hệ phương trình (tt.)

Page 32: Lttt matlab chuong 2

32 13/03/2014

Ví dụ (tt.): >> s.a

10

>> s.b 9

>> s.c 6

Lập trình tính toán

2.3 Tính toán số học và đại số (tt.) Giải phương trình & hệ phương trình (tt.)

Page 33: Lttt matlab chuong 2

33 13/03/2014

Phép tính giới hạn Tính giới hạn của hàm số tại x=0.

>> limit(f)

Tính giới hạn của hàm số tại x=a.

>> limit(f,x,a) hoặc >>limit(f,a)

Tính giới hạn của hàm số tại vô cùng

>> limit(f,x,inf)

2.4 Phép tính vi phân và tích phân

Lập trình tính toán

Page 34: Lttt matlab chuong 2

34 13/03/2014

Ví dụ: >> limit(sin(x)/x)

1 >> limit(exp(x),inf)

Inf >> limit(exp(x),-inf);

0 >> limit(1/x, x=0, real)

NaN

Phép tính giới hạn (tt.)

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 35: Lttt matlab chuong 2

35 13/03/2014

Giới hạn bên trái – bên phải Giới hạn bên trái:

>> limit(f, a, ‘left’);

Giới hạn bên phải:

>> limit(f, a, ‘right’);

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 36: Lttt matlab chuong 2

36 13/03/2014

Giới hạn bên trái – bên phải

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 37: Lttt matlab chuong 2

37 13/03/2014

Tích phân bất định:

>> int(f,x) hoặc >> int(f)

Ví dụ: >> int(1/(x^2-4*x+3),x)

log(x-3)/2 - log(x-1)/2

Lập trình tính toán

Tính tích phân

2.4 Phép tính vi phân và tích phân (tt.)

Page 38: Lttt matlab chuong 2

38 13/03/2014

Tính tích phân (tt.) Tích phân xác định:

>> int(f,a,b)

Ví dụ:

Tính tích phân

>> int(1/(x^2-4*x+3),4,6)

log((3*5^(1/2))/5)

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

6

24

14 3

dxx x− +∫

Page 39: Lttt matlab chuong 2

39 13/03/2014

Tính tích phân (tt.) Tích phân xác định (tt.):

Ví dụ (tt.):

Tính tích phân

>> int(sqrt(exp(2*x)+cox(x)^2+1),0,pi)

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

2 2

0

cos( ) 1xe x dxπ

+ +∫

Page 40: Lttt matlab chuong 2

40 13/03/2014

Tính đạo hàm hàm số một biến Cú pháp:

>> diff(f(x))

Ví dụ: Tính đạo hàm của hàm số

f(x) = cos2(x)/sin(2x) >> f=cos(x)^2/sin(2*x);

>> f_diff=diff(f) -(2cos(2x)cos2(x)/sin2(2x)-2cos(x)sin(x))/sin(2x)

>> simplify(f_diff)

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

2

12sin( )x

Page 41: Lttt matlab chuong 2

41 13/03/2014

Tính đạo hàm hàm số nhiều biến Cú pháp:

>> diff(f(x,y),x)

Ví dụ: Tính đạo hàm của hàm số

g(x,y) = y*cos(xy) >> g=y*cos(x*y);

>> g_diff=diff(g,x) -y^2*sin(x*y)

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 42: Lttt matlab chuong 2

42 13/03/2014

Đạo hàm cấp cao Đạo hàm cấp hai:

>> diff(f,2) hoặc >> diff(diff(f))

>>diff(f,x,2)

Đạo hàm cấp k:

>> diff(f,k)

Ví dụ: >> diff(x^3-2*x^2,3)

6

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 43: Lttt matlab chuong 2

43 13/03/2014

Khai triển hàm số thành chuỗi số Cú pháp:

>> taylor(f,‘Order’,m)

Ví dụ: Khai triển y=sin(2x).cos(x) tới bậc 15 tại x=0 >> approx=taylor(sin(2*x)*cos(x),‘Order’,15)

(398581*x^13)/3113510400 – (44287*x^11)/19958400 + (703*x^9)/25920 – (547*x^7)/2520 + (61*x^5)/60 – (7*x^3)/3 +

2*x

Lập trình tính toán

2.4 Phép tính vi phân và tích phân (tt.)

Page 44: Lttt matlab chuong 2

44 13/03/2014

Nhập ma trận Nhập trực tiếp danh sách các phần tử

Phát sinh ma trận bằng các hàm sẵn có

Nhập từ file

Tạo ma trận bằng các file .m

Ví dụ: >> A = [1 2 3;4 5 6;7 8 9]

A = 1 2 3 4 5 6 7 8 9

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính

Dấu “[” và “]” mở đầu và kết thúc nhập ma trận. Dấu “;” kết thúc một dòng. Các phần tử cách nhau bằng “khoảng trắng” hoặc dấu “,”

Page 45: Lttt matlab chuong 2

45 13/03/2014

Phát sinh ma trận bằng hàm sẵn có Cú pháp:

Ma trận 0 >> zeros(m,n)

m, n: kích thước ma trận Ma trận 1

>> ones(m,n) Ma trận đơn vị

>> eye(n)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 46: Lttt matlab chuong 2

46 13/03/2014

Phát sinh ma trận bằng hàm sẵn có (tt.) Cú pháp (tt.):

Ma trận đường chéo >> diag([a,b,c,…])

Ma phương

>> magic(n) Ma trận các số thực ngẫu nhiên từ 0 đến 1

>> rand(m,n)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 47: Lttt matlab chuong 2

47 13/03/2014

Nhập ma trận bằng hàm load Ví dụ:

Giả sử ta có một file mt.dat có nội dung như sau (các số cách nhau bởi khoảng trắng)

1 2 3

4 5 6

7 8 9

Dòng lệnh >>load mt.dat

sẽ đọc file mt.dat, tạo biến có tên là mt, là ma trận các phần tử có trong file mt.dat.

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 48: Lttt matlab chuong 2

48 13/03/2014

Nhập ma trận bằng file .m Ví dụ:

Tạo file mt.m bằng Matlab Editor hoặc chương trình soạn thảo bất kỳ. Nội dung file:

A=[1 2 3

4 5 6

7 8 9]

Dòng lệnh >>mt

sẽ đọc file mt.m, tạo biến A là ma trận như trên.

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 49: Lttt matlab chuong 2

49 13/03/2014

Trích một phần tử trong ma trận Cú pháp:

>>A(i,j) i: chỉ số dòng j: chỉ số cột

Ví dụ: >> A(3,2)

8 >> A(4) %phần tử thứ 4 duyệt theo cột từ trái qua phải, từ trên xuống dưới.

2

Lập trình tính toán

A = 1 2 3 4 5 6 7 8 9

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 50: Lttt matlab chuong 2

50 13/03/2014

Chỉ số vượt khỏi kích thước ma trận Ví dụ: >> A(4,5)

Index exceeds matrix dimensions >> X=A

>> X(3,4)=10 X =

1 2 3 0 4 5 6 0 7 8 9 10

Lập trình tính toán

A = 1 2 3 4 5 6 7 8 9

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 51: Lttt matlab chuong 2

51 13/03/2014

Dấu hai chấm “:” Ví dụ: >> 1:10

ans = 1 2 3 4 5 6 7 8 9 10

%tạo bước tăng/giảm khác 1

>> 100:-7:50 ans =

100 93 86 79 72 65 58 51 >> 0:pi/4:pi

ans = 0 0.7854 1.5708 2.3562 3.1416

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 52: Lttt matlab chuong 2

52 13/03/2014

Dấu hai chấm “:” (tt.) Ví dụ (tt.): >> A(1,1:2) %dãy 2 phần tử đầu tiên ở dòng thứ 1 của A

ans = 1 2

>> sum(A(1:2,1)) %tổng 3 số đầu tiên ở cột 1 của A ans =

5 >> A(1,:)%toàn bộ phần tử của dòng 1

ans = 1 2 3

>> A(end,1) %phần tử cuối cùng của cột 1 ans =

7

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 53: Lttt matlab chuong 2

53 13/03/2014

Trích nhiều phần tử trong ma trận Ví dụ: >> A(2,[3,1]) %phần tử thứ 3 và thứ 1 của dòng 2 của A

ans = 6 4

>> x=[2 1 5 8] x =

2 1 5 8 >> x([2,4])

ans = 1 8

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 54: Lttt matlab chuong 2

54 13/03/2014

Ghép hai ma trận Ví dụ: Thêm cột: >>D=[A B]

D = 1 2 3 10 11 4 5 6 12 13

Thêm dòng: >>E=[A;C]

E = 1 2 3 4 5 6 7 8 9 9 7 8

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 B = 10 11 12 13 C = 7 8 9 9 7 8

Page 55: Lttt matlab chuong 2

55 13/03/2014

Xóa dòng, xóa cột Ví dụ: Xóa cột: >>D(:,2)=[] D = 1 3 10 11 4 6 12 13 Xóa dòng: >>D(2;:)=[] D = 1 3 10 11 Xóa nhiều phần tử: >>E(1:2:10)=[] E = 4 9 5 7 6 9 8

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

D = 1 2 3 10 11 4 5 6 12 13 E =

1 2 3 4 5 6 7 8 9 9 7 8

Page 56: Lttt matlab chuong 2

56 13/03/2014

Tổng các cột của ma trận Cú pháp:

>>sum(A)

Ví dụ: >> sum(A)

ans = 12 15 18

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 57: Lttt matlab chuong 2

57 13/03/2014

Ma trận chuyển vị Cú pháp:

>>A’

Ví dụ: >> A’

ans = 1 4 7 2 5 8 3 6 9

Lập trình tính toán

A = 1 2 3 4 5 6 7 8 9

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 58: Lttt matlab chuong 2

58 13/03/2014

Đường chéo ma trận Cú pháp:

>>diag(A)

Ví dụ: >> diag(A)

1 5 9

Lập trình tính toán

A = 1 2 3 4 5 6 7 8 9

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 59: Lttt matlab chuong 2

59 13/03/2014

Phép cộng, trừ hai ma trận Ví dụ: Cộng hai ma trận: >>A+B ans = 1 3 5 6 8 10 14 14 14 Trừ hai ma trận: >>A-B ans = 1 1 1 2 2 2 0 2 4

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9 B = 0 1 2 2 3 4 7 6 5

Page 60: Lttt matlab chuong 2

60 13/03/2014

Phép nhân hai ma trận Ví dụ: >>A*B

ans = 25 25 25 52 55 58 79 85 91

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9 B = 0 1 2 2 3 4 7 6 5

Page 61: Lttt matlab chuong 2

61 13/03/2014

Lũy thừa ma trận Cú pháp:

>>A^m

Ví dụ: >>A^2

ans = 30 36 42 66 81 96 102 126 150

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 62: Lttt matlab chuong 2

62 13/03/2014

Ma trận nghịch đảo Cú pháp:

>>A^(-1)

Hoặc

>>inv(A)

Ví dụ: >>inv(A)

ans = -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 63: Lttt matlab chuong 2

63 13/03/2014

Định thức của ma trận Cú pháp:

>>det(A)

Ví dụ: >>det(A)

ans = 0

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 64: Lttt matlab chuong 2

64 13/03/2014

Rút gọn dạng ma trận bậc thang Cú pháp:

>>rref(A)

Ví dụ: >>rref(A)

ans = 1 0 -1 0 1 2 0 0 0

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 65: Lttt matlab chuong 2

65 13/03/2014

Hạng của ma trận Cú pháp:

>>rank(A)

Ví dụ: >>rank(A)

ans = 2

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 2 3 4 5 6 7 8 9

Page 66: Lttt matlab chuong 2

66 13/03/2014

Giải phương trình ma trận AX=B Cú pháp:

>> A\B=A-1B Hoặc

>> mldivide(A,B) Hoặc

>> linsolve(A,B,opts)

opts: các tham số chỉ tính chất của ma trận A

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 67: Lttt matlab chuong 2

67 13/03/2014

Giải phương trình ma trận AX=B (tt.) Ví dụ: Giải hệ

>>X=linsolve(A,B) X =

10.0000 9.0000 6.0000

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

A = 1 5 -7 -2 3 -1 1 2 -4 B = 13 1 4

5 7 132 3 1

2 4 4 0

a b ca b c

a b c

+ − =− + − = + − − =

Page 68: Lttt matlab chuong 2

68 13/03/2014

Giải phương trình ma trận XA=B Cú pháp:

>> A/B Hoặc

>> mrdivide(A,B)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 69: Lttt matlab chuong 2

69 13/03/2014

Phép cộng, nhân giữa một số và một ma trận

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ: A=[1 2;3 4]

>>A+3

A = 4 5 6 7 >>A*2

A = 2 4 6 8

Page 70: Lttt matlab chuong 2

70 13/03/2014

Các phép biến đổi sơ cấp

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Biến dòng (cột) i thành k lần dòng (cột) i:

>> A(i,:) = A(i,:) * k

>> A(:,i) = A(:,i) *k

Biến dòng (cột) i thành dòng (cột) i cộng k lần dòng (cột) j:

>> A(i,:) = A(i,:) + A(j,:) * k

>> A(:,i) = A(:,i) + A(:,j) * k

Page 71: Lttt matlab chuong 2

71 13/03/2014

Các phép biến đổi sơ cấp (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Hoán vị dòng (cột) i và dòng (cột) j:

>> A = A([thứ tự dòng],:)

>> A = A(:,[thứ tự cột])

Page 72: Lttt matlab chuong 2

72 13/03/2014

Các phép biến đổi sơ cấp (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ: A=[2 4;3 8;6 7]

Biến dòng 1 thành 10 lần dòng 1:

>>A(1,:) = A(1,:) * 10

A = 20 40 3 8 6 7

Page 73: Lttt matlab chuong 2

73 13/03/2014

Các phép biến đổi sơ cấp (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ (tt.):

Biến dòng 2 thành dòng 2 cộng 3 lần dòng 3:

>>A(2,:) = A(2,:) + A(3,:) * 3

A = 20 40 21 29 6 7

Page 74: Lttt matlab chuong 2

74 13/03/2014

Các phép biến đổi sơ cấp (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ (tt.):

Hoán vị dòng 2 và dòng 3:

>>A = A([1 3 2],:)

A = 20 40 6 7 21 29

Page 75: Lttt matlab chuong 2

75 13/03/2014

Đa thức đặc trưng, giá trị riêng, vector riêng

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Cú pháp:

Đa thức đặc trưng

>>p = poly(A)

Tính nghiệm của đa thức đặc trưng

>>roots(p)

Giá trị riêng, vector riêng

>>[V, D] = eig(A)

Page 76: Lttt matlab chuong 2

76 13/03/2014

Đa thức đặc trưng, giá trị riêng, vector riêng (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ:

Đa thức đặc trưng >>p = poly(A) p = 1.0000 -15.0000 -9.0000 0.0000 Tính nghiệm của đa thức đặc trưng >>roots(p) ans = 15.5777 -0.5777 0.0000

A = 1 2 3 4 5 6 7 8 9

Page 77: Lttt matlab chuong 2

77 13/03/2014

Đa thức đặc trưng, giá trị riêng, vector riêng (tt.)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Ví dụ (tt.): Giá trị riêng, vector riêng >>[V,D] = eig(A) V = 0.2205 0.7502 0.4082 0.8238 -0.6597 -0.8165 0.5222 0.0453 0.4082 D = 15.5777 0 0 0 -0.5777 0 0 0 0.0000 Với giá trị riêng là 15.5777 ta có vector riêng tương ứng là [0.2205 0.8238 0.5222]

A = 1 2 3 4 5 6 7 8 9

Page 78: Lttt matlab chuong 2

78 13/03/2014

Mảng (Array hoặc Vector) Khi không làm việc trên đại số tuyến tính, ma trận đơn giản là một mảng hai chiều

Các phép toán cộng, trừ không đổi giữa ma trận và mảng.

Đối với phép nhân, Matlab dùng dấu chấm trước các phép toán (mang tính nhân) trên mảng

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Page 79: Lttt matlab chuong 2

79 13/03/2014

Phép toán trên mảng một chiều (Vector)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Phép toán Ý nghĩa Kết quả u.*v Nhân từng phần tử 0 2 -3 8 u./v Chia xuôi từng phần tử Inf 2 -3 2 u.\v Chia ngược từng phần tử 0 0.5000 -0.3333 0.5000 u.^2 Lũy thừa từng phần tử 1 4 9 16

u.’ Chuyển thành vector cột

1 2 3 4

Ví dụ: u=[1 2 3 4] v=[0 1 -1 2]

Page 80: Lttt matlab chuong 2

80 13/03/2014

Phép toán trên mảng hai chiều (Array)

Lập trình tính toán

2.5 Tính toán trong đại số tuyến tính (tt.)

Phép toán Ý nghĩa Kết quả

A.*B Nhân từng phần tử [0 2;-3 8]

A./B Chia xuôi từng phần tử [Inf 2;-3 2]

A.\B Chia ngược từng phần tử [0 0.5000;-0.3333 0.5000]

A.^2 Lũy thừa từng phần tử [1 4;9 16]

A.’ Ma trận chuyển vị

(giống A’) [1 3;2 4]

Ví dụ: A=[1 2;3 4] B=[0 1;-1 2]

Page 81: Lttt matlab chuong 2

81 13/03/2014

Khai báo

Lập trình tính toán

2.6 Tập hợp

Một tập hợp trong Matlab được khai báo bằng cách liệt kê dưới dạng một vector (dòng hoặc cột)

Ví dụ: Tập hợp a gồm 5 phần tử có thể khai báo như sau:

A = [1 4 8 9 10]

Hoặc A = [1,4,8,9,10]

Hoặc A = [1;4;8;9;10]

Khai báo tập rỗng: A=[]

Page 82: Lttt matlab chuong 2

82 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Tìm số phần tử: >> length(A)

Ví dụ: Tập hợp A gồm 5 phần tử:

A = [1 4 8 9 10]

>> length(A)

5

Page 83: Lttt matlab chuong 2

83 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Kiểm tra phần tử thuộc tập hợp: >> ismember(s,A)

Ví dụ: Tập hợp A gồm 5 phần tử:

A = [1 4 8 9 10]

Kiểm tra 2 có thuộc A hay không:

>> ismember(s,A)

0

Page 84: Lttt matlab chuong 2

84 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Page 85: Lttt matlab chuong 2

85 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Loại bỏ các phần tử trùng nhau: >> unique(A)

Ví dụ: Tập hợp A gồm 5 phần tử:

A = [1 4 8 9 10]

>> unique(A) = A

B = [1 9 4 8 10 1 8 4 9 10]

>> unique(B)

[1 4 8 9 10]

Page 86: Lttt matlab chuong 2

86 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Hội giữa hai tập hợp: >> union(A,B)

Ví dụ:

A = [1 4 8 9 10]

B = [4 2 3 5]

>> union(A,B)

[1 2 3 4 5 8 9 10]

Page 87: Lttt matlab chuong 2

87 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Giao giữa hai tập hợp: >> intersect(A,B)

Ví dụ:

A = [1 4 8 9 10]

B = [4 2 3 5]

>> intersect(A,B)

4

Page 88: Lttt matlab chuong 2

88 13/03/2014

Các phép toán (tt.)

Lập trình tính toán

2.6 Tập hợp (tt.)

Hiệu giữa hai tập hợp: A\B = setdiff(A,B)

Ví dụ:

A = [1 4 8 9 10]

B = [4 2 3 5]

>> setdiff(A,B)

1 8 9 10