Chương 2
Thực hành tính toán trên Matlab
2.1 Các toán tử cơ bản của Matlab
Phép toán Mô tả
x+y
x-y
+ - *
x*y
/
x/y
\
x\y = y/x
^
x^y
06/05/2013
Lập trình tính toán
2
2.1 Các toán tử cơ bản của Matlab (tt.)
Độ ưu tiên của phép toán:
Độ ư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
06/05/2013
Lập trình tính toán
3
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.
4
06/05/2013
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)
06/05/2013
5
Lập trình tính toán
2.2 Biến (variable) (tt.) Một số biến mặc định (tt.):
1−
Tên biến Giá trị / Ý nghĩa
i, j 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
e
Số thực dương lớn nhất ((2-esp)*21023) Nhân lũy thừa của 10 (5e2 = 5*102 = 500)
06/05/2013
6
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
06/05/2013
7
Lập trình tính toán
2.3 Tính toán số học và đại số thông dụng
Tìm USCLN, BSCNN
Lệnh tìm USCLN
>> gcd(a,b)
Lệnh tìm BSCNN
>> lcm(a,b)
06/05/2013
8
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.)
Ví dụ:
>>gcd(2^52-1,2^30-1)
3
Tìm USCLN của 2^100-1 và 2^60-1
>>lcm(45,72)
360
Tìm BSCNN của 45,72
06/05/2013
9
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 một số ra tích các thừa số nguyên tố Cú pháp
>> factor(số)
>>factor(1223456789)
3109 393521
Ví dụ: Phân tích 1223456789
Lập trình tính toán
06/05/2013
10
2.3 Tính toán số học và đại số (tt.)
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)
>> primes(20)
2
3
5
7
11
13
17
19
Ví dụ: Tìm các số nguyên tố trước số 20?
06/05/2013
11
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tìm phần dư
>> rem(a,b) hoặc >>mod(a,b)
4
>> mod(16,-12)
-8
Ví dụ: >> rem(16,-12)
06/05/2013
12
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Dạng hiển thị số
>>format
3.1416
Kiểu Hiển thị Ví dụ
short (mặc định) 4 chữ số thập phân
3.14
long 15 chữ số thập phân 3.141592653589793
355/113
bank 2 chữ số thập phân
rat Dạng phân số a/b
06/05/2013
13
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
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
06/05/2013
14
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Khai báo biến hình thức (tt.)
>> syms f(a,b)
>> f(a,b)=2*a+b
>> f(2,3)
7
Khai báo hàm số:
>> syms x y
>> g(x,y)=2*x+y
Hoặc
06/05/2013
15
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tổng
Hữu hạn:
>> symsum(f(i),m,n)
Vô hạn:
>> symsum(f(i),m,inf)
06/05/2013
16
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tổng (tt.)
10
Ví dụ:
x 2 x
+ 1 ∑ = + 1 1
x
>>symsum((1+x)/(1+x^2),1,10)
2745615458 ------------------ 846523925
Tính
06/05/2013
17
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tổng (tt.)
n
− 1
3
Ví dụ:
k
Tính
∑
=
k
0
>> syms k
>> symsum(k^3)
4
3
2
−
+
k 4
k 2
k 4
06/05/2013
18
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tổng (tt.)
∞
Ví dụ:
∑
=
1 2 k
k
1
>> symsum(1/(k^2),1,inf) 2 π 6
Tính
06/05/2013
19
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tích
Hữu hạn:
>> symprod(f(i),m,n)
Vô hạn:
>> symprod(f(i),m,inf)
06/05/2013
20
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tích (tt.)
20
k
Ví dụ:
∏
=
k
2
2 1 − 2 k
>> symprod((k^2-1)/k^2,2,20)
21/40
Tính
06/05/2013
21
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Tính tích (tt.)
∞
2
∏
Ví dụ (tt.):
1 n 4
− 1
n
= 1
>> syms n
>> symprod(1-1/(4*n^2),1,inf)
2 π
Tính Công thức Euler
06/05/2013
22
Lập trình tính toán
2.3 Tính toán số học và đại số (tt.)
Khai triển biểu thức đại số
Cú pháp:
>>expand(expr)
Ví dụ: Khai triển (x + y)4
>> expand((x+y)^4)
x4 + 4x3y + 6x2y2 + 4xy3 + y4
06/05/2013
23
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ử
Cú pháp:
>>factor(expr)
>>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)
Ví dụ:
06/05/2013
24
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
>>simplify(expr)
Cú pháp:
>>simple(expr)
Ví dụ: Đơn giản biểu thức
>>simplify(cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-cos(2*x))
cos(x)5 + cos(x)4
cos5(x) + sin4(x) + 2cos2(x) – 2sin2(x) – cos(2x)
25
Lập trình tính toán
06/05/2013
2.3 Tính toán số học và đại số (tt.)
Đơn giản biểu thức (tt.)
3
+
+
+
8
2
1 3 x
6 x
12 x
>>simple((1/x^3+6/x^2+12/x+8)^1/3)
3
2(
x + )1 3 3 x
Ví dụ (tt.): Đơn giản biểu thức
06/05/2013
26
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
>>subs(expr,old,new)
Cú pháp:
>> syms z
>> expr=x^2+y^2-2*z^2*x
x2 – 2xz2 + y2
>> subs(expr,{x,y},{1,z})
1 – z2
Ví dụ:
27
Lập trình tính toán
06/05/2013
2.3 Tính toán số học và đại số (tt.)
Tính tử và mẫu của phân số
>>[N D]=numden(frac)
Cú pháp:
>> [N D]=numden(x/y+y/x)
N = x2 + y2
D = xy
Ví dụ:
06/05/2013
28
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
>> solve(eqns)
Cú pháp:
>> 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)
Ví dụ: Giải phương trình ax2+bx+c=0
29
Lập trình tính toán
06/05/2013
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.)
>> solve(f,b)
-(a*x^2+c)/x
Ví dụ (tt.):
>> syms x real
>> solve(‘x^2+2*x=1’)
Giải phương trình x2+2x=1
2^(1/2)-1
-2^(1/2)-1
hoặc >>solve(x^2+2*x==1)
06/05/2013
Lập trình tính toán
30
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.)
+
−
Ví dụ (tt.):
= c 7 − = b c 3 −
13 1 − =
2
b
4
c
4 0
a b 5 + − a 2 + a
>> syms a b c real >> eqn1=a+5*b-7*c==13; eqn2=-2*a+3*b-c==1; eqn3=a+2*b-4*c-4==0; >>s=solve(eqn1,eqn2,eqn3);
Giải hệ phương trình
06/05/2013
Lập trình tính toán
31
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.)
>> s.a
10
>> s.b
9
>> s.c
6
Ví dụ (tt.):
06/05/2013
Lập trình tính toán
32
2.4 Phép tính vi phân và tích phân
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)
Lập trình tính toán
06/05/2013
33
2.4 Phép tính vi phân và tích phân (tt.)
Phép tính giới hạn (tt.) Ví dụ: >> limit(sin(x)/x)
1
>> limit(exp(x),inf)
Inf
>> limit(exp(x),-inf);
0
>> limit(1/x, x=0, real)
NaN
Lập trình tính toán
06/05/2013
34
2.4 Phép tính vi phân và tích phân (tt.)
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
06/05/2013
35
2.4 Phép tính vi phân và tích phân (tt.)
f =
x x
Giới hạn bên trái – bên phải Ví dụ: Cho hàm số Xét tính liên tục của hàm số trên. >> f=x/abs(x); >> limit(f,x,0, ‘left’)
-1
>>limit(f,x,0,‘right’)
1
Lập trình tính toán
36
06/05/2013
2.4 Phép tính vi phân và tích phân (tt.)
Tính tích phân Tích phân bất định:
>> int(f,x) hoặc int(f)
>> int(1/(x^2-4*x+3),x)
log(x-3)/2 - log(x-1)/2
Ví dụ:
Lập trình tính toán
06/05/2013
37
2.4 Phép tính vi phân và tích phân (tt.)
Tính tích phân (tt.) Tích phân xác định:
>> int(f,a,b)
6
2
∫ Tính tích phân
4
+
1 x− 4
x
dx 3
>> int(1/(x^2-4*x+3),4,6)
Ví dụ:
log((3*5^(1/2))/5)
Lập trình tính toán
06/05/2013
38
2.4 Phép tính vi phân và tích phân (tt.)
Tính tích phân (tt.) Tích phân xác định (tt.):
π
2
+
+
xe 2
x cos( )
dx 1
Ví dụ (tt.):
Tính tích phân
∫
0
>> int(sqrt(exp(2*x)+cox(x)^2+1),0,pi)
Lập trình tính toán
06/05/2013
39
2.4 Phép tính vi phân và tích phân (tt.)
Tính đạo hàm hàm số một biến Cú pháp:
Ví dụ: Tính đạo hàm của hàm số
>> diff(f(x))
>> 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)
2
− 1 2sin( )x
f(x) = cos2(x)/sin(2x)
Lập trình tính toán
06/05/2013
40
2.4 Phép tính vi phân và tích phân (tt.)
Tính đạo hàm hàm số nhiều biến Cú pháp:
Ví dụ: Tính đạo hàm của hàm số
>> diff(f(x,y),x)
>> g=y*cos(x*y);
>> g_diff=diff(g,x)
-y^2*sin(x*y)
g(x,y) = y*cos(xy)
Lập trình tính toán
06/05/2013
41
2.4 Phép tính vi phân và tích phân (tt.)
Đạ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)
>> diff(x^3-2*x^2,3)
6
Ví dụ:
Lập trình tính toán
06/05/2013
42
2.4 Phép tính vi phân và tích phân (tt.)
Khai triển hàm số thành chuỗi số Cú pháp:
>> taylor(f,‘Order’,m)
>> 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
Ví dụ: Khai triển y=sin(2x).cos(x) tới bậc 15 tại x=0
Lập trình tính toán
06/05/2013
43
2.5 Tính toán trong đại số tuyến tính
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
>> A = [1 2 3;4 5 6;7 8 9]
A =
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 “,”
1 4 7
2 5 8
Ví dụ:
3 6 9 Lập trình tính toán
06/05/2013
44
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
45
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
46
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
47
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
48
2.5 Tính toán trong đại số tuyến tính (tt.)
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
>> A(3,2)
Ví dụ:
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
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
49
2.5 Tính toán trong đại số tuyến tính (tt.)
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 4 7
2 5 8
3 6 9
0 0 10
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
50
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
51
2.5 Tính toán trong đại số tuyến tính (tt.)
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
2
ans = 1
>> 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
3
ans = 1
2 >> A(end,1) %phần tử cuối cùng của cột 1
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
52
ans = 7
2.5 Tính toán trong đại số tuyến tính (tt.)
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
4
ans = 6 >> x=[2 1 5 8]
x =
2
1
5
8
>> x([2,4])
ans = 1
8
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
53
2.5 Tính toán trong đại số tuyến tính (tt.)
Ghép hai ma trận Ví dụ: Thêm cột: >>D=[A B]
D =
1 4
2 5
3 6
10 12
11 13
1 4 2 5 3 6
10 12 11 13
Thêm dòng: >>E=[A;C] E =
1 4 7 9
2 5 8 7
3 6 9 8
A = B = C = 7 9 8 7 9 8
Lập trình tính toán
54
06/05/2013
2.5 Tính toán trong đại số tuyến tính (tt.)
Xóa dòng, xóa cột Ví dụ: Xóa cột: >>D(:,2)=[] D =
10 12
11 13
2 5
3 6
3 6
10 12
11 13
D = 1 4 E =
1 4 Xóa dòng: >>D(2;:)=[] D =
3
10
11
1 4 7 9
2 5 8 7
3 6 9 8
1 Xóa nhiều phần tử: >>E(1:2:10)=[] E =
4
9
5
6
9
8
7 Lập trình tính toán
06/05/2013
55
2.5 Tính toán trong đại số tuyến tính (tt.)
Tổng các cột của ma trận Cú pháp:
>>sum(A)
>> sum(A)
ans =
12
15
18
Ví dụ:
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
56
2.5 Tính toán trong đại số tuyến tính (tt.)
Ma trận chuyển vị Cú pháp:
>>A’
>> A’
ans = 1 2 3
4 5 6
7 8 9
Ví dụ:
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
57
2.5 Tính toán trong đại số tuyến tính (tt.)
Đường chéo ma trận Cú pháp:
>>diag(A)
>> diag(A)
1 5 9
Ví dụ:
A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
58
2.5 Tính toán trong đại số tuyến tính (tt.)
Phép cộng, trừ hai ma trận Ví dụ: Cộng hai ma trận: >>A+B
3 8
ans = 1 6 14 14
5 10 14
1 4 7 2 5 8 3 6 9
ans = 1 2 0
1 2 2
1 2 4
Trừ hai ma trận: >>A-B A = B = 0 2 7 1 3 6 2 4 5
Lập trình tính toán
06/05/2013
59
2.5 Tính toán trong đại số tuyến tính (tt.)
Phép nhân hai ma trận Ví dụ: >>A*B
ans =
25 25 52 55 79 85
25 58 91
1 4 7 2 5 8 3 6 9
A = B = 0 2 7 1 3 6 2 4 5
Lập trình tính toán
06/05/2013
60
2.5 Tính toán trong đại số tuyến tính (tt.)
Lũy thừa ma trận Cú pháp:
>>A^m
ans =
42 96
30 36 66 81 102 126 150
Ví dụ: >>A^2 A = 1 4 7 2 5 8 3 6 9
Lập trình tính toán
06/05/2013
61
2.5 Tính toán trong đại số tuyến tính (tt.)
Ma trận nghịch đảo Cú pháp:
>>A^(-1)
Hoặc
A = 1 4 7 2 5 8 3 6 9
>>inv(A)
0.9007 -0.4504 -1.8014 0.9007 -0.4504 0.9007
-0.4504 0.9007 -0.4504
Ví dụ: >>inv(A) ans =
Lập trình tính toán
06/05/2013
62
2.5 Tính toán trong đại số tuyến tính (tt.)
Định thức của ma trận Cú pháp:
>>det(A)
A = 1 4 7 2 5 8 3 6 9
Ví dụ: >>det(A) ans = 0
Lập trình tính toán
06/05/2013
63
2.5 Tính toán trong đại số tuyến tính (tt.)
Rút gọn dạng ma trận bậc thang Cú pháp:
>>rref(A)
A = 1 4 7 2 5 8 3 6 9
0 1 0
-1 2 0
Ví dụ: >>rref(A) ans = 1 0 0
Lập trình tính toán
06/05/2013
64
2.5 Tính toán trong đại số tuyến tính (tt.)
Hạng của ma trận Cú pháp:
>>rank(A)
A = 1 4 7 2 5 8 3 6 9
Ví dụ: >>rank(A) ans = 2
Lập trình tính toán
06/05/2013
65
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
66
2.5 Tính toán trong đại số tuyến tính (tt.)
+
−
= c 7 − = 3 b c −
4 0
b
2
4
c
a b 5 + − 2 a + a
Giải phương trình ma trận AX=B (tt.) Ví dụ: 13 Giải hệ 1 − =
>>X=linsolve(A,B)
X =
10.0000 9.0000 6.0000
5 3 2 -7 -1 -4 1 -2 1
A = B = 13 1 4
Lập trình tính toán
06/05/2013
67
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
68
2.5 Tính toán trong đại số tuyến tính (tt.)
Phép cộng, nhân giữa một số và một ma trận Ví dụ: A=[1 2;3 4]
>>A+3
4 6
5 7
A = >>A*2
A =
2 6
4 8
Lập trình tính toán
06/05/2013
69
2.5 Tính toán trong đại số tuyến tính (tt.)
Các phép biến đổi sơ cấp 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
Lập trình tính toán
06/05/2013
70
2.5 Tính toán trong đại số tuyến tính (tt.)
Các phép biến đổi sơ cấp (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])
Lập trình tính toán
06/05/2013
71
2.5 Tính toán trong đại số tuyến tính (tt.)
Các phép biến đổi sơ cấp (tt.) Ví dụ: A=[2 4;3 8;6 7]
>>A(1,:) = A(1,:) * 10
A =
20 3 6
40 8 7
Biến dòng 1 thành 10 lần dòng 1:
Lập trình tính toán
06/05/2013
72
2.5 Tính toán trong đại số tuyến tính (tt.)
Các phép biến đổi sơ cấp (tt.) Ví dụ (tt.):
>>A(2,:) = A(2,:) + A(3,:) * 3
A =
20 21 6
40 29 7
Biến dòng 2 thành dòng 2 cộng 3 lần dòng 3:
Lập trình tính toán
06/05/2013
73
2.5 Tính toán trong đại số tuyến tính (tt.)
Các phép biến đổi sơ cấp (tt.) Ví dụ (tt.):
>>A = A([1 3 2],:)
A =
20 6 21
40 7 29
Hoán vị dòng 2 và dòng 3:
Lập trình tính toán
06/05/2013
74
2.5 Tính toán trong đại số tuyến tính (tt.)
Đa thức đặc trưng, giá trị riêng, vector riêng 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)
06/05/2013
75
Lập trình tính toán
2.5 Tính toán trong đại số tuyến tính (tt.)
Đa thức đặc trưng, giá trị riêng, vector riêng (tt.) Ví dụ:
-9.0000
0.0000
1.0000
-15.0000
A = 1 4 7 2 5 8 3 6 9
15.5777 -0.5777 0.0000
Đa thức đặc trưng >>p = poly(A) p = Tính nghiệm của đa thức đặc trưng >>roots(p) ans =
06/05/2013
76
Lập trình tính toán
2.5 Tính toán trong đại số tuyến tính (tt.)
0.2205 0.7502 0.4082 0.8238 -0.6597 -0.8165 0.5222 0.0453 0.4082
1 4 7 2 5 8 A = 3 6 9
Đa thức đặc trưng, giá trị riêng, vector riêng (tt.) Ví dụ (tt.): Giá trị riêng, vector riêng >>[V,D] = eig(A) V = 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]
06/05/2013
77
Lập trình tính toán
2.5 Tính toán trong đại số tuyến tính (tt.)
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
06/05/2013
78
2.5 Tính toán trong đại số tuyến tính (tt.)
Phép toán trên mảng một chiều (Vector) Ví dụ: u=[1 2 3 4]
v=[0 1 -1 2]
Phép toán
Ý nghĩa
Kết quả
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.\v
Lũy thừa từng phần tử
1 4 9 16
u.^2
u.’
Chuyển thành vector cột
1 2 3 4
Lập trình tính toán
06/05/2013
79
2.5 Tính toán trong đại số tuyến tính (tt.)
Phép toán trên mảng hai chiều (Array) Ví dụ: A=[1 2;3 4]
B=[0 1;-1 2]
Phép toán
Ý nghĩa
Kết quả
Nhân từng phần tử
[0 2;-3 8]
A.*B
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.’
[1 3;2 4]
Ma trận chuyển vị (giống A’)