本文整理汇总了C++中TMatrix::getColumn方法的典型用法代码示例。如果您正苦于以下问题:C++ TMatrix::getColumn方法的具体用法?C++ TMatrix::getColumn怎么用?C++ TMatrix::getColumn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TMatrix
的用法示例。
在下文中一共展示了TMatrix::getColumn方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Inverse
TMatrix* TMatrix::Inverse()
{
bool Simmetr=false;
for(int i=0;i<this->getHeight();i++)
for(int j=0;j<this->getHeight();j++)
{
if(this->data[i][j]!=this->data[j][i])
Simmetr=false;
}
TMatrix* ResultMatr;
ResultMatr=new TMatrix(this->getWidth(),this->getHeight());
// if(Simmetr=false)
//{
TVect* CurrColumn=NULL;
ResultMatr->data=this->data;
double *n=new double[this->Width];
for(int i=0; i<this->Width; i++)
{
for(int j=0; j<this->Height; j++)
if(i==j)
n[j]=1;
else
n[j]=0;
ResultMatr->addColumn(new TVect(this->Height,n));
}
for(int i=0; i<ResultMatr->getHeight();i++)
{
fprintf(stderr, "\n");
for(int j=0;j<ResultMatr->getWidth();j++)
fprintf(stderr,"% 6.2f ",ResultMatr->getElement(j,i));
}
fprintf(stderr, "\n");
//////////Получение верхней треугольной матрицы
for(int k=0;k<this->getHeight();k++)
{
int i=0;
int j=k;
bool b=false;
while(i<this->getWidth() && b==false)
{
while(b==false && j<this->getHeight())
{
if(ResultMatr->data[i][j]!=0)
{
CurrColumn=ResultMatr->getColumn(i);
b=true;
}
j++;
}
i++;
j=k;
}
if(CurrColumn->getElement(k)==0)
{
for(int i=1;i<this->getWidth();i++)
if(CurrColumn->getElement(i)!=0)
{
ResultMatr->RowReverse(k,i);
CurrColumn=ResultMatr->getRow(k);
break;
}
}
ResultMatr->setRow(k,*(ResultMatr->getRow(k))*(1/CurrColumn->getElement(k)));
for(int i=k+1;i<this->getHeight();i++)
ResultMatr->setRow(i,
*(ResultMatr->getRow(i))-*(*(ResultMatr->getRow(k))*ResultMatr->getRow(i)->getElement(k)));
for(int i=0; i<ResultMatr->getHeight();i++)
{
fprintf(stderr, "\n");
for(int j=0;j<ResultMatr->getWidth();j++)
fprintf(stderr,"% 6.2f ",ResultMatr->getElement(j,i));
}
fprintf(stderr, "\n");
}
for(int k=2;k<=this->getHeight();k++)
{
for(int i=this->getHeight()-k;i>=0;i--)
ResultMatr->setRow(i,
*(ResultMatr->getRow(i))-*(*(ResultMatr->getRow(this->getHeight()-k+1))*ResultMatr->getRow(i)->getElement(this->getWidth()-k+1)));
}
for(int i=0; i<ResultMatr->getHeight();i++)
{
fprintf(stderr, "\n");
for(int j=0;j<ResultMatr->getWidth();j++)
fprintf(stderr,"% 6.2f ",ResultMatr->getElement(j,i));
}
fprintf(stderr, "\n");
for(int i=0;i<this->Height;i++)
ResultMatr->RemoveColumn(0);
// }
// else
// {
// double buff;
// for(int i=0;i<this->getHeight();i++)
// {
// for(int j=0;j<i;j++)
// {
//.........这里部分代码省略.........