nhiên ta cũng rất có thể tham chiếu tới phần tử của mảng nhờ vào một chỉ số, ví dụ như A(k) cùng với k

= i + (j - 1)m. Bí quyết này thường dùng để làm tham chiếu vec tơ hàng tuyệt cột. Vào trường

hợp ma trận không hề thiếu thì nó được xem như là ma trận một cột dài tạo ra từ những cột của ma trận

ban đầu. Bởi vậy viết A(5) có nghĩa là tham chiếu thành phần A(2, 2).

Để xác định kích thước của một ma trận ta sử dụng lệnh length(trả về kích thước

lớn nhất) hay size(số hàng với cột). Ví dụ:

c = <1 2 3 4; 5 6 7 8>;

length(c)

= size(c)




Bạn đang xem: Code matlab đại số tuyến tính

*
16 trang | siêng mục: MATLAB | phân chia sẻ: dk
S00TYs | Lượt xem: 18122 | Lượt tải: 10
*

Tóm tắt văn bản Sử dụng Matlab trong đại số đường tính, để thấy tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên

,j)); end; end; if l(g,g)==0 break; end; end;if l(g,g)==0 break;end;end;end;E=l(2:N,1:m,:); % bien doi de dinh thuc ma tran khong vắt doi
F=l(1,1:m);F=((-1)^d)*F;B=;%ma tran B ráng the boi B ma xet su nỗ lực doi dau hang 1hang=0;for s=1:N %tim hang ma tran i=N+1-s; for j=1:m if B(i,j)~=0 hang=i; break; end; end; if B(i,j)~=0 break; end;end;if N==m % tim dinh thuc ma tran dinhthuc=1; for i=1:N dinhthuc=dinhthuc*B(i,i); end;end;2/ Giải hệ phương trình bằng phương thức Cramerfunction = cramer(A,b)if nargin M b=b"; if M~=1 error ("kich co he so tu vì khong phu hop nhap lai b"); end; if n~=N error ("kich co he so tu bởi vì khong phu hop nhap lai b"); end;end;if M>n if n~=1 error ("kich co he so tu vì chưng khong phu hop nhap lai b"); end; if M~=N error ("kich teo he so tu vị khong phu hop nhap lai b"); end;end; if det(A)==0 error ("det=0,khong the dung phuong phap nay");end;l=A;X=0;b=b";for j=1:N if j==1 l=A; l(:,j)=<>; l=; X(1,j)=det(l)/det(A); end; if j>=2 if jz for j=1:t % chuyen vi ma tran for i=1:z b(j,i)=c(i,j); end; end;b=b(:,1:z);end;if z>t b=c;end;z = size(b,1);t = size(b,2);%if z~=1 % if t==N error ("kich teo he so tu vì khong phu hop"); % end;%end;%if t~=1 error ("kich teo he so tu bởi vì khong phu hop.");%end;l=;i=1;d=0;for h=1:Nk=l(h:N,:);%chon hang thu h den Nk=k(:,h:m); %chon cot thu h den mfor j=1:(m-h+1) for i=1:(N-h+1) if k(i,j)~=0 e=i; if h==1 f=j; end; if h~=1 f=1; end; break; end; end; if k(i,j)~=0 break; end;end;%tim phan tu khac 0 dau tien de hoan doi k=circshift(k, <-(e-1), -(f-1)>); p=; l=;for g=h:(N-1) for i=(g+1):N if l(g,g)~=0 c=l(i,g)/l(g,g); for j=g:m l(i,j)=l(i,j)-(c*l(g,j)); end; end; if l(g,g)==0 break; end; end;if l(g,g)==0 break;end;end;% bien doi so cap quần thể cac phan tu ben duoiend;B=l;r
A=0;r
B=0;for s=1:N i=N+1-s; for j=1:(m-1) if B(i,j)~=0 r
A=i; break; end; end; if B(i,j)~=0 break; end;end;%tim hang ma tran he sofor s=1:N i=N+1-s; for j=1:m if B(i,j)~=0 r
B=i; break; end; end; if B(i,j)~=0 break; end;end;% tim hang ma tran mo rongif r
A=0).% Coordinates of points to lớn be fitted are stored in the column vectors% t and y. Coefficients of the approximating polynomial are stored in% the vector c. Graphs of the data points & the least-squares% approximating polynomial are also generated.if ( n >= length(t))error("Degree is too big")endv = fliplr(vander(t));v = v(:,1:(n+1));c = vy;c = fliplr(c");x = linspace(min(t),max(t));w = polyval(c, x);plot(t,y,"ro",x,w);title(sprintf("The least-squares polynomial of degree n = %2.0f",n))legend("data points","fitting polynomial")Chạy thử chương trình trên bằng cách nhập:a/ t = linspace(0, pi/2, 10); t = t";b/ y = sin(2*t);c/ c = fit(3, t, y) 9/ Ứng dụng trong triết lý mật mã.Đoạn code dùng mã hóa thông tinfunction B = code(s, A)% String s is coded using a nonsingular matrix A.% A coded message is stored in the vector B.p = length(s); = size(A);b = double(s);r = rem(p,n);if r ~= 0b = ";endb = reshape(b,n,length(b)/n);B = A*b;B = B(:)";Đoạn code giải thuật thông tinfunction s = dcode(B, A)% Coded message, stored in the vector B, is% decoded with the aid of the nonsingular matrix A% & is stored in the string s.= size(A);p = length(B);B = reshape(B,n,p/n);d = AB;s = char(d(:)");Chạy thử chương trình trên:a/ s=’Toi hoc dẻo so tuyen tinh’b/ A=pascal(4) tạo thành ma trận khả nghịch tùy ý( vào trường phù hợp này sử dụng mt pascal cấp cho 4)c/B=code(s,A)d/ giải mã dcode(B,A)10/ Ứng dụng trong định hướng mật mã.function = rot2d(t, x, y)% Rotation of a two-dimensional object that is represented by two% vectors x and y. The angle of rotation t is in the degree measure.% Transformed vectors x và y are saved in xt và yt, respectively.t1 = t*pi/180;r = ;x = ;y = ;hold ongrid onaxis equalfill(x, y,"b")z = r*;xt = z(1,:);yt = z(2,:);fill(xt, yt,"r");title(sprintf("Plane rotation through the angle of %3.2f degrees",t))hold off
Chạy test chương trình bởi cácha/ x=<1 2 3 2>b/ y=<3 1 2 4>c/ = rot2d(75, x, y)

1/ MATLAB cho phép ta nhập số liệu từ chiếc lệnh. Lúc nhập ma trận từ keyboard ta đề nghị tuân theo các quy định sau :

• phân làn các bộ phận của ma trận bằng dấu “,” hay vết trống

• cần sử dụng dấu “;” để ngừng một mặt hàng

• bao các bộ phận của ma trận bằng cặp vết ngoặc vuông < >

Ví dụ : >> A = < 1 2 3 > hiệu quả là A = 1 2 3 >> A = <1;2;3>

công dụng là A =

1

2 3

2/ Toán tử ‘ dùng để chuyển vị một ma trận thực và gửi vị phối hợp một ma trận

phức. Trường hợp chỉ ao ước chuyển vị ma trận phức, ta cần sử dụng thêm toán tử “.” nghĩa là yêu cầu

viết “.’”. Ví dụ:

C = <1 + 2*i 2 - 4*i; 3 + i 2 - 2*j>;

X = C"

Y = C.’

3/ Chỉ số: thành phần ở hàng i cột j của ma trận m×n gồm kí hiệu là A(i, j). Tuy

nhiên ta cũng rất có thể tham chiếu tới phần tử của mảng nhờ vào một chỉ số, lấy ví dụ như A(k) cùng với k

= i + (j - 1)m. Bí quyết này thường dùng để tham chiếu vec tơ hàng giỏi cột. Vào trường

hợp ma trận khá đầy đủ thì nó được xem như là ma trận một cột dài chế tác từ những cột của ma trận

ban đầu. Vậy nên viết A(5) có nghĩa là tham chiếu bộ phận A(2, 2).

Để khẳng định kích thước của một ma trận ta cần sử dụng lệnh length(trả về size

lớn nhất) hay size(số hàng với cột). Ví dụ:

c = <1 2 3 4; 5 6 7 8>;

length(c)

= size(c)

4/ Toán tử “:” : Toán tử “:” là một toán tử đặc biệt của MATLAB. Nó xuất

hiện ở những dạng không giống nhau. Ví dụ: Lệnh :

1:10

tạo một vec tơ hàng đựng 10 số nguyên từ là 1 đến 10.

Lệnh: 100: -7: 50

tạo một hàng số từ bỏ 100 đến 51, bớt 7 mỗi lần.

Các biểu thức chỉ số tham chiếu tới một phần của ma trận. Viết A(1:k, j) là tham

chiếu đến k phần tửđầu tiên của cột j. Ngoài ra toán tử “:” tham chiếu tới tất cả các

phần tử của một hàng hay như là một cột. Ví dụ:

B = A(:, <1 3 2 >)

tạo ra ma trận B từ bỏ ma trận A bằng phương pháp đổi sản phẩm công nghệ tự những cột từ bỏ <1 2 3> thành <1 3 2>

Tạo ma trận bằng hàm có sẵn: MATLAB hỗ trợ một số hàm nhằm tạo các

ma trận cơ bản:

zeros tạo thành ma trận mà các phần tửđều là zeros

z = zeros(2, 4)

ones tạo nên ma trận mà các phần tửđều là 1 trong những

x = ones(2, 3)

y = 5*ones(2, 2)

rand tạo ra ma trận nhưng mà các thành phần ngẫu nhiên phân bốđều

d = rand(4, 4)

randn tạo nên ma trận cơ mà các thành phần ngẫu nhiên phân bố trực giao

e = randn(3, 3)

magic(n) tạo thành ma trận cung cấp n gồm các số nguyên từ 1 đến n2 với tổng các hàng

bằng tổng những cột (n phải lớn hơn hay bằng 3).

pascal(n) tạo thành ma trận xác định dương cấp n mà lại các phần tử lấy trường đoản cú tam giác Pascal.

Lệnh :

pascal(4) tạo ra ma trận khẳng định dương cung cấp 4

- eye(n) sinh sản ma trận đơn vị cấp n

Lệnh:

eye(3) sinh sản ma trận đơn vị chức năng cấp 3

- eye(m, n) sản xuất ma trận đơn vị không ngừng mở rộng

Lệnh:

eye(3, 4) chế tác ma trận đơn vị chức năng gồm 3 mặt hàng 4 cột

Ta hoàn toàn có thể lắp ghép(concatenation) những ma trận có sẵn thành một

ma trận mới. Ví dụ:

a = ones(3, 3)

b = 5*ones(3, 3)

c =

Xoá hàng và cột : Ta hoàn toàn có thể xoá hàng và cột trường đoản cú ma trận bằng dùng vết <>. Để

xoá cột thứ 2 của ma trận b ta viết:

b(:, 2) = <>

Các lệnh xử lí ma trận:

cùng : X= A + B

Trừ : X= A - B

Nhân : X= A * B

: X.*A nhân các thành phần tương ứng cùng nhau

phân chia : X = A/B cơ hội đó X*B = A

: X = AB lúc đó A*X = B

: X=A./B phân tách các bộ phận tương ứng cùng nhau

Luỹ vượt : X = A^2

: X = A.^2

Nghịch đảo : X = inv(A)

Định thức : d = det(A)

Số chiều của mình vector A : n=ndims(A)

Tổng các phần tử trên đường chéo chính ma trận A : s = trace(A)

Phần 2.

Yêu cầu: Sinh viên không được dùng các hàm sẵn có trong matlab để viết chương trình.

Các đề tài.

1/ Dùng những phép biến hóa sơ cấp cho đưa ma trận về dạng bậc thang và tìm kiếm hạng của ma trận A tùy ý.

Yêu cầu: Input: được cho phép nhập vào một ma trận tùy ý. Output: Ma trận bậc thang và r(A).

2/ Nhân nhì ma trận cùng với nhau.

Yêu cầu: Input: chất nhận được nhập vào nhì ma trận A cùng B. Chương trình cần kiểm tra phép nhân có thực hiện được tốt không? Output: Ma trận tích.

3/ Tính Am, cùng với m là số tự nhiên và thoải mái cho trước.

Yêu cầu: Input: Nhập vào một trong những ma trận vuông tùy ý cùng số tự nhiên m. Output: một ma trận Am.

4/ Tính định thức của ma trận bằng đổi khác sơ cấp.

Yêu cầu: Input: được cho phép nhập vào một ma trận vuông tùy ý. Output: det(A).

5/ Tính định thức của ma trận vuông A bằng cách khai triển theo một mặt hàng tùy ý (hoặc một cột tùy ý) qua các bù đại số.

Yêu cầu: Input: có thể chấp nhận được nhập vào một trong những ma trận vuông tùy ý. Output: det(A).

6/ tìm hạng của ma trận bằng các sử dụng các định thức nhỏ (phương pháp định thức bao quanh).

7/ tìm ma trận nghịch đảo của ma trận vuông A bằng biến hóa sơ cấp đối với hàng mang lại ma trận

*
.

Yêu cầu: Input: có thể chấp nhận được nhập vào một trong những ma trận vuông tùy ý. Chương trình đánh giá tính khả nghịch của ma trận. Output: Ma trận nghịch đảo: .

8/ search ma trận nghịch đảo bằng phương pháp

*
.

Yêu cầu: Input: cho phép nhập vào trong 1 ma trận vuông tùy ý. Chương trình khám nghiệm tính khả nghịch của ma trận. Output: Ma trận nghịch đảo: .

9/ đối chiếu LU của ma trận A. đối chiếu PA=LU.

Yêu cầu: Input: chất nhận được nhập vào trong 1 ma trận vuông cung cấp n. Chương trình khám nghiệm A hoàn toàn có thể phân tích thành A = LU tốt không. Còn nếu như không thì tìm kiếm ma trận p. Và so sánh PA= LU. Output: Ma trận nghịch đảo: P, L, U.

11/ kiểm soát tính xác minh dương của ma trận vuông A. (định nghĩa: ma trận vuông A gọi là xác minh dương, nếu các định thức con chính đều dương).

10/ so với Cholesky:

*
, trong những số đó A là ma trận đối xứng, khẳng định dương.

11/ Giải hệ phương trình bằng phép chuyển đổi Gauss.

Yêu cầu: Input: cho phép nhập vào một trong những ma trận tùy ý A với ma trận b. Output: Nghiệm của hệ sinh hoạt dạng vécto.

Ma trận A và b có thể được phát âm từ tệp tin *.txt

12/ Giải hệ Cramer AX = b cùng với A vuông,

*
bằng công thức
*
,

trong đó

*
.

13/ tìm tọa độ của một vécto trong một cơ sở cho trước.

Yêu cầu: Input: cho 1 vécto với một các đại lý E. Output: tọa độ của vécto trong cơ sở E.

14/ tra cứu ma trận chuyển đại lý từ E lịch sự F.

Yêu cầu: Input: đến hai cơ sở E cùng F. Output: ma trận đưa cơ sở p.

15/ tra cứu hạng của mình vécto.

Yêu cầu: Input: cho một họ vécto. Output: hạng của mình vécto này và những vécto độc lập tuyến tính tối đa của mình

16/ khám nghiệm tính tự do tuyến tính, phụ thuộc tuyến tính của mình vécto. Khám nghiệm vécto x gồm là tổng hợp tuyến tính của mình vécto M giỏi không?

17/ tra cứu cơ sở, số chiều của không khí con sinh ra vày họ vécto M.

Yêu cầu: Input: có thể chấp nhận được nhập vào trong 1 họ vécto. Output: Số chiều và cửa hàng của không khí con sinh ra vì M.

18/ Tìm cửa hàng và số chiều của không khí nghiệm của hệ thuần độc nhất AX = 0.

Yêu cầu: Input: được cho phép nhập vào ma trận A. Output: Số chiều và cơ sở của không gian nghiệm.

19/ tìm số chiều và cơ sở của không gian giao

*
và không khí tổng
*
của hai không gian con F cùng G. Input: nhập vào hai không gian con (tập sinh của hai không khí con F và G, hoặc nhập hệ pt). Output: số chiều và các đại lý của giao cùng tổng.

20/ Dùng quá trình trực giao hóa Gram-Schmidt, tìm chúng ta trực giao, họ trực chuẩn của chúng ta vécto hòa bình tuyến tính.

Yêu cầu: Input: chất nhận được nhập vào một họ vécto bao gồm m vécto độc lập tuyến tính (hoặc họ vécto bất kỳ, chương trình bắt buộc kiểm tra tính độc lập tuyến tính của mình vécto). Output: Họ tất cả m vécto trực giao, có thể trực chuẩn.

21/ đối chiếu QR của ma trận vuông A bằng quy trình Gram – Schmidt.

Yêu cầu: Input: được cho phép nhập vào ma trận vuông A tùy ý. Chương trình soát sổ A tất cả phân tích QR hay là không (điều kiện: những cột của A là họ tự do tuyến tính). Output: Ma trận Q với ma trận R.

22/ tra cứu hình chiếu vuông góc của một vécto cho trước xuống không khí con. Tìm khoảng cách từ vécto đến không khí con.

Yêu cầu: Input: chất nhận được nhập vào một họ vécto M và vécto x. Output: hình chiếu vuông góc của vecto x xuống không khí con F được sinh ra vị M và khoảng cách từ x mang đến F.

23/ đến ánh xạ tuyến tính f biết ma trận của f trong cơ sở E là A. Tìm ảnh của một vécto cho trước.

24/ mang đến ánh xạ con đường tính f biết ma trận của f trong các đại lý E là A. Tìm cơ sở, số chiều của nhân và ảnh của ánh xạ con đường tinh.

25/ mang lại ánh xạ tuyến đường tính f. Kiếm tìm ma trận của ánh xạ tuyến tính trong cơ sở E mang đến trước.

26/ mang đến ma trận vuông A. Tra cứu trị riêng, vécto riêng rẽ của ma trận A.

27/ mang đến ma trận vuông A. Kiểm soát tính chéo cánh hóa của A. Nếu được, tra cứu ma trận phường và ma trận D.

28/ đến ma trận đối xứng, thực vuông A. Chéo hóa trực giao ma trận A.

29/ cho ma trận vuông A chéo hóa được. Tính Am.

30/ cho dạng toàn phương . Chất vấn dạng toàn phương xác minh dương giỏi không.

31/ đến dạng toàn phương . Đưa dạng toàn phương về thiết yếu tắc bằng đổi khác trực giao.

32/ đến dạng toàn phương . Phân một số loại dạng toàn phương.

33/ Ứng dụng ma trận nghịch đảo trong lý thuyết mật mã

34/ Ứng dụng đại số tuyến tính trong việc xấp xĩ hàm.

35/ Ứng dụng đại số đường tính trong kim chỉ nan đồ họa.

Phần 3. Những chương trình tham khảo. Những chương trình này được download từ mạng hoặc phần nhiều do sinh viên viết cần chưa cứng cáp là tối ưu.

1/ dùng biến hóa sơ cấp cho đưa ma trận về dạng bậc thang

function A=bdsc_bacthang(B)

A=B;

=size(A);

h=1;

for k=1:m-1;

for j=h:n;

for i=k:m;

if(A(i,j)~=0)

break;

end;

end;

if(A(i,j)~=0)

break;

end;

end;

if(i~=k)

for l=h:n;

a=A(k,l);

A(k,l)=A(i,l);

A(i,l)=a;

end;

end;

if(j~=h)

h=j;

end;

for i=k+1:m;

if (A(i,h)~=0)

a=A(i,h)/A(k,h);

for j=h:n;

A(i,j)=A(i,j)-a*A(k,j);

end;

end;

end;

h=h+1;

end;

disp("ma tran bac thang");

disp(A);

end

1b/ dùng chuyển đổi sơ cấp mang lại dạng bậc thang, tính hạng với tính định thức.

function = ladder(A) % chuyen ve bac thang

% Dong thoi tim dinh thuc va hang cua ma tran dua vao bdsc

if nargin "phai nhap vao ma tran can phan tich");

end;

N = size(A,1);%1 la dong,2 la cot,i la hang,j la cot

m = size(A,2);

l=A;

i=1;

d=0;

if N~=m

dinhthuc ="*phai la ma tran vuong*";

end;

for h=1:N

k=l(h:N,:);

k=k(:,h:m);

for j=1:(m-h+1) % tim phan tu khac khong dau tien theo tt cot hang

for i=1:(N-h+1)

if k(i,j)~=0

e=i;

if h==1

f=j;

end;

if h~=1

f=1;

end;

break;

end;

end;

if k(i,j)~=0

break;

end;

end;

d=d+(e-1)*(N-1)+(f-1)*(m-1);

k=circshift(k, <-(e-1), -(f-1)>);

p=;

l=;

for g=h:(N-1) % khu vực cac phan tu theo sau ben duoi

for i=(g+1):N

if l(g,g)~=0

c=l(i,g)/l(g,g);

for j=g:m

l(i,j)=l(i,j)-(c*l(g,j));

end;

end;

if l(g,g)==0

break;

end;

end;

if l(g,g)==0

break;

end;

end;

end;

E=l(2:N,1:m,:); % bien doi de dinh thuc ma tran khong cố doi

F=l(1,1:m);

F=((-1)^d)*F;

B=;%ma tran B cố the boi B ma xet su nuốm doi dau hang 1

hang=0;

for s=1:N %tim hang ma tran

i=N+1-s;

for j=1:m

if B(i,j)~=0

hang=i;

break;

end;

end;

if B(i,j)~=0

break;

end;

end;

if N==m % tim dinh thuc ma tran

dinhthuc=1;

for i=1:N

dinhthuc=dinhthuc*B(i,i);

end;

end;

2/ Giải hệ phương trình bằng phương thức Cramer

function = cramer(A,b)

if nargin "phai nhap vao ma tran can phan tich");

