BỘ MÔN CƠ ĐIỆN TỬ GVHD TS NGUYỄN THÀNH HÙNG Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CƠ KHÍ BÀI TẬP LỚN KĨ THUẬT LẬP TRÌNH TRONG CƠ ĐIỆN TỬ Đề tài Chương tr.
Trang 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CƠ KHÍ
BÀI TẬP LỚN
KĨ THUẬT LẬP TRÌNH TRONG CƠ
ĐIỆN TỬ
Đề tài :Chương trình xử lý các phép tính liên quan đến ma trận
Giảng viên hướng dẫn : TS NGUYỄN THÀNH HÙNG
Sinh viên thực hiện:
1.
2.
3.
Hà Nội 5/2016
Trang 2
Mục lục PHẦN MỞ ĐẦU 3
PHẦN NỘI DUNG 4
I.Giới thiệu về ma trận và các kiến thức sử dụng trong project 4
1 Khái niệm ma trận 4
2 Độ lớn của ma trận 4
3 Ma trận chuyển vị 5
4 Phép cộng, trừ hai ma trận 5
5 Phép nhân hai ma trận 5
II Nội dung: 6
III Kết quả 13
Trang 3
PHẦN MỞ ĐẦU
C++ đã tồn tại và phát triển một khoảng thời gian dài và nó đã giải quyết được vô
số những thách thức trong ngành công nghiệp nó là ngôn ngữ chính quyết định trải nghiệm trên di động ngày nay Ngoài việc sử dụng trong các máy chủ hiệu suất cao và các middleware, C++ là một sự lựa chọn tuyệt vời cho việc phát triển phía client side trên hai nền tảng di động phổ biến nhất là Android và iOS và hai nền tảng desktop phổ biến nhất là Windows và Mac OS X Với việc giới thiệu các công
cụ phát triển gần đây hỗ trợ thiết kế trực quan cho các ứng dụng client,
middleware, và server side; C++ cực kỳ hiệu quả và khiến nó là một sự lựa chọn tuyệt vời để phát triển các ứng dụng hiện đại
Nhận thấy được tầm qua trọng của việc ứng dụng phần mềm C++ trong công việc, trong bài tập lớn này chúng em sử dụng phần mềm C++ để giải quyết và tính toán những phép toán cơ bản của ma trận dựa trên sự hướng dẫn và những kiến thức được cung cấp của giảng viên TS NGUYỄN THÀNH HÙNG
Trong project, nội dung yêu cầu công việc của chúng em như sau:
-Nhập vào hai ma trận
-Tính ma trận chuyển vị
-Thực hiện các phép tính cộng, trừ, nhân hai ma trận đó
Phương pháp giải quyết đề tài: sử dụng kiến thức về mảng và thuật toán để giải ma trận
Trang 4
PHẦN NỘI DUNG
I Giới thiệu về ma trận và các kiến thức sử dụng
trong project
1 Khái niệm ma trận
Ma trận là một mảng chữ nhật chứa các số hoặc những đối tượng toán học khác, mà có thể định nghĩa một số phép toán như cộng hoặc nhân trên các ma
các đại lượng vô hướng của F Các số, ký hiệu hay biểu thức trong ma trận
được gọi là các phần tử của nó Các đường theo phương ngang hoặc phương dọc chứa các phần tử trong ma trận được gọi tương ứng là hàng và cột
Kí hiệu:
Phần tử trong hàng thứ i và cột thứ j của ma trận A đôi khi được viết
thành i,j, (i,j), hoặc phần tử thứ (i,j) của ma trận, và cách viết hay gặp nhất đó
2 Độ lớn của ma trận
Độ lớn hay cỡ của ma trận được định nghĩa bằng số lượng hàng và cột mà
ma trận có Một ma trận m hàng và n cột được gọi là ma trận m x n hoặc ma trận m-nhân-n, trong khi m và n được gọi là chiều của nó
Trang 5
3 Ma trận chuyển vị
hang thành cột và cột thành hàng:
A i , j T =A j ,i
Ví dụ:
4 Phép cộng, trừ hai ma trận
Tổng ( hiệu ) của hai ma trận cùng kích thước m x n A và B là một ma trận
cùng kích thước với phần tử trong vị trí tương ứng bằng tổng ( hiệu ) của hai phần tử tương ứng của mỗi ma trận
Vi dụ:
5 Phép nhân hai ma trận
Phép nhân hai ma trận được xác định khi và chỉ khi số cột của ma
trận bên trái bằng số hàng của ma trận bên phải Nếu A là một ma trận m x
n và B là một ma trận n x p, thì ma trận tích AB là ma trận m x p với các
cột tương ứng trong B
Trang 6
II Nội dung:
Bước 1 : Nhập điều kiện vào cho 2 ma trận: số hàng + số cột
//Nhâp sô nghiêm cua phuong trinh
do
{
cout<< "nhap so hang cua ma tran A:";
cin>>m1;
cout<<endl;
cout<< "nhap so cot cua ma tran A:";
cin>>n1;
cout<<endl;
}while(n1<0&&n1%1!=0&&m1<0&&m1%1!=0);
//NHAP SO HANG COT MA TRAN B
do {
cout<< "nhap so hang cua ma tran B:";
cin>>m2;
cout<<endl;
cout<< "nhap so cot cua ma tran B:";
cin>>n2;
cout<<endl;
Trang 7
}while(m2<0&&m2%1!=0&&n2<0&&n2%1!=0);
Bước 2: Cấp phát động cho ma trận A,B, A+B, A-B, A*B
//CAP PHAT DONG CHO MA TRAN A,B
double **a =new double*[m1];//hang
for(int i=0;i<m1;i++) {
a[i]= new double[n1];//cot
} double **b =new double*[m2];//hang
for(int i=0;i<m2;i++) {
b[i]= new double[n2];//cot
} //CAP PHAT DONG CHO MA TRAN KET QUA cho phep cong double **c =new double*[m1];//hang
for(int i=0;i<m1;i++) {
c[i]= new double[n1];//cot
} //CAP PHAT DONG CHP PHEP NHAN HAI MA TRAN
double **d =new double*[m1];//hang
for(int i=0;i<m1;i++) {
d[i]= new double[n2];//cot
} //cap phat dong cho ma tran chuyen vi
double **e =new double*[n1];//hang
Trang 8
for(int i=0;i<n1;i++) {
e[i]= new double[m1];//cot
} double **f =new double*[n2];//hang
for(int i=0;i<n2;i++) {
f[i]= new double[m2];//cot
}
Bước 3 : Nhập dữ liệu cho ma trận A và B
cout<<"nhap vap ma tran A:"<<endl;
for(int i=0;i<m1;i++)
for(int j=0;j<n1;j++)
{
cout<<"A["<<i+1<<"]"<<"["<<j+1<<"]="; cin>>a[i][j];
}
cout<<"nhap vap ma tran B:"<<endl;
for(int i=0;i<m2;i++)
for(int j=0;j<n2;j++)
{
cout<<"B["<<i+1<<"]"<<"["<<j+1<<"]="; cin>>b[i][j];
}
Bước 4: In ra ma trận chuyển vị:
cout<<"ma tran chuyen vi cua A la:"<<endl;
for(int i=0;i<m1;i++)
Trang 9
for(int j=0;j<n1;j++)
{
e[j][i]=a[i][j];
}
for(int i=0;i<n1;i++)
{
for(int j=0;j<m1;j++)
{
}
cout<<endl;
}
cout<<"ma tran chuyen vi cua B la:"<<endl; for(int i=0;i<m2;i++)
for(int j=0;j<n2;j++)
{
f[j][i]=b[i][j];
}
for(int i=0;i<n2;i++)
{
for(int j=0;j<m2;j++)
{
Trang 10
}
cout<<endl;
}
Bước 5: In ra ma trận tổng, hiệu của hai ma trận:
//Phep tru hai ma tran
if(m1==m2&&n1==n2)
{
cout<<"ma tran A-B la:"<<endl;
for(int i=0;i<m1;i++) {
for(int j=0;j<n1;j++) {
cout<<a[i][j]-b[i][j]<<"\t"; }
cout<<endl;
}
}
else
cout<<"ko the thuc hien phep tru hai ma tran"<<endl; //Phep cong hai ma tran
if(m1==m2&&n1==n2)
{
cout<<"ma tran A+B la:"<<endl;
for(int i=0;i<m1;i++) {
Trang 11
for(int j=0;j<n1;j++) {
cout<<c[i][j]<<"\t";
} cout<<endl;
}
}
else
cout<<"ko the thuc hien phep cong hai ma tran"<<endl;
Bước 6: In ra ma trận tích hai ma trận:
//Phep nhan hai ma tran
for(int i=0;i<m1;i++)
for(int j=0;j<n2;j++)
{
}
if(n1==m2)
while(1)
{
}
Trang 12
if(n1==m2)
{
cout<<"ma tran AxB la:"<<endl;
for(int i=0;i<m1;i++)
{
}
}
else
cout<<"ko the thuc hien phep nhan hai ma tran"<<endl;
Trang 13
III Kết quả
Kết quả cuả chương trình khi nhập ma trận vuông cùng cấp:
Trang 14
Kết quả cuả chương trình khi nhập 2 ma trận vuông khác cấp:
Trang 15
Kết quả cuả chương trình khi nhập ma trận thỏa mãn điều kiện của phép nhân nhưng không thóa mãn điều kiện của phép cộng:
Trang 16
Kết quả cuả chương trình khi không thỏa mãn điều kiện của phép cộng và nhân: