資源簡介
自己編寫的matrix矩陣類
可以實現矩陣的加減法、乘法、求逆
求逆采用lup算法
可以實現矩陣的加減法、乘法、求逆
求逆采用lup算法
代碼片段和文件信息
#ifndef?matrix_cpp
#define?matrix_cpp
#include?
#include?
#include?
#include?“stdlib.h“
template?
inline?void?swap(type?&a?type?&b);
matrix::matrix(void)
{
line_n?=?0;
column_n?=?0;
p?=?NULL;
}
matrix::matrix(float?*mtrxint?ln?int?cn)
{
line_n?=?ln;
column_n?=?cn;
p?=?new?float[line_n?*?column_n];
if(!p)
{
? ??cout?<“Allocation?error!“?< ? ??exit(1);
? ??}?
for(int?i?=?0;?i? p[i]?=?mtrx[i];?????????????????????????
}
matrix::matrix(const?matrix?&obj)
{
line_n?=?obj.line_n;
column_n?=?obj.column_n;
p?=?new?float[line_n?*?column_n];
if(!p)
{
? ??cout?<“Allocation?error!“?< ? ??exit(1);
? ??}
?for(int?i?=?0;?i? ? ?p[i]?=?obj.p[i];
}?
ostream?&operator<<(ostream?&stream?const?matrix?&obj)
{
????float?n;
? ?for(int?i?=?0;?i?? ?{
? ?????n?=?obj.p[i];
? ?????if(floor(obj.p[i])?-?obj.p[i]??-mat::precision)
? ????? n?=?floor(obj.p[i]);
? ?else?if(ceil(obj.p[i])?-?obj.p[i]??-mat::precision)
? ? n?=?ceil(obj.p[i]);
? stream.precision(5);
? ?stream.width(12);
?? ?if(i?%?obj.column_n?==?0)??
?stream?< ??stream?< ?? ???}???????????????? ?? ??
??????stream?< return?stream;
}?
istream?&operator>>(istream?&stream?const?matrix?&obj)
{
}?
matrix?&matrix::operator=?(const?matrix?&obj)
{
????if(this?==?&obj)
???? return?*this;
????delete?[]p;
p?=?new?float[obj.line_n?*?obj.column_n];
line_n?=?obj.line_n;
column_n?=?obj.column_n;
if(!p)
{
cout?<“Allocation?error!“?< exit(1);
?? }
for(int?i?=?0;?i? {
? p[i]?=?obj.p[i];
// ? p[i]?=?abs(p[i]?-?floor(p[i])?// ? p[i]?=?abs(p[i]?-?ceil(p[i])?
? } ?
????????????
?return?*this;
}?
matrix?&matrix::operator=?(const?float?&n)
{
????for(int?i?=0;?i????? for(int?j?=?0;?j????? {
???? p[i?*?column_n?+?j]?=?n;
?????? }??
????return?*this;
????}
//matrix?matrix::operator=?(float?*mtrxint?ln?int?cn)
//{
// delete?p;
// p?=?new?float[ln?*?cn];
// line_n?=?ln;
// column_n?=?cn;
// if(!p)
// {
// cout?<“Allocation?error!“?<// exit(1);
//?? }
// ?for(int?i?=?0;?i?// ? p[i]?=?mtrx[i];
// ?return?*this;
//? }?
?
const?matrix?matrix::operator+?(const?matrix?&obj)
{
matrix?temp;
if(isempty(obj))
return?*this;?
if(line_n?!=?obj.line_n?||?column_n?!=?obj.column_n)
return?temp;
temp.p?=?new?float[line_n?*?column_n];
temp.line_n?=?line_n?;
temp.column_n?=??column_n;?
for(int?i?=?0;?i? ????temp.p[i]?=?this->p[i]?+?obj.p[i];
return?te
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2066??2008-10-12?14:18??matrix.h
?????文件??????10534??2008-10-15?09:13??matrix.cpp
-----------?---------??----------?-----??----
????????????????12600????????????????????2
評論
共有 條評論