end;

N = size(A,1);%1 la dong,2 la cot,i la hang,j la cot

m = size(A,2);

if N~=m error ("khong phai la he cramer,nhap lai ma tran he so A");

end;

n = size(b,1);

M = size(b,2);

if n>M

b=b";

if M~=1 error ("kich teo he so tu vày khong phu hop nhap lai b");

end;

if n~=N error ("kich teo he so tu vì khong phu hop nhap lai b");

end;

end;

if M>n

if n~=1 error ("kich teo he so tu vì chưng khong phu hop nhap lai b");

end;

if M~=N error ("kich co he so tu bởi khong phu hop nhap lai b");

end;

end;

if det(A)==0 error ("det=0,khong the dung phuong phap nay");

end;

l=A;

X=0;

b=b";

for j=1:N

if j==1

l=A;

l(:,j)=<>;

l=;

X(1,j)=det(l)/det(A);

end;

if j>=2

if j

l=A;

a=l;

x=a(1:N,1:(j-1),:);

y=a(1:N,(j+1):N,:);

l=;

l=;

X(1,j)=det(l)/det(A);

end;

if j==N

l=A;

l(:,j)=<>;

l=;

X(1,j)=det(l)/det(A);

end;

end;

end;

3/ Giải hệ bằng cách thức khử Gauss

