// =====================< EXCROUT.CPP >========================= // * Examples of FactoredCrout class * // * Must be assembled with: utility.obj, vector.obj, * // * matrix.obj, factored.obj, factplr.obj * // * Description: Chapter 15 * // * Scientific C++ Building Numerical Libraries * // * the Object-Oriented Way * // * by G. Buzzi-Ferraris * // * Addison-Wesley (1993) * // ************************************************************* // Prototype examples void Ex_Crout(void); #include #include #include #include #include #include "utility.hpp" #include "vector.hpp" #include "matrix.hpp" #include "factored.hpp" #include "factplr.hpp" int main(void) { bzzFileOut=stdout; Ex_Crout(); return 1; } // =========================================================== // ==================== EXAMPLES ========================= // =========================================================== void Ex_Crout(void) { { Message("\n\n\n ******* Crout Examples ***********\n"); FactoredCrout A(3,3, 60.,30.,20., 30.,20.,15., 20.,15.,12.); Vector bx(3,110.,65.,47.); Solve(A,&bx); bx.Print("Solution in bx"); A.Print("A"); if(A.Singular() == 1) Message("\nSingular Matrix \n"); else Message("\nNon-singular Matrix\n"); Message("\nCondition number: %e", A.ConditionNumber()); Message("\nDeterminant: %e", A.Determinant()); } { Message("\n*** Check HyperSolve ****\n"); const float a = 50.; float s[]={11.+a,10.+a,14.+ a, 12.+a,11+a,-13.+a, 14.+a,13.+a,-66+a}; FactoredCrout A(3,3,s); float w[]={3.*a+35,3.*a+10,3.*a-39.}; Vector bx(3,w); Solve(A,&bx); bx.Print("Solution with Solve"); Vector cx(3,w); HyperSolve(A,&cx); cx.Print("Solution with HyperSolve"); } }