Bài tập lớn kỹ thuật lập trình ĐHBKHN - Pdf 22

DIEN 9 – K53 – DHBKHN
BÀI TẬP LỚN KỸ THUẬT LẬP TRÌNH
Đề bài:
Xây dựng một thư viện về ma trận bằng C++ cho phép cung cấp các chức năng để sử
dụng viết chương trình sau:
cin>>m;
mkq=(m1+m2)*(m3-m4); //m1,m2 là các ma trận đối tượng
cout<<mkq;

Viết chương trình minh họa việc sử dụng thư viện ma trận để khảo sát tính điều khiển
được với mô hình không gian trạng thái của đối tượng điều khiển.

Bài làm:

Xây dựng thư viện các thuật toán ma trận cần thiết:

mt.h
class mt
{
private:
int m,n;
float** p; /* Cap phat bo nho dong cho mang 2 chieu (con tro tro toi con tro)*/
public:
mt();
mt(int m1,int n1);
friend ostream& operator<< (ostream& os,const mt& x); /*Ham in ma tran*/
friend istream& operator>> (istream& is,mt &x); /*Ham nhap ma tan*/
friend mt operator+(const mt& x1,const mt& x2); /*Nap chong toan tu cong

for(int i=1;i<=m1+1;i++)
{
this->p[i]= new float [n1+1];
for(int j=1;j<n1+1;j++)
this->p[i][j]=0;
}

}
/**********************************************************************/
ostream& operator<< (ostream& os,const mt& x)
{
for (int i=1 ; i<= x.m ; ++i)
{
os << "\n" ;
for (int j=1; j<=x.n; ++j)
os << setw(6) << x.p[i][j] ;
}
os << "\n" ;
return os;
}
/**********************************************************************/
istream& operator>> (istream& is, mt& x)
{
cout << "So Hang: " ;
is >> x.m;
cout << "So Cot: " ;
is >> x.n;
x.p = new float* [x.m+1];
for (int i=1;i<x.m+1;i++)
{

mt operator-(const mt& x1,const mt& x2)
{

if (x1.m != x2.m || x1.n !=x2.n)
{ cout << "\n Khong thuc hien duoc do hai ma tran khong cung cap";
getch();
}
else
{
mt d(x1.m,x1.n);
for(int i=1; i<x1.m+1; i++)
for(int j=1; j<x1.n+1; j++)
d.p[i][j] = x1.p[i][j] - x2.p[i][j];
return d;
}
}
/**********************************************************************/
mt operator*(const mt& x1,const mt& x2)
{
if (x1.n != x2.m)
{ cout << "\n Khong thuc hien duoc do hai ma tran khong cung cap";
getch();
DIEN 9 – K53 – DHBKHN

}
else
{
mt d(x1.m,x2.n);
for (int i=1; i < x1.m+1; i++)
for (int j=1; j < x2.n+1; j++)

else
break;
}
for(i=1; i<=x.m; i++)
for(j=1; j<=x.n; j++)
{
if(x.p[i][j]!=0&&i==j)
r=i+1;
while(r<=x.m)
{
DIEN 9 – K53 – DHBKHN

float k=x.p[r][j]/x.p[i][j];
for(c=1; c<=x.n; c++)
x.p[r][c]=x.p[r][c]-k*x.p[i][c];
r++;
}
}
for(i=1; i<=x.m; i++)
{
for(j=1; j<=x.n; j++)
if(x.p[i][j]!=0)
break;
else
if(j==x.n)
rankmt ;
}
return rankmt;
}
/**********************************************************************/
Chương trình sử dụng thư viện trên:

Chương trình 1:
cin>>m;
mkq=(m1+m2)*(m3-m4); //m1,m2 là các ma trận đối tượng
cout<<mkq;

Main1.cpp
#include “mt.h”
#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
void main()
{
mt m1,m2,m3,m4,mkq;
cout << "\n Nhap ma tran M1 " <<"\n";
cin >> m1;
cout << "\n Nhap ma tran M2 " <<"\n";
cin >> m2;
cout << "\n Nhap ma tran M3 " <<"\n";
cin >> m3;
cout << "\n Nhap ma tran M4 " <<"\n";
cin >> m4;
mkq=(m1+m2)*(m3-m4);
cout << "\n Ma tran ket qua MKQ=(M1+M2)*(M3-M4): " <<"\n";
cout << mkq;


#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<iomanip.h>
void main()
{
mt a,b,p;
int n;
cout << "\n Nhap ma tran A " <<"\n";
cin >> a;
cout << "\n Nhap ma tran B " <<"\n";
cin >> b;
cout << "\n Nhap bac cua he " <<"\n";
cin >> n;
p=kalman(a,b);
cout << "\n Ma tran Kalman: " <<"\n" <<p;
if (Rank(p)!=n)
cout << "\nHe Khong Dieu Khien Duoc" << "\n";
else
cout << "\nHe Dieu Khien Duoc" << "\n"; }

Sau khi chạy ta có kết quả sau:
DIEN 9 – K53 – DHBKHN


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status