function = gauss(A,b)

if nargin "phai nhap vao ma tran can phan tich");

end;

N = size(A,1);%1 la dong,2 la cot,i la hang,j la cot

m = size(A,2)+1;

z = size(b,1);%kiem tra he so tu vị

t = size(b,2);

c=b;

if t>z

for j=1:t % chuyen vi ma tran

for i=1:z

b(j,i)=c(i,j);

end;

end;

b=b(:,1:z);

end;

if z>t

b=c;

end;

z = size(b,1);

t = size(b,2);

%if z~=1

% if t==N error ("kich co he so tu vì khong phu hop");

% end;

%end;

%if t~=1 error ("kich co he so tu do khong phu hop.");

%end;

l=;

i=1;

d=0;

for h=1:N

k=l(h:N,:);%chon hang thu h den N

k=k(:,h:m); %chon cot thu h den m

for j=1:(m-h+1)

for i=1:(N-h+1)

if k(i,j)~=0

e=i;

if h==1

f=j;

end;

if h~=1

f=1;

end;

break;

end;

end;

if k(i,j)~=0

break;

end;

end;%tim phan tu khac 0 dau tien de hoan doi

k=circshift(k, <-(e-1), -(f-1)>);

p=;

l=;

for g=h:(N-1)

for i=(g+1):N

