Câu 1: Nhân hai ma trận với nhau. Yêu cầu: Input: Cho phép nhập vào hai ma trận A và B. Chương trình phải kiểm tra phép nhân có thực hiện được hay không? Output: Ma trận tích. Câu 2: Tìm ma trận chuyển cơ sở từ E sang F. Yêu cầu: Input: cho hai cơ sở E và F. Output: ma trận chuyển cơ sở P. Câu 3: Đưa dạng toàn phương về chính tắc bằng biến đổi trực giao:
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH
KHOA KHOA HỌC ỨNG DỤNG
BỘ MÔN TOÁN ỨNG DỤNG
- -
ĐỀ TÀI BÀI TẬP LỚN
MÔN ĐẠI SỐ
TP HCM,Tháng 01/2013
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH
KHOA KHOA HỌC ỨNG DỤNG
BỘ MÔN TOÁN ỨNG DỤNG
BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI SỐ: 02
GVHD: NGUYỄN KIỀU DUNG
Khoa: Kĩ Thuật Địa Chất & Dầu Khí
Lớp: DC1201
Nhóm: 02
Nhóm sinh viên thực hiện:
Tp.HCM, tháng 01 năm 2013
Trang 3ĐỀ TÀI 2:
Câu 1: Nhân hai ma trận với nhau
Yêu cầu:
Input: Cho phép nhập vào hai ma trận A và B Chương trình phải kiểm tra
phép nhân có thực hiện được hay không?
Output: Ma trận tích
Cơ sở lý thuyết và thuật toán:
B1: Nhập ma trận A, B, kiểm tra xem A có nhân được với B không
B2: Dùng lệnh For
+ Cho i chạy từ 1 đến số dòng của A,bước nhảy là 1, gọi dòng i của A là m + Cho j chạy từ 1 đến số cột của B,bước nhảy là 1, gọi cột của j là n
Tích 2 ma trận được tính bằng phép nhân dòng và cột tương ứng
Nhận xét:
Chương trình của nhóm có thể giải quyết tất cả các trường hợp nhân 2 ma trận với nhau
Trang 4Code của nhóm:
function nhanmatran
A=input('Nhap ma tran A: ');%nhap ma tran A
B=input('Nhap ma tran B: ');%nhap ma tran B
while size(A,2)~=size(B,1);
disp ('A khong nhan duoc voi B');
A=input('Nhap lai ma tran A: ');
B=input('Nhap lai ma tran B: ');
end
for i = 1:1:size(A,1);%cho i chay tu 1 toi so dong cua A,buoc nhay la 1 m=A(i, :);%goi hang i cua A
for j= 1:1:size(B,2);%cho j chay tu 1 to so cot cua B, buoc nhay la 1 n=B(:,j); %goi cot j cua B
h(i,j)=m*n;%nhan hang i voi cot j
end
end
disp('Tich cua ma tran A va B la:');
disp(h);
nhanmatran
end
Trang 5Bài chạy thử:
Nhap ma tran A: [1 2 3;5 3 2;7 8 9] Nhap ma tran B: [1 3 4;3 4 5]
A khong nhan duoc voi B
Nhap lai ma tran A: [1 2 5;5 6 8;3 5 7] Nhap lai ma tran B: [2 5 7;7 5 9;1 1 4] Tich cua ma tran A va B la:
21 20 45
60 63 121
48 47 94
Trang 6Câu 2: Tìm ma trận chuyển cơ sở từ E sang F
Yêu cầu:
Input: cho hai cơ sở E và F
Output: ma trận chuyển cơ sở P
Cơ sở lý thuyết và thuật toán:
Nhập ma trận E,ma trận F
Kiểm tra xem E có là ma trận vuông và hạng của E có bằng số cột của nó không,nếu số cột của F không bằng hạng của E thì F không là cơ sở của E
Tìm thương của ma trận F đối với E
Ma trận chuyển cơ sở sẽ là chuyển vị của thương số đó
Kết luận:
Chương trình của nhóm có thể giải quyết tất cả các trường hợp chuyển
cơ sở của 2 ma trận
Trang 7CODE
function chuyencs
E=input('nhap ma tran E: ');
%nhap cs E
[m,n]=size(E);
%tim kich thuoc ma tran E
while m~=n || rank(E)~=n
%xem E co phai cs ko
disp('E khong phai la co so')
E=input('nhap lai ma tran E: ');
[m,n]=size(E);
end
F=input('nhap ma tran F: ');
%nhap ma tran F
[a,b]=size(F);
while b~=rank(F) || a~=b || a~=m
disp('F khong phai la co so')
F=input('nhap lai ma tran F: ');
[a,b]=size(F);
end
X=F/E;
%tim ma tran toa do cua F trong E X=X';
% chuyen vi ma tran X
disp('ma tran chuyen co so E sang F la:') disp(X)
end
Trang 8Bài chạy thử:
>> chuyencs
nhap ma tran E: [1 2 4;6 7 8;2 4 8]
E khong phai la co so
nhap lai ma tran E: [1 2 5;5 7 3;8 4 1] nhap ma tran F: [1 4 7;9 7 5;3 7 1]
ma tran chuyen co so E sang F la: 1.2313 0.6259 -0.5578
0.3673 0.3469 1.4082
-0.2585 0.8299 -0.4354
Trang 9Câu 3: Đưa dạng toàn phương về chính tắc bằng biến đổi trực giao:
Cơ sở lý thuyết và thuật toán:
Viết ma trận A của dạng toàn phương
Chéo hóa trực giao ma trận A
Kết luận dạng chính tắc cần tìm
Kết luận:
Chương trình của nhóm có thể giải quyết tất cả các trường hợp đưa toàn phương về chính tắc bằng biến đổi trực giao
Trang 10function dangtoanphuong
clc
clear all
syms x y1 y2 y3 ;
disp('Dua dang toan phuong ve dang chinh tac')
A=input('nhap ma tran toan phuong A=:');
[hangA cotA]=size(A);
if A'==A
matrancheo_x=eye(size(A)).*x;
lamda=solve(det(A-matrancheo_x));
ma_tran_cheo_hoa_D=diag(lamda);
disp('ma tran cheo hoa D=:')
disp(ma_tran_cheo_hoa_D)
switch hangA
case 2
Y=[y1 y2];
y=[y1;y2];
ma_tran_chinh_tac = (Y*ma_tran_cheo_hoa_D*y); case 3
Y=[y1 y2 y3];
y=[y1;y2;y3];
ma_tran_chinh_tac =(Y*ma_tran_cheo_hoa_D*y); end
Trang 11disp(' phuong trinh chinh tac cua dang toan phuong:')
disp(ma_tran_chinh_tac)
else
disp('ma tran A khong doi xung, khong phai dang toan phuong') disp('chay lai chuong trinh')
end
end
Trang 12Bài chạy thử:
Dua dang toan phuong ve dang chinh tac
nhap ma tran toan phuong A=:[3 -2 4;-2 6 2;4 2 3]
ma tran cheo hoa D=:
[ 7, 0, 0]
[ 0, 7, 0]
[ 0, 0, -2]
phuong trinh chinh tac cua dang toan phuong: 7*y1^2 + 7*y2^2 - 2*y3^2