[QGHG-it-dev-list] Zadatak 37 - racunanje determinante realne kvadratne matrice

Marko Vojinovic vmarko at ipb.ac.rs
Sun Dec 14 12:14:06 CET 2025


Implementirati staticku funkciju

   double real_valued_determinant ( vector<vector<double>> * matrix )

koja kao input dobija pointer na matricu (vektor vektora tipa double), i kao output vraca double koji predstavlja vrednost determinante date matrice.
Proveriti da li je pointer na matricu dobro definisan, i da li je matrica kvadratna --- ako ovo nije ispunjeno, prijaviti gresku log_report funkcijom
(vidi triangulator/library/include/input_and_output.hpp), i vratiti nulu kao rezultat. Ako matrica jeste kvadratna i ima dimenziju manju od kriticne,
izracunati determinantu pomocu Lajbnicove formule [1]. Ako matrica ima dimenziju jednaku ili vecu od kriticne, izracunati determinantu pomocu Gausovog
metoda eliminacije [2]. Gausov metod implementirati na kopiji matrice, tako da se originalna matrica ne menja.

Kriticnu dimenziju za determinantu definisati kao globalnu varijablu

   extern int critical_determinant_size

unutar triangulator_global namespace-a, i zadati joj default vrednost 10. Sve globalne varijable su definisane u global_vars.cpp i .hpp fajlovima.

Funkciju za racunanje determinante staviti u novi source fajl biblioteke, pod nazivom math_functions.cpp, zajedno sa odgovarajucim include fajlom
math_functions.hpp, koji stoje zajedno sa ostalim fajlovima unutar putanje za biblioteku (triangulator/library/src i triangulator/library/include).
Include-ovati math_functions.hpp unutar triangulator.hpp fajla na odgovarajucem mestu.

Unutar triangulator/test/ putanje zatim dodati nov fajl determinanttest.cpp (po ugledu na main.cpp), i u njemu zadati 3-4 matrice raznih dimenzija
(i kvadratne i pravougaone), izracunati njihove determinante, i ispisati i matrice i rezultujuce vrednosti determinanti na stdout.

Ukoliko imate bilo kakva pitanja ili sugestije vezane za ovaj zadatak, slobodno se javite.

:-)
Marko

[1] https://en.wikipedia.org/wiki/Leibniz_formula_for_determinants

[2] https://en.wikipedia.org/wiki/Gaussian_elimination#Pseudocode


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko at ipb.ac.rs




More information about the QGHG-it-dev-list mailing list