Tải bản đầy đủ - 0 (trang)
1 Tạo phưương trình tuyến tính.

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

Tải bản đầy đủ - 0trang

51

. =

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

A=

1

4

7

>> b = [366;

b=

366

804

351



3; 4



5



6; 7



8



0]



2

3

5

6

8

0

804; 315]



NÕu b¹n cã kiÕn thøc vỊ sè häc tun 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

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) 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



52

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

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

A=

1



% Tạo ba phơng trình, bốn biến.

4



7



2



53

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 .

Để 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

balance(A)

Cân bằng để tăng độ chính xác

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 lt mò

expm1(A)

Bỉ sung M_file cđa expm

expm2(A)

Ma trËn theo lt 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



54

norm(A,1)

norm(A, 2)

norm(A, inf)

norm(A, p)

norm(A, ‘fro’)

normest(A)

null(A)

orth(A)

poly(A)

polyvalm(A)

qr(A)

qrdelet(Q, R, j)

qrinsert(Q, R, j, x)

rank(A)

rcond(A)

sqrtm(A)

subspace(A, B)

svd(A)

svds(A, K)

trace(A)



Tiªu chuÈn 1

Tiêu chuẩn 2

Vô cùng

Tiêu chuẩn P (chỉ đối với vector)

Tiêu chuẩn F

Tiêu chuẩn 2 ớc lợng cho ma trận lớn

Khoảng rỗng

Tính trực giao

Đa thức đặc trng

Tính giá trị của ma trận

Xác định trực giao tam giác

Xoá cột từ thừa số QR

Chèn cột trong thừa số QR

Số của hàng hoặc cột độc lập

Ước lợng điều kiện thuận nghịch

Ma trận gốc bình phơng

Góc giữa hai điểm

Phân tích giá trị đơn

Một số các giá trị đơn

Tổng các phần tử chéo



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=

[ ]

ở đâ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



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

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

Tải bản đầy đủ ngay(0 tr)

×