?? equaltionset.cpp
字號:
#include "stdafx.h"
#include ".\equaltionset.h"
EqualtionSet::EqualtionSet(WORD wDimension_in,float * prAMatrix_in,float * prBVector_in,float * prXVector_out)
{
this->wDimension = wDimension_in;
this->prAMatrix = prAMatrix_in;
this->prBVector = prBVector_in;
//client should get result through preXVector_out pointer
this->prXVector = prXVector_out;
}
EqualtionSet::~EqualtionSet(void)
{
}
void EqualtionSet::Compute()
{
int i,j,k;
float ratio;
//compute line from 0 to wDimesion - 1
for(i = 0;i < wDimension;i ++)
//set diagonal-down triangle matrix to 0 by making row transformation
// on all the lines under line i
for(j = i + 1;j < wDimension; j++)
{
//compute ratio which can set line j's i element to zero
ratio = prAMatrix[j * wDimension + i] / prAMatrix[i * wDimension + i];
//use ration to set couterpart in B vector
prBVector[j] -= prBVector[i] * ratio;
//setting line j's i element to zero avoid float's error in computing
prAMatrix[j * wDimension + i] = 0.0;
//compute couterpart in the rest part on line j;
for(k = i+1;k < wDimension; k++)
prAMatrix[j * wDimension + k] -= prAMatrix[i * wDimension + k]* ratio;
}//end for j
//compute X vector's element from down to top
for(i = wDimension - 1; i >= 0; i--)
{
//substract the part that X's couterpart element has been computed
for(j = wDimension - 1; j > i; j--)
prBVector[i] -= prAMatrix[ i * wDimension + j] * prXVector[j];
//compute the X's couterpart element
prXVector[i] = prBVector[ i ] / prAMatrix[i * wDimension + i];
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -