Tải bản đầy đủ (.pdf) (17 trang)

Các phép tính với mả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 (101.47 KB, 17 trang )

Updatesofts.com Ebook Team
48
--------------------oOo------------------








chơng 7

các phép tính với mảng






7.1 Tạo ph
7.1 Tạo ph7.1 Tạo ph
7.1 Tạo phơng trình tuyến tính.
ơng trình tuyến tính.ơng trình tuyến tính.
ơng trình tuyến tính.



Về cơ bản, MATLAB đợc viết đối với những ma trận và thực hiện phép toán số học
tuyến tính đơn giản mà xuất hiện trong nhiều ứng dụng. Một vấn đề chung nhất của số học
tuyến tính là việc giải phơng trình. Ví dụ tạo phơng trình:



. =
A.x = b

Biểu tợng phép nhân toán học (.) đợc định nghĩa trong phép toán trên, khác với kí
hiệu ta dùng đối với mảng trớc kia. Trong MATLAB phép nhân ma trận này đợc định
nghĩa bằng dấu sao (*). Tiếp theo định nghĩa dấu bằng, ma trận tạo ra từ ma trận A và
vector x bằng với vector b. Giải pháp tồn tại cho sự cân bằng đề cập ở trên là những vấn đề
cơ bản của số học tuyến tính. Thêm nữa, khi lời giải không tồn tại, có rất nhiều cách gần
đúng để tìm kiếm giải pháp, nh phép loại trừ Gaussian, sự tìm thừa số LU, hoặc tính trực
tiếp A
-1
.b. Dới đây chúng ta sẽ đề cập đến một số cách giải quyết nh trên:
Trớc tiên nhập vào ma trận A và b:

>> A = [1 2 3; 4 5 6; 7 8 0]
A=
1 2 3
4 5 6
7 8 0
>> b = [366; 804; 315]
b=
366
804
351

Nếu bạn có kiến thức về số học tuyến tính, nó rất dễ để bạn kiểm tra xem định thức của ma
trận trên có khác không hay không:

>> det(A)

ans=
27
Updatesofts.com Ebook Team
49
Nếu nó đúng, MATLAB có thể giải phơng trình theo hai cách, một cách hay đợc dùng
hơn, một cách ít sử dụng, nhng trực tiếp hơn, phơng pháp này là chuyển thành dạng x=A
-
1
.b.

>> x = inv(A)*b
x=
25.0000
22.0000
99.0000
ở đây
inv(A)
inv(A) inv(A)
inv(A)
là hàm của MAYLAB dùng để tính A
-1
; và toán tử nhân ( * ), không có dấu
chấm phía trớc, đây là phép nhân ma trận. Phơng pháp đợc dùng nhiều hơn là dùng
toán tử chia ma trận trái:
>> x = A\b
x=
25.0000
22.0000
99.0000


Phơng trình này sử dụng phơng pháp tìm thừa số LU gần đúng và đa ra câu trả lời
nh là phép chia trái A cho b. Toán tử chia trái ( \ ) không có dấu chấm phía trớc là một
phép toán của ma trận, nó không phải là các phép toán giữa các phần tử của mảng. Phơng
pháp thứ hai này đợc sử dụng nhiều hơn do nhiều nguyên nhân, một trong những nguyên
đơn giản nhất là phơng pháp này dùng ít phép toán hơn và tốc độ nhanh hơn. Thêm vào
đó, nhìn chung phơng pháp này chính xác hơn cho những bài toán lớn. Trong trờng hợp
khác, nếu MATLAB không tìm thấy phơng pháp giải hoặc không tìm thấy phơng pháp
chinh xác, nó sẽ hiện thông báo lỗi.
Nếu bạn nghiên cứu số học tuyến tính, bạn biết rằng khi số phơng trình và số biến
khác nhau, thì không thể có một phơng pháp duy nhất để giải. Trong MATLAB khi gặp
những hệ phơng trình có số phơng trình lớn hơn số biến nó dùng toán tử chia trái hoặc
chia phải, tự động giảm thấp nhất những phần tử thừa A.x - b. Cách này gọi là phơng pháp
vuông nhỏ nhất. Ví dụ:

