1. Trang chủ
  2. » Công Nghệ Thông Tin

Các thao tác với mảng

11 415 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 217,08 KB

Nội dung

Trang 1

CHUONG 7

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

Mội vấn đề thường gặp của số học luyến tính là việc giải phương trình Ví dụ giải phương

trinh sau dưới dạng ma trận:

= re

12 3] jx,i [366 4 5 6|.ix; | = |804

7 8 0] |lx;j |361

Ax=b

Biểu tượng phép nhân toán học (.) được định nghĩa trong phép tố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 tran A va vector x bang véi vector b 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 để tim kiếm giải pháp, như phép loại trừ Gaussian, sự tìm thừa số LỤ, hoặc tính trực tiếp A1 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 vac ma tran A va b:

Trang 2

366 804

351

Có thể kiểm ira 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ội cách hay được dùng

hơn, mội cách ít sử dụng, nhưng 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} la ham của MAYLAB dùng để tính A”; 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 iran trai:

>> x = Alb

X=

25.0000 22.0000 99.0000

Phương trinh này sử dụng phương pháp tìm thừa số LỤ gần đúng và đưa ra câu trả lời như

la phép chia trai A cho b Toán tử chia trái A) 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ội 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

tim thấy phương pháp giải hoặc khơng tìm thấy phương pháp chính xác, nó sẽ hiện thông báo

ll

Trang 3

Nếu bạn nghiên cứu số học tuyến tinh, 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 tố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=j123;,456;780;258] — % Bốn phương trình, ba biến A= 1 2 3 4 5 6 7ƒ 8 0 2 5 8 >> D = [366 804 351 514) b= 366 804 354 914

>> x = A\b % Phương pháp vuông nhỏ nhất

Trang 4

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

Trang 5

82

ans=

256.2200

>> norm(xn) _ % Giải pháp tiêu chuẩn nhỏ nhất

ans=

204.1731

7.2 Cac ham ma tran

Để giải phương trinh 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 chan 1

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’) Tinh toan ham ma tran chung

hess(A) Mau Hessenberg

inv(A) Ma tran chuyén vi

logm(A) Ma tran logarithm

lu(A) Tìm thừa số với phép khử Gaussian

luinc(A, droptol) Thừa số LŨ không đầy đủ

norm(A) Ma trận và vector tiêu chuẩn

norm(A,1) Tiêu chuẩn 1

Trang 6

norm(A, 2) Tiêu chuẩn 2

norm(A, inf} V6 cling

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

nuil(^) Khoảng rỗng

orth(A) Tính trực giao

poly(2) Đa thức đặc trưng

polyvalm(4) Tính giá trị của ma trận

qr(A) Xác định trực giao tam giác

grdeiet(Q, R, ) 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ội độc lập

rcond(A) Vớc lượng điều kiện thuận nghịch

soartm(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 gia trị đơn

svds(4, K} Mội 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

MÁTLAB đưa ra mội số các ma trận đặc biệt, Dưới đây là một số trong các ma trận đó >>a=l123,45 8} >>b = find(a>18) b= “7 ke——- L

Môi số trong chúng có những ứng dụng rộng rãi trong các phép toán

Trang 7

Ở đây b là ma trận rong MATLAB trả lại ma trận rồng khi phép tố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ỡ, nhưng tên biến của chúng vẫn tồn tại trong không gian làm việc

>>7eros(3) — % Ma trận không 3 hàng, 3 cội (3x3)

ans= 8 0 0Ô 8 0 0 0 0 0 >> ones(2,4) % Ma trận một 2 hàng, 4 cột (2x4) ans= >> zeros(3) + pi ans= 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3:1446 3.1416

Ví dụ trên về tạo ma trận 3x3 với các phần tứ đều là r

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

.8nS=

116830 0.0/51

0.6268 0.3516

Trang 8

Ma tran 2x2 của các số cung cấp bởi hàm random với giá trị trung binh la 0 Thuật toán

cho ham rand va randn co thé tim thay 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 00 Ma trận đồng nhất 3x2

Ngồi ra để chỉ kích cỡ của một ma trận, bạn có thể dùng hàm s/ze để tạo một ma trận có

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

>>A=[123,456]; >> ones(size(A))

_8n§=

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 [] 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ử

Trang 9

hadamard | Ma tran Hadamard a

hankel Ma tran Hankel hilb Ma tran Hilbert

invhilb Chuyén thanh ma tran 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 tran 1

pascal Ma tran tam giac 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 tran Toeplitz vander Ma tran Vandermond

wilkinson Ma tran kiém tra Wilkinson

zeros Ma tran khong Vi du

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

Trang 10

Jl

E= 120: Ri=2, L=10; C=

0.2) R2 = 16

Ở đây v, là điện áp giữa nút thứ ¡ và đất Hỏi điện áp tại mỗi nút là bao nhiêu?

Giải pháp: Đây là vấn đề về phân tích pha Phương pháp giải bài nay là giải phương trình

trên, và chuyên các kết quả về dạng thời gian Trong MATLAB giai pháp sẽ là:

function circuit

% circull.m script file to solve circuit proplem

AGL =1!2: % poke in nanzero values as needed

A(1.2)=-112: A(2,1)Z-1/2; A(2,2)= 1/2 + 0.2) + 1/10); A(2,3)=-11101 A(3,2)=-1/101 A(3,3)=Z1/10 + 1H01,

yzj-1 0 0]; % right hand side vector v=Aly % complex solution vmag=abs(v) % solution magnitudes

vphase=angle(v)'180/pi — % solution phase in degrees theta=linspace(0,2?p)); % plot results in time

v1=vmag(1)°cos(heta-vphase(1));

v2=vmag(2}°cos(thela-vphase(2));

v3=vmag(3)°cos(thela-vphase(3)); thd=theta*180/pi;

plot(ffhd,v1,thd,v2 thd v3)

Sau khi chạy chương trình trên, kết qua sẽ là: rE

-4.0000 + 6.0000: 2.0000 + 6.0000) 2.0000 + 4.0000)

Trang 11

ymag = 7.2111 6.3246 44721 vphase = 123.6901 108.4348 63.4349 x 7 ⁄ {YX

Hình 7.2 Kết quả được biểu thị theo dạng sông hình sin

Ngày đăng: 02/10/2013, 20:20

HÌNH ẢNH LIÊN QUAN

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 - Các thao tác với mảng
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 (Trang 9)
Hình 7.1 Sơ đồ mạch điện. - Các thao tác với mảng
Hình 7.1 Sơ đồ mạch điện (Trang 9)
Hình 7.2 Kết quả được biểu thị theo dạng sông hình sin - Các thao tác với mảng
Hình 7.2 Kết quả được biểu thị theo dạng sông hình sin (Trang 11)

TỪ KHÓA LIÊN QUAN

w