if l(g,g)~=0

c=l(i,g)/l(g,g);

for j=g:m

l(i,j)=l(i,j)-(c*l(g,j));

end;

end;

if l(g,g)==0

break;

end;

end;

if l(g,g)==0

break;

end;

end;% bien doi so cap quần thể cac phan tu ben duoi

end;

B=l;

r
A=0;

r
B=0;

for s=1:N

i=N+1-s;

for j=1:(m-1)

if B(i,j)~=0

r
A=i;

break;

end;

end;

if B(i,j)~=0

break;

end;

end;%tim hang ma tran he so

for s=1:N

i=N+1-s;

for j=1:m

if B(i,j)~=0

r
B=i;

break;

end;

end;

if B(i,j)~=0

break;

end;

end;% tim hang ma tran mo rong

if r
A

X= ("phuong trinh vo nghiem");

end;

if r
A==r
B

if r


Xem thêm:
Cao viên viên và giả tịnh văn : tưởng giận hờn, hóa ra là vì lý do này

A

X= ("phuong trinh teo vo so nghiem");

end;

u=0;

if r
A==(m-1) %giai nghiem he theo phuong phap khu vực Gauss

for s=1:(m-1)

i=m-s;

if i==(m-1);

X(i)=B(i,m)/B(i,i);

end;

if i~=(m-1)

for c=1:(s-1)

y=m-c;

u=u+X(y)*B(i,y);

X(i)=(B(i,m)-u)/B(i,i);

end;

end;

u=0;

end;

end;

end;

4/ tìm kiếm ma trận nghịch đảo

function = nghichdao (A)% tim ma tran nghich dao theo ma tran phu hop

if nargin "phai nhap vao ma tran can phan tich");

end;

N = size(A,1);%1 la dong,2 la cot,i la hang,j la cot

m = size(A,2);

d=0;

a=A;

i=1;

if N~=m

error ("ma tran khong vuong");

end;

l=A;

for h=1:N %bien doi bac thang

k=A(h:N,:);

k=k(:,h:N);

for j=1:(N-h+1)

for i=1:(N-h+1)

if k(i,j)~=0

e=i;

if h==1

f=j;

end;

if h~=1

f=1;

end;

break;

end;

end;

if k(i,j)~=0

break;

end;

end;

d=d+(e-1)*(N-1)+(f-1)*(N-1);

k=circshift(k, <-(e-1), -(f-1)>);

p=;

A=;

for g=h:(N-1)

for i=(g+1):N

if A(g,g)~=0

c=A(i,g)/A(g,g);

for j=g:N

A(i,j)=A(i,j)-(c*A(g,j));

