;МЕНЯЕМ J СТРОКУ И НАЙДЕННУЮ
(DO
((K 0))
((>= K SIZE))
(SETF (AREF R K) (AREF MATRIX J K))
(SETF (AREF MATRIX J K) (AREF MATRIX II K))
(SETF (AREF II K) (AREF R K))
(SETQ K (+ K 1))
)
)
)
;ПРЯМОЙ ХОД
;ПРИВЕДЕНИЕ К ТРЕУГОЛЬНОМУ ТИПУ
(DO
((I (+ J 1)))
((>= I SIZE))
;ЕСЛИ (AREF MATR I J)=0 ДЕЛАТЬ НИЧЕГО НЕ НАДО
(IF (/= (AREF MATRIX I J) 0)
(PROGN
(SETQ PAR (/ (AREF MATRIX I J) (AREF MATRIX J J)))
(DO
((JJ J))
((>= JJ SIZE))
(SETF (AREF MATRIX J JJ) (* (AREF MATRIX J JJ) PAR))
(SETF (AREF MATRIX I JJ) (- (AREF MATRIX I JJ) (AREF MATRIX J JJ)))
(SETF (AREF MATRIX J JJ) (/ (AREF MATRIX J JJ) PAR))
(SETQ JJ (+ JJ 1))
)
)
)
(SETQ I (+ I 1))
)
(SETQ J (+ J 1))
)
(IF (/= T_ 0)
(PROGN
(DO
((I 0))
((>= I SIZE))
(SETQ DET (* DET (AREF MATRIX I I)))
(SETQ I (+ I 1))
)
)
;ИНАЧЕ
(SETQ DET 0)
)
;ВОЗВРАЩАЕМ ОПРЕДЕЛИТЕЛЬ
DET
)
(SETQ N 0)
(SETQ INPUT_STREAM (OPEN " D:\MATRIX.TXT" :DIRECTION :INPUT))
;РАЗМЕР МАТРИЦЫ
(SETF N (READ INPUT_STREAM))
(SETQ MATR (MAKE-ARRAY (LIST N N) :ELEMENT-TYPE 'FLOAT :INITIAL-ELEMENT 0))
(SETF MATR (READ INPUT_STREAM))
(CLOSE INPUT_STREAM)
(SETQ DETERM (DETERMINANT MATR N))
;РЕЗУЛЬТАТ
(SETQ OUTPUT_STREAM (OPEN " D:\DETERMINANT.TXT" :DIRECTION :OUTPUT))
;ЗАПИСЫВАЕМ ОПРЕДЕЛИТЕЛЬ
(PRINT 'DETERMINANT OUTPUT_STREAM)
(PRINT DETERM OUTPUT_STREAM)
;ЗАКРЫВАЕМ ФАЙЛ
(TERPRI OUTPUT_STREAM)
(CLOSE OUTPUT_STREAM)
5 Пример выполнения программы
Пример 1.
Рисунок 2 – Входные данные
Рисунок 3 – Выходные данные
Пример 2.
Рисунок 4 – Входные данные
Рисунок 5 – Выходные данные
Пример 3.
Рисунок 6 – Входные данные
Рисунок 7 – Выходные данные
Заключение
Проблема повышения качества вычислений, как несоответствие между желаемым и действительным, существует и будет существовать в дальнейшем. Ее решению будет содействовать развитие информационных технологий, которое заключается как в совершенствовании методов организации информационных процессов, так и их реализации с помощью конкретных инструментов – сред и языков программирования.
Итогом работы можно считать созданную функциональную модель для вычисления определителя методом исключения Гаусса. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.
Список использованных источников и литературы
1. Бронштейн, И.Н. Справочник по математике для инженеров и учащихся втузов [Текст] / И.Н. Бронштейн, К.А. Семендяев. – М.: Наука, 2007. – 708 с.
2. Васильев, Ф.П. Численные методы решения экстремальных задач. [Текст] / Ф.П. Васильев – М.: Наука, 2002. C. 415.
3. Калиткин, Н.Н. Численные методы. [Электронный ресурс] / Н.Н. Калиткин. – М.: Питер, 2001. С. 504.
4. Кнут, Д.Э. Искусство программирования. Основные алгоритмы [Текст] / Д.Э. Кнут. – М.: Вильямс, 2007. Т.1. – 712 с.
5. Метод Гаусса [Электронный ресурс] – Режим доступа: http://www.wikipedia.org/wiki/Метод_Гаусса.
6. Степанов, П.А. Функциональное программирование на языке Lisp. [Электронный ресурс] / П.А.Степанов, А.В. Бржезовский. – М.: ГУАП, 2003. С. 79.
7. Симанков, В.С. Основы функционального программирования [Текст] / В.С. Симанков, Т.Т. Зангиев, И.В. Зайцев. – Краснодар: КубГТУ, 2002. – 160 с.
8. Хювенен Э. Мир Лиспа [Текст] / Э. Хювенен, Й. Сеппянен. – М.: Мир, 1990. – 460 с.