Пример #1
0
double MVector::innerProduct( MVector Vec_B )
{
	set<int> ID_AB = this->getKeys(); // get A-keys
	set<int> ID_B   = Vec_B.getKeys(); // get B-keys
	ID_AB.insert(ID_B.begin(), ID_B.end()); // merge AB-keys

	double result = 0.0;
	for (set<int>::iterator iter = ID_AB.begin(); iter != ID_AB.end(); iter++)
	{
		result += this->getElem(*iter) * Vec_B.getElem(*iter);
	}

	return result;
}
Пример #2
0
MVector MVector::subtract( MVector Vec_B )
{
	set<int> ID_AB = this->getKeys(); // get A-keys
	set<int> ID_B   = Vec_B.getKeys(); // get B-keys
	ID_AB.insert(ID_B.begin(), ID_B.end()); // merge AB-keys

	MVector result(this->DIM);
	for (set<int>::iterator iter = ID_AB.begin(); iter != ID_AB.end(); iter++)
	{
		double value = this->getElem(*iter) - Vec_B.getElem(*iter);
		result.setElem(*iter, value);
	}

	return result;
}