>> A = [1 2 3; 4 5 6; 7 8 0; 2 5 8] % Bốn phơng trình, ba biến.
A=
1 2 3
4 5 6
7 8 0
2 5 8
>> b = [366 804 351 514]
b=
366
804
351
514
>> x = A\b % Phơng pháp vuông nhỏ nhất.
x=
247.9818
-173.1091

114.9273
Updatesofts.com Ebook Team
50
>> res = A*x - b
res=
-119.4545
11.9455
0.0000
35.8364

Mặt khác khi số phơng trình ít hơn số biến tơng tự nh trờng hợp không xác định, thì
số nghiệm phơng trình là vô tận. Đối với những nghiệm này MATLAB tính theo hai cách.
Dùng toán tử chia đa ra phơng pháp mà có số phần tử 0 của x là cực đại. Nh một sự lựa
chọn, tính x=pinv(A)*b đa ra phơng pháp chiều dài hoặc tiêu chuẩn của x nhỏ hơn các ph-
ơng pháp khác. Phơng pháp này gọi là phơng pháp tiêu chuẩn cực tiểu.
Ví dụ:

>> A = A % Tạo ba phơng trình, bốn biến.
A=
1 4 7 2
2 5 8 5
3 6 0 8
>> b = b(1:3)
b=
366
804
351
>> x = A\b % phơng pháp với số phần tử 0 cực đại.
x=
0

-165.9000
99.0000
168.3000
>> xn = pinv(A)*b % Tìm kiếm giải pháp tiêu chuẩn nhỏ nhất.
xn=
30.8182
-168.9818
99.0000
159.0545
>> norm(x) % Tiêu chuẩn O_clit với các phần tử 0.
ans=
256.2200
>> norm(xn) % Giải pháp tiêu chuẩn nhỏ nhất
ans=
254.1731

7.2 Các hàm ma trận .
7.2 Các hàm ma trận .7.2 Các hàm ma trận .
7.2 Các hàm ma trận .



Để giải phơng trình tuyến tính, MATLAB cung cấp các hàm trợ giúp sau:
Các hàm ma trận
Các hàm ma trậnCác hàm ma trận
Các hàm ma trận


balance(A) Cân bằng để tăng độ chính xác
Updatesofts.com Ebook Team

51
cdf2rdf(A) Chuyển từ dạng số phức chéo sang dạng số thực
chéo
chol(A) Tìm thừa số Cholesky
cholinc(A, droptol) Thừa số Cholesky không đầy đủ
cond(A) Số điều kiện ma trận
condest(A) Ước lợng số điều kiện ma trận theo tiêu
det(A) Định thức ma trận
expm(A) Ma trận theo luật mũ
expm1(A) Bổ sung M_file của expm
expm2(A) Ma trận theo luật hàm mũ, dùng thứ tự Taylor
funm(A, fun) Tính toán hàm ma trận chung
hess(A) Mẫu Hessenberg
inv(A) Ma trận chuyển vị
logm(A) Ma trận logarithm
lu(A) Tìm thừa số với phép khử Gaussian
luinc(A, droptol) Thừa số LU không đầy đủ
norm(A) Ma trận và vector tiêu chuẩn
norm(A,1) Tiêu chuẩn 1
norm(A, 2) Tiêu chuẩn 2
norm(A, inf) Vô cùng
norm(A, p) Tiêu chuẩn P (chỉ đối với vector)
norm(A, fro) Tiêu chuẩn F
normest(A) Tiêu chuẩn 2 ớc lợng cho ma trận lớn
null(A) Khoảng rỗng
orth(A) Tính trực giao
poly(A) Đa thức đặc trng
polyvalm(A) Tính giá trị của ma trận
qr(A) Xác định trực giao tam giác
qrdelet(Q, R, j) Xoá cột từ thừa số QR

qrinsert(Q, R, j, x) Chèn cột trong thừa số QR
rank(A) Số của hàng hoặc cột độc lập
rcond(A) Ước lợng điều kiện thuận nghịch
sqrtm(A) Ma trận gốc bình phơng
subspace(A, B) Góc giữa hai điểm
svd(A) Phân tích giá trị đơn
svds(A, K) Một số các giá trị đơn
trace(A) Tổng các phần tử chéo



