Tải bản đầy đủ (.docx) (17 trang)

Bài tập lớn kĩ thuật lập trình trong cơ điện tử chương trình xử lý các phép tính liên quan đến ma trận

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (207.85 KB, 17 trang )

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 :
Sinh viên thực hiện:
STT
Họ và tên
1.
2.
3.

TS . NGUYỄN THÀNH HÙNG

MSSV

Hà Nội 5/2016

1

Mã lớp

Lớp


GVHD: TS. NGUYỄN THÀNH HÙNG


BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

Mục lục

2


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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

3


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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 tố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
trận. Hay gặp nhất đó là ma trận trên một trường F là một mảng chữ nhật chứa
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 đó

là ai,j, hay aij. Cách ký hiệu khác cho phần tử của ma trận là A[i,j] hay Ai,j

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ó

4


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử
3.

Ma trận chuyển vị

Chuyển vị của ma trận m x n A là ma trận n x m AT tạo ra bằng cách chuyển
hang thành cột và cột thành hàng:
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
phần tử được xác định theo tích vơ hướng của hàng tương ứng trong A với
cột tương ứng trong B

5


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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<cout<< "nhap so cot cua ma tran A:";
cin>>n1;
cout<}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<cout<< "nhap so cot cua ma tran B:";
cin>>n2;
cout<}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{
a[i]= new double[n1];//cot
}
double **b =new double*[m2];//hang
for(int i=0;i{
6


GVHD: TS. NGUYỄN THÀNH HÙNG


BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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{
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{
d[i]= new double[n2];//cot
}
//cap phat dong cho ma tran chuyen vi
double **e =new double*[n1];//hang
for(int i=0;i{
e[i]= new double[m1];//cot
}
double **f =new double*[n2];//hang
for(int i=0;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:"<7


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

for(int i=0;ifor(int j=0;j{
cout<<"A["<cin>>a[i][j];
}
cout<<"nhap vap ma tran B:"<for(int i=0;ifor(int j=0;j{
cout<<"B["<cin>>b[i][j];
}
Bước 4: In ra ma trận chuyển vị:
cout<<"ma tran chuyen vi cua A la:"<for(int i=0;ifor(int j=0;j{
e[j][i]=a[i][j];
}
for(int i=0;i

{
for(int j=0;j{
cout<}
8


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

cout<
}
cout<<"ma tran chuyen vi cua B la:"<for(int i=0;ifor(int j=0;j{
f[j][i]=b[i][j];
}
for(int i=0;i{
for(int j=0;j{
cout<}
cout<

}
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:"<for(int i=0;i9


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

{
for(int j=0;j{
cout<}
cout<}
}
else
cout<<"ko the thuc hien phep tru hai ma tran"<//Phep cong hai ma tran
if(m1==m2&&n1==n2)
{
cout<<"ma tran A+B la:"<for(int i=0;i

{
for(int j=0;j{
cout<}
cout<}
}
else
cout<<"ko the thuc hien phep cong hai ma tran"<Bước 6: In ra ma trận tích hai ma trận:
//Phep nhan hai ma tran
10


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

for(int i=0;ifor(int j=0;j{
d[i][j]=0;
}
if(n1==m2)
while(1)
{
if(i1==m1)
break;

for(int i=0;i{
d[i1][j1]=d[i1][j1]+a[i1][i]*b[i][j1];
}
j1++;
if(j1==m1)
{
j1=0;
i1++;
}
}
if(n1==m2)
{
cout<<"ma tran AxB la:"<for(int i=0;i{
for(int j=0;j{
cout<}
cout<}
}
else
cout<<"ko the thuc hien phep nhan hai ma tran"<
11


GVHD: TS. NGUYỄN THÀNH HÙNG


BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

III . Kết quả
Kết quả cuả chương trình khi nhập ma trận vuông cùng cấp:

12


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

Kết quả cuả chương trình khi nhập 2 ma trận vng khác cấp:

13


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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:

14



GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

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:

15


GVHD: TS. NGUYỄN THÀNH HÙNG

BỘ MÔN CƠ ĐIỆN TỬ
Bài tập lớn Kỹ thuật lập trình trong Cơ diện tử

16



×