end;

end;

if A(g,g)==0

break;

end;

end;

if A(g,g)==0

break;

end;

end;

end;

E=A(2:N,1:N,:);

F=A(1,1:N);

F=((-1)^d)*F;

K=;

dinhthuccha=1;

for i=1:N %tinh dinh thuc

dinhthuccha=dinhthuccha*K(i,i);

end;

for o=1:N

l(o,:)=<>;

D=l;

for t=1:N

l(:,t)=<>;

N=N-1;

for h=1:N

k=l(h:N,:);

k=k(:,h:N);

for j=1:(N-h+1)

for i=1:(N-h+1)

if k(i,j)~=0

e=i;

if h==1

f=j;

end;

if h~=1

f=1;

end;

break;

end;

end;

if k(i,j)~=0

break;

end;

end;

d=d+(e-1)*(N-1)+(f-1)*(N-1);

k=circshift(k, <-(e-1), -(f-1)>);

p=;

l=;

for g=h:(N-1)

for i=(g+1):N

if l(g,g)~=0

c=l(i,g)/l(g,g);

for j=g:N

l(i,j)=l(i,j)-(c*l(g,j));

end;

end;

if l(g,g)==0

break;

end;

end;

if l(g,g)==0

break;

end;

end;

end;

E=l(2:N,1:N,:);

