MCPcopy Create free account
hub / github.com/bgrimstad/splinter / getErrorNorms

Function getErrorNorms

test/testingutilities.cpp:785–854  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

783}
784
785DenseMatrix getErrorNorms(const Function *exact, const Function *approx, const std::vector<std::vector<double>> &points)
786{
787 assert(exact->getNumVariables() == approx->getNumVariables());
788
789 DenseVector normOneValVec(points.size());
790 DenseVector normTwoValVec(points.size());
791 DenseVector normInfValVec(points.size());
792
793 DenseVector normOneJacVec(points.size());
794 DenseVector normTwoJacVec(points.size());
795 DenseVector normInfJacVec(points.size());
796
797 DenseVector normOneHesVec(points.size());
798 DenseVector normTwoHesVec(points.size());
799 DenseVector normInfHesVec(points.size());
800
801 int i = 0;
802 for (auto &point : points) {
803 DenseVector x = vecToDense(point);
804
805 {
806 DenseMatrix exactValue(1,1);
807 exactValue(0,0) = exact->eval(x);
808 DenseMatrix approxValue(1,1);
809 approxValue(0,0) = approx->eval(x);
810 DenseMatrix error = exactValue - approxValue;
811
812 normOneValVec(i) = getOneNorm(error);
813 normTwoValVec(i) = getTwoNorm(error);
814 normInfValVec(i) = getInfNorm(error);
815 }
816
817 {
818 auto exactJacobian = exact->evalJacobian(x);
819 auto approxJacobian = approx->evalJacobian(x);
820 auto errorJacobian = exactJacobian - approxJacobian;
821
822 normOneJacVec(i) = getOneNorm(errorJacobian);
823 normTwoJacVec(i) = getTwoNorm(errorJacobian);
824 normInfJacVec(i) = getInfNorm(errorJacobian);
825 }
826
827 {
828 auto exactHessian = exact->evalHessian(x);
829 auto approxHessian = approx->evalHessian(x);
830 auto errorHessian = exactHessian - approxHessian;
831
832 normOneHesVec(i) = getOneNorm(errorHessian);
833 normTwoHesVec(i) = getTwoNorm(errorHessian);
834 normInfHesVec(i) = getInfNorm(errorHessian);
835 }
836
837 i++;
838 }
839
840 DenseMatrix errorNorms(3,3);
841 errorNorms(0,0) = getOneNorm(normOneValVec);
842 errorNorms(0,1) = getTwoNorm(normTwoValVec);

Callers 1

testApproximationFunction · 0.85

Calls 7

vecToDenseFunction · 0.85
getOneNormFunction · 0.85
getTwoNormFunction · 0.85
getInfNormFunction · 0.85
evalMethod · 0.45
evalJacobianMethod · 0.45
evalHessianMethod · 0.45

Tested by

no test coverage detected