?? mathmetric.cpp
字號:
if (is[k]!=k)
for (j=0; j<=n-1; j++)
{
u=k*n+j;
v=is[k]*n+j;
p=a[u];
a[u]=a[v];
a[v]=p;
}
if (js[k]!=k)
for (i=0; i<=n-1; i++)
{
u=i*n+k;
v=i*n+js[k];
p=a[u];
a[u]=a[v];
a[v]=p;
}
l=k*n+k;
a[l]=1.0/a[l];
for (j=0; j<=n-1; j++)
if (j!=k)
{
u=k*n+j;
a[u]=a[u]*a[l];
}
for (i=0; i<=n-1; i++)
if (i!=k)
for (j=0; j<=n-1; j++)
if (j!=k)
{ u=i*n+j;
a[u]=a[u]-a[i*n+k]*a[k*n+j];
}
for (i=0; i<=n-1; i++)
if (i!=k)
{ u=i*n+k; a[u]=-a[u]*a[l];}
}
for (k=n-1; k>=0; k--)
{ if (js[k]!=k)
for (j=0; j<=n-1; j++)
{ u=k*n+j; v=js[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (is[k]!=k)
for (i=0; i<=n-1; i++)
{ u=i*n+k; v=i*n+is[k];
p=a[u]; a[u]=a[v]; a[v]=p;
}
}
free(is);
free(js);
return true;
}
/**********************************************************
函數名:operator +
功能:對矩陣重載"+"運算符
入口參數:Metric1:加數矩陣
出口參數:*result:相加后所得結果
說明:結果也是一個矩陣,其維數為第被加矩陣的行,加矩陣的列
**********************************************************/
MathMetric & MathMetric::operator +(MathMetric &Metric1)
{
MathMetric *result;
if((Metric1.clum!=clum)||(Metric1.line!=line))
return *(MathMetric*)NULL;
result=new MathMetric(this->data,line,clum);
for(unsigned int i=0;i<line*clum;i++)
result->data[i]+=Metric1.data[i];
return *result;
}
/**********************************************************
函數名:operator -
功能:對矩陣重載"-"運算符
入口參數:Metric1:減數矩陣
出口參數:*result:相減后所得結果
說明:結果也是一個矩陣,其維數為第被減矩陣的行,減矩陣的列
**********************************************************/
MathMetric & MathMetric::operator -(MathMetric &Metric1)
{
MathMetric *result;
if((Metric1.clum!=clum)||(Metric1.line!=line))
return *(MathMetric*)NULL;
result=new MathMetric(this->data,line,clum);
for(unsigned int i=0;i<line*clum;i++)
result->data[i]-=Metric1.data[i];
return *result;
}
/**********************************************************
函數名:operator -
功能:對矩陣重載"-"運算符
入口參數:Metric1:減數矩陣
出口參數:*result:相減后所得結果
說明:結果也是一個矩陣,其維數為第被減矩陣的行,減矩陣的列
**********************************************************/
MathMetric & MathMetric::operator -(void)
{
MathMetric *result;
result=new MathMetric(this->data,line,clum);
for(unsigned int i=0;i<line*clum;i++)
result->data[i]=-result->data[i];
return *result;
}
/**********************************************************
函數名:operator *
功能:對矩陣重載"*"運算符
入口參數:Metric1:除數矩陣
出口參數:*result:相乘后所得結果
說明:結果也是一個矩陣,其維數為第被乘矩陣的行,乘矩陣的列
**********************************************************/
MathMetric & MathMetric::operator *(MathMetric &Metric1)
{
MathMetric *result;
double *res;
if(clum!=Metric1.line)
return *(MathMetric*)NULL;
res=multiple(this->data,line,clum,Metric1.data,Metric1.line,Metric1.clum);
result=new MathMetric(res,line,Metric1.clum);
free(res);
return *result;
}
/**********************************************************
函數名:operator /
功能:對矩陣重載/運算符
入口參數:Metric1:除數矩陣
出口參數:*result:相除后所得結果
說明:結果也是一個矩陣,其維數為第被除矩陣的行,除矩陣的列
**********************************************************/
MathMetric & MathMetric::operator /(MathMetric &Metric1)
{
double *res;
MathMetric *result=NULL;
MathMetric temp(Metric1.data,Metric1.line,Metric1.clum);
if((clum!=Metric1.line)&&(Metric1.line==Metric1.clum))
return *(MathMetric*)NULL;
inverse(temp.data,temp.line);
res=multiple(this->data,line,clum,temp.data,temp.line,temp.clum);
result=new MathMetric(res,this->line,temp.clum);
return *result;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
bool MathMetric::print()
{
char *buf;
buf=(char*)malloc(line*clum*20);
if(!buf)
return false;
memset(buf,'\0',line*clum*20);
for(unsigned int i=0;i<line;i++)
{
for(unsigned int n=0;n<clum;n++)
{
sprintf(buf+strlen(buf),"%.4f ",this->data[i*clum+n]);
}
sprintf(buf+strlen(buf),"\n");
}
AfxMessageBox(buf);
free(buf);
return true;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
unsigned MathMetric::get_line()
{
return this->line;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
unsigned MathMetric::get_colum()
{
return this->clum;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
void MathMetric::set_line(unsigned int line)
{
this->line=line;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
void MathMetric::set_colum(unsigned int colum)
{
this->clum=colum;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
double* MathMetric::get_data()
{
return this->data;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
void MathMetric::set_data(double *data)
{
this->data=data;
}
/**********************************************************
函數名:print
功能:將矩陣與文本形式輸出,矩陣一行輸出一列,每個元素用tab分開
入口參數:無
出口參數:成功返回true,失敗返回false
說明:
**********************************************************/
bool MathMetric::reverse()
{
return reverse(this->data,this->line,this->clum);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -