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)
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 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) 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) 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
F=l(1,1:m);F=((-1)^d)*F;B=
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);
Chạy test chương trình bởi cácha/ x=<1 2 3 2>b/ y=<3 1 2 4>c/
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;
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=
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
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
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);
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.
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)