;****************************************************************** ;Program: MatInv.lsp ;Name: Tihomir Bojanic, dipl.ing.geodezije ;Country: Serbia ;Sity: Novi Sad ;Adress: Sterijina 15/15 ;Mail: tikab@nadlanu.com ;Language: Serbian ;Date: 27.07.2007. ;****************************************************************** (defun MATINV(QQ / i j k n R H) ;inverzija matrice QQ (SHARP) (setq n (fix (sqrt (length QQ))) i 0) (while (< i n) (setq i (1+ i) QQ (setmat QQ i i (+ (getmat QQ i i) 1.0))) ) (setq k 0) (while (< k n) (setq k (1+ k) R (- (getmat QQ k k) 1) j 0) (while (< j n) (setq j (1+ j) QQ (setmat QQ k j (/ (getmat QQ k j) R))) ) (setq i 0) (while (< i n) (setq i (1+ i) H (getmat QQ i k) j 0) (if (/= i k)(progn (while (< j n) (setq j (1+ j) QQ (setmat QQ i j (- (getmat QQ i j) (* H (getmat QQ k j))))) ) )) ) ) (setq i 0) (while (< i n) (setq i (1+ i) QQ (setmat QQ i i (- (getmat QQ i i) 1.0))) ) QQ ) ;******************************************************************** ;Funkcija za matricni racun u programskom jeziku AutoLISP ;******************************************************************** (defun IJ(i j / ) ;formiranje asocijativnog clana matrice (atof (strcat (itoa i) "." (itoa j))) ) ;******************************************************************** (defun DIMAT(m n / i j AA) ;dimenzionisanje matrice AA(m,n) (setq i 0 AA '()) (while (< i m) (setq j 0 i (1+ i)) (while (< j n) (setq j (1+ j) AA (cons (list (IJ i j) 0.0) AA)) ) ) (reverse AA) ) ;******************************************************************** (defun GETMAT(AA i j / ) ;daje AA(i,j) matrice (cadr (assoc (IJ i j) AA)) ) ;******************************************************************** (defun SETMAT(AA i j BB / k) ;prima vrednost AA(i,j) matrice (setq k (IJ i j) AA (subst (list k BB) (assoc k AA) AA)) ) ;******************************************************************** (princ)