7.3 Ma trận đặc biệt
7.3 Ma trận đặc biệt7.3 Ma trận đặc biệt
7.3 Ma trận đặc biệt



MATLAB đa ra một số các ma trận đặc biệt, trong đó một số chúng có những ứng
dụng rộng rãi trong các phép toán. Nhìn chung những ma trận đó là:

>> a = [1 2 3; 4 5 6];
>> b = find(a>10)
b=
[ ]
Updatesofts.com Ebook Team
52
ở đây b là ma trận rỗng. MATLAB trả lại ma trận rỗng khi phép toán không có kết quả.
Trong ví dụ trên không có phần tử nào của a lớn hơn 10. Ma trận rỗng không có kích cỡ,
nhng tên biến của chúng vẫn tồn tại trong không gian làm việc.


>> zeros(3) % Ma trận không 3 hàng, 3 cột (3x3).
ans=
0 0 0
0 0 0
0 0 0
>> ones(2,4) % Ma trận một 2 hàng, 4 cột (2x4).
ans=
1 1 1 1
1 1 1 1
>> zeros(3) + pi
ans=
3.1416 3.1416 3.1416
3.1416 3.1416 3.1416
3.1416 3.1416 3.1416

Ví dụ trên về tạo ma trận 3x3 với các phần tử đều là .
>> rand(3,1)
ans=
0.2190
0.0470
0.6789
ma trận 3x1 gồm các phần tử là số cung cấp bởi hàm random giữa 0 và 1.

>> randn(2)
ans=
1.1650 0.0751
0.6268 0.3516

ma trận 2x2 của các số cung cấp bởi hàm random với giá trị trung bình là 0. Thuật toán cho
hàm

rand
randrand
rand

randn
randnrandn
randn
có thể tìm thấy trong S.K>Park and K.W.Miller,Random Number
Generator: Good Ones Are Hard to Find, Comm. ACM, 32, 10, Oct. 1988-1201.

>> eye(3)
ans=
1 0 0
0 1 0
0 0 1
Ma trận đồng nhất 3x3

>> eye(3,2)
ans=
1 0
0 1
0 0
Ma trận đồng nhất 3x2
Updatesofts.com Ebook Team
53
Ngoài ra để chỉ kích cỡ của một ma trận, bạn có thể dùng hàm
size
sizesize
size
để tạo một ma trận có

kích cỡ giống nh ma trận khác:

>> A = [1 2 3; 4 5 6];
>> ones(size(A))
ans=
1 1 1
1 1 1

ma trận một có cùng kích cỡ với ma trận A.
Các ma trận trên và các ma trận đặc biệt khác đợc giới thiệu trong bảng sau:

Các ma trận đặc biệt
Các ma trận đặc biệt Các ma trận đặc biệt
Các ma trận đặc biệt


[ ] Ma trận rỗng
compan Tạo ma trận rỗng
eye Ma trận đồng nhất
gallery Ma trận kiểm tra nhỏ vài phần tử
hadamard Ma trận Hadamard
hankel Ma trận Hankel
hilb Ma trận Hilbert
invhilb Chuyển thành ma trận Hilbert
magic Ma trận vuông, giá trị các phần tử bằng từ 1 đến giá trị số
phần tử
ones Ma trận 1
pascal Ma trận tam giác Pascal
rand Ma trận với các phần tử ngẫu nhiên từ 0 đến 1.
randn Ma trận ngẫu nhiên thông thờng với giá trị trung bình bằng

0
rosser Ma trận kiểm tra đối xứng trục chính
toeplitz Ma trận Toeplitz
vander Ma trận Vandermond
wilkinson Ma trận kiểm tra Wilkinson
zeros Ma trận không

Ví dụ
Ví dụVí dụ
Ví dụ
Vấn đề
Vấn đề Vấn đề
Vấn đề
: Ta có mạch điện nh trong hình 7.1 đợc mô tả bằng phơng trình điện áp nút
khi nguồn đa vào là sóng hình sin.

Hình 7.1
Hình 7.1 Hình 7.1
Hình 7.1





Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×