F=l(1,1:N);

F=((-1)^d)*F;

G=;

dinhthuccon=1;

for i=1:N

dinhthuccon=dinhthuccon*G(i,i);

end;

B(o,t)=((-1)^(o+t))*dinhthuccon;

dinhthuccon=1;

l=D;

N=N+1;

end;

l=a;

end;%tim ma tran dinh thuc nhỏ

C=B;

for j=1:N % chuyen vi ma tran

for i=1:N

B(i,j)=C(j,i);

end;

end;

B=B/dinhthuccha;

5/Phân tích LU của ma trận A

function = LU(A)%tam giac duoi,tam giac tren,dinh thuc

if nargin "phai nhap vao ma tran can phan tich");

end;

a=A;

N = size(A,1);%1 la dong,2 la cot

m = size(A,2);

if N~=m

A = ("khong la ma tran vuong");

end;

if N==m

l=zeros(N);

u=zeros(N);

for i=1:N

l(i,i)=1;

end;

for j=1:N

u(1,j)=A(1,j);

end;

if u(1,1)== 0

error("khong the phan tich duoc, nhap lai ma tran khac");

end;

for i=2:N

l(i,1)=A(i,1)/u(1,1);

end;

for i=2:N-1

for j=i:N

sum=0;

for k=1:i-1

sum=sum+l(i,k)*u(k,j);

