2.16 Tìm giá trị nhỏ nhất và lớn số 1 trong ma trận

Cho ma trận X = <1 2 3; 4 5 6; 7 8 9>. Hãy a. Tìm giá bán trị lớn nhất và giá bán trị nhỏ tuổi nhất theo hàng. B. Tìm giá trị lớn số 1 và nhỏ tuổi nhất theo...

*



Bạn đang xem: Chuyển vị ma trận trong matlab

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

• chia cách các phần tử của ma trận bởi dấu “,” hay dấu trống

• sử dụng dấu “;” để dứt một sản phẩm

• bao các phần tử của ma trận bằng cặp lố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 làm chuyển vị một ma trận thực và đưa vị phối hợp một ma trận

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

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 ở mặt 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 hoàn toàn có thể tham chiếu tới phần tử của mảng dựa vào một chỉ số, lấy một ví dụ A(k) cùng với k

= i + (j - 1)m. Giải pháp này thường dùng để tham chiếu vec tơ hàng xuất xắc 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ừ các cột của ma trận

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

Để xác minh 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) xuất xắc 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à 1 trong những toán tử đặc trưng của MATLAB. Nó xuất

hiện ở nhiều dạng khác nhau. Ví dụ: Lệnh :

1:10

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

Lệnh: 100: -7: 50

tạo một dãy số từ 100 cho 51, giảm 7 mỗi lần.

Các biểu thức chỉ số tham chiếu tới một trong những 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. Dường như toán tử “:” tham chiếu tới tất cả các

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

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

tạo ra ma trận B từ ma trận A bằng cách đổi sản phẩm tự các cột từ <1 2 3> thành <1 3 2>

Tạo ma trận bởi hàm gồm sẵn: MATLAB cung cấp một số hàm nhằm tạo những

ma trận cơ bản:

zeros tạo nên ma trận mà những phần tửđều là zeros

z = zeros(2, 4)

ones tạo ra ma trận mà các phần tửđều là 1

x = ones(2, 3)

y = 5*ones(2, 2)

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

d = rand(4, 4)

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

e = randn(3, 3)

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

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

pascal(n) tạo ra ma trận khẳng định dương cấp cho n cơ mà các thành phần lấy từ bỏ tam giác Pascal.

Lệnh :

pascal(4) tạo ra ma trận xác minh dương cung cấp 4

- eye(n) tạo thành ma trận đơn vị chức năng cấp n

Lệnh:

eye(3) sản xuất ma trận đơn vị cấp 3

- eye(m, n) tạo ra ma trận đối kháng vị mở rộng

Lệnh:

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

Ta có thể lắp ghép(concatenation) các ma trận bao gồm 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ới cột : Ta rất có thể xoá hàng với cột từ bỏ 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 cập nhật ma trận:

cùng : X= A + B

Trừ : X= A - B

Nhân : X= A * B

: X.*A nhân các phần tử tương ứng với nhau

chia : X = A/B lúc đó X*B = A

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

: X=A./B chia các phần tử tương ứng cùng nhau

Luỹ thừa : X = A^2

: X = A.^2

Nghịch hòn đả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 bộ phận trên đường chéo chính ma trận A : s = trace(A)

Phần 2.

Yêu cầu: Sinh viên ko được dùng những hàm sẵn tất cả trong matlab nhằm viết chương trình.

Các đề tài.

1/ Dùng những phép đổi khác sơ cung cấp đưa ma trận về dạng cầu thang và tra cứu hạng của ma trận A tùy ý.

Yêu cầu: Input: có thể chấp nhận được nhập vào một ma trận tùy ý. Output: Ma trận lan can và r(A).

2/ Nhân nhị ma trận với nhau.

Yêu cầu: Input: chất nhận được nhập vào nhì ma trận A với B. Chương trình phải 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 trong 1 ma trận vuông tùy ý với số tự nhiên và thoải mái m. Output: một ma trận Am.

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

Yêu cầu: Input: có thể chấp nhận được 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 những bù đại số.

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

6/ search 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/ tra cứu ma trận nghịch đảo của ma trận vuông A bằng chuyển đổi sơ cấp đối với hàng đến ma trận

*
.

Yêu cầu: Input: chất nhận được nhập vào trong 1 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/ kiếm tìm ma trận nghịch hòn đảo bằng phương pháp

*
.

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