end;

u(i,j)=A(i,j)-sum;

end;

if u(i,i)==0

error("khong the phan tich duoc, nhap lai ma tran khac");

end;

for j=i+1:N

sum=0;

for k=1:i-1

sum=sum+l(j,k)*u(k,i);

end;

l(j,i)=(A(j,i)-sum)/u(i,i);

end;

end;

sum=0;

for k=1:N-1

sum=sum+l(N,k)*u(k,N);

end;

u(N,N)=A(N,N)-sum;

dinhthuc=1;

for i=1:N

dinhthuc = dinhthuc*u(i,i)*l(i,i);

end;

end;

A=a;

6/ Dùng quá trình trực giao Gram-Schmidt đưa họ độc lập tuyến tính về bọn họ trực chuẩn chỉnh

function orthonormal_basis = Gram_Schmidt_process(A)

matrix_size = size(A);

m = matrix_size(1,1);

n = matrix_size(1,2);

if A == zeros(m,n)

error("There does not exist any type of basis for the zero vector space.");

elseif n == 1

orthonormal_basis = A(1:m,1)/norm(A(1:m,1));

else

flag = 0;

if is_orthonormal_set(A) == 1

orthonormal_basis = A;

flag = 1;

over

if flag == 0;

if rank(A) ~= n

A = basis_col(A);

kết thúc

matrix_size = size(A);

m = matrix_size(1,1);

n = matrix_size(1,2);

orthonormal_basis = A(1:m,1)/norm(A(1:m,1));

for i = 2:n

u = A(1:m,i);

v = zeros(m,1);

for j = 1:(i - 1)

v = v - dot(u,orthonormal_basis(1:m,j))*orthonormal_basis(1:m,j);

end

v_ = u + v;

orthonormal_basis(1:m,i) = v_/norm(v_);

end

kết thúc

end

7/ chất vấn họ vécto có phải là họ trực giao

function result = is_orthogonal_set(A)

matrix_size = size(A);

m = matrix_size(1,1);

n = matrix_size(1,2);

tolerance = 10^-10;

if n == 1

result = 1;

else

orthogonal_counter = 0;

for i = 1:n

for j = 1:n

if i == j

else

if abs(dot(A(1:m,i),A(1:m,j)))

orthogonal_counter = orthogonal_counter + 1;

over

kết thúc

kết thúc

end

if orthogonal_counter == factorial(n)/factorial(n - 2);

result = 1;

else

result = 0;

over

end

8/ câu hỏi bình phương cực tiểu.

function c = fit(n, t, y)

% The least-squares approximating polynomial of degree n (n>=0).

% Coordinates of points to lớn be fitted are stored in the column vectors

% t & y. Coefficients of the approximating polynomial are stored in

% the vector c. Graphs of the data points và the least-squares

% approximating polynomial are also generated.

if ( n >= length(t))

error("Degree is too big")

end

v = fliplr(vander(t));

v = v(:,1:(n+1));

c = vy;

c = fliplr(c");

x = linspace(min(t),max(t));

w = polyval(c, x);

plot(t,y,"ro",x,w);

title(sprintf("The least-squares polynomial of degree n = %2.0f",n))

legend("data points","fitting polynomial")

Chạy thử công tác trên bằng phương pháp nhập:

a/ t = linspace(0, pi/2, 10); t = t";

b/ y = sin(2*t);

c/ c = fit(3, t, y)

9/ Ứng dụng trong kim chỉ nan mật mã.

Đoạn code sử dụng mã hóa tin tức

function B = code(s, A)

% String s is coded using a nonsingular matrix A.

% A coded message is stored in the vector B.

p = length(s);

= size(A);

b = double(s);

r = rem(p,n);

if r ~= 0

b = ";

end

b = reshape(b,n,length(b)/n);

B = A*b;

B = B(:)";

Đoạn code giải mã thông tin

function s = dcode(B, A)

% Coded message, stored in the vector B, is

% decoded with the aid of the nonsingular matrix A

% and is stored in the string s.

= size(A);

p = length(B);

B = reshape(B,n,p/n);

d = AB;

s = char(d(:)");

Chạy thử lịch trình trên:

a/ s=’Toi hoc dai so tuyen tinh’

b/ A=pascal(4) tạo ra ma trận khả nghịch tùy ý( trong trường hòa hợp này sử dụng mt pascal cấp 4)