9/ so sánh LU của ma trận A. Phân tích PA=LU.

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

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

10/ so với Cholesky:

*
, trong những số ấy A là ma trận đối xứng, xác định dương.

11/ Giải hệ phương trình bằng phép đổi khác Gauss.

Yêu cầu: Input: chất nhận được nhập vào trong 1 ma trận tùy ý A cùng ma trận b. Output: Nghiệm của hệ ở dạng vécto.

Ma trận A và b rất có thể được hiểu từ tệp tin *.txt

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

*
bởi công thức
*
,

trong đó

*
.

13/ tìm tọa độ của một vécto trong một các đại lý cho trước.

Yêu cầu: Input: cho một vécto và một cơ sở E. Output: tọa độ của vécto trong cửa hàng E.

14/ search ma trận chuyển đại lý từ E sang F.

Yêu cầu: Input: mang đến hai các đại lý E với F. Output: ma trận gửi cơ sở phường

15/ kiếm tìm hạng của mình vécto.

Yêu cầu: Input: cho 1 họ vécto. Output: hạng của mình vécto này và những vécto chủ quyền tuyến tính buổi tối đa của mình

16/ khám nghiệm tính độc lập tuyến tính, phụ thuộc vào tuyến tính của họ vécto. Chất vấn vécto x có là tổng hợp tuyến tính của mình vécto M hay không?

17/ kiếm tìm cơ sở, số chiều của không gian con sinh ra vày họ vécto M.

Yêu cầu: Input: được cho phép nhập vào trong 1 họ vécto. Output: Số chiều và các đại lý của không khí con sinh ra vày M.

18/ Tìm cơ sở và số chiều của không gian nghiệm của hệ thuần tuyệt nhất AX = 0.

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

19/ tìm số chiều và các đại lý 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 cùng G, hoặc nhập hệ pt). Output: số chiều và các đại lý của giao và tổng.

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

Yêu cầu: Input: cho phép nhập vào một trong những họ vécto có m vécto độc lập tuyến tính (hoặc chúng ta vécto bất kỳ, chương trình yêu cầu kiểm tra tính chủ quyền tuyến tính của mình vécto). Output: Họ tất cả m vécto trực giao, hoàn toàn có thể trực chuẩn.

21/ so với QR của ma trận vuông A bằng quá trình Gram – Schmidt.

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

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

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

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

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

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

26/ mang lại ma trận vuông A. Tìm kiếm trị riêng, vécto riêng biệt của ma trận A.

27/ cho ma trận vuông A. Bình chọn tính chéo cánh hóa của A. Nếu như được, search ma trận phường và ma trận D.

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

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

30/ mang đến dạng toàn phương . đánh giá dạng toàn phương khẳng định dương tuyệt không.

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

32/ cho 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 hòn đảo trong định hướng 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ố tuyến tính trong định hướng đồ họa.

Phần 3. Những chương trình tham khảo. Các chương trình này được tải về từ mạng hoặc đa phần do sv viết bắt buộc chưa vững chắc là buổi tối ưu.

1/ dùng chuyển đổi sơ cung cấp đưa ma trận về dạng cầu 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 biến đổi sơ cấp đưa về dạng bậc thang, tính hạng cùng 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 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 thay doi

F=l(1,1:m);

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

B=;%ma tran B cố gắng the boi B ma xet su cố gắng 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 pháp 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ì chưng khong phu hop nhap lai b");

end;

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

end;

end;

if M>n

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

end;

if M~=N error ("kich co he so tu vì chưng 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 phương 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 bởi

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 bởi 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 khu vực 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:
Khi Mà Em Rời Xa Vòng Tay Của Riêng Anh, Lời Bài Hát Mơ

A

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

end;

u=0;

if r
A==(m-1) %giai nghiem he theo phuong phap khu 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/ search 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 gửi họ độc lập tuyến tính về chúng ta trực chuẩn

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;

end

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

over

v_ = u + v;

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

over

end

end

7/ kiểm tra họ vécto liệu 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

end

end

end

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

result = 1;

else

result = 0;

over

end

8/ việc bình phương rất tiểu.

function c = fit(n, t, y)

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

% Coordinates of points khổng lồ be fitted are stored in the column vectors

% t và 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")

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ử lịch 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 lý thuyết 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 thuật 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ử công tác 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 ý( vào trường hợp này dùng mt pascal cung cấp 4)