OPEN(UNIT=3,FILE=Z2,STATUS='NEW')
WRITE(3,360)M,((A(I,J),J=1,M),I=1,M)
360 FORMAT(10X,'ВЫХОДНОЙ Ф А Й Л П Р О Г Р АМ М Ы GAUS'//
*10X,'ВХОДНЫЕ ДАННЫЕ:'/'Порядок системы: М=',I2/
*'Матрица коэффициентов A(M,M) системы:'/(10F8.4))
WRITE(3,370)(B(I),I=1,M)
370 FORMAT(Матрица правых частей В(M):'/(10F8.4))
CALL GAUSS(M,A,B)
WRITE(3,352)(B(I),I=1,M)
352 FORMAT(/10X,'РЕЗУЛЬТАТЫ РАСЧЕТА:'/6(G13.6))
CLOSE(UNIT=3)
C СООБЩЕНИЕ НА ЭКРАН ДИСПЛЕЯ О ЗАВЕРШЕНИИ РАБОТЫ
WRITE(5,353) Z2
353 FORMAT(1X,'ПРОГРАММА ''GAUS'' РАБОТУ ОКОНЧИЛА. РЕЗУЛЬТАТЫ РАСЧЕТА
* ЗАПИСАНЫ НА ДИСК В ФАЙЛ '/1X,A8)
STOP
END
C ПОДПРОГРАММА РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ AX=B
C МЕТОДАМ ГАУССА
SUBROUTINE GAUSS(M,A,B)
C М-ПОРЯДОК СИСТЕМЫ. А-КВАДРАТНАЯ МАТРИЦА КОЭФФИЦИЕНТОВ СИСТЕМЫ.
C (ДОЛЖНА БЫТЬ РАЗМЕЩЕНА ПО СТРОЧКАМ)
C В-МАТРИЦА ПРАВЫХ ЧАСТЕЙ. НА ВХОДЕ МАТРИЦА ПРАВЫХ ЧАСТЕЙ
C ЗАМЕНЯЕТСЯ МАТРИЦЕЙ X РЕШЕНИЯ СИСТЕМЫ.
C COMPLEX A,B,W
DIMENSION A(20,20),B(20)
C НАЧАЛО МЕТОДО ГАУССА
M1=M-1
C НАЧАЛО ПРЯМОГО ХОДА
C ВЫБОР i-ТОГО УРАВНЕНИЯ СИСТЕМЫ, СОДЕРЖАЩЕГО ВЕДУЩИЙ ЭЛЕМЕНТ
DO 4 I=1,M1
W=A(I,I)
C ДЕЛЕНИЕ i-ТОГО УРАВНЕНИЯ НА ВЕДУЩИЙ ЭЛЕМЕНТ
DO 1 J=I,M
1 A(I,J)=A(I,J)/W
B(I)=B(I)/W
M2=I+1
C ВЫБОР k-ОГО УРАВНЕНИЯ, ИЗ КОТОРОГО ИСКЛЮЧАЕТСЯ НЕИЗВ. ПЕРЕМЕННАЯ Х(i)
DO 3 K=M2,M
C ВЫБОР l-ОГО СТОЛБЦА В k-ТОМ УРАВНЕНИИI ДЛЯ ВЫЧИТАНИЯ i-ОГО УРАВН. ОТ k-ОГО
DO 2 L=M2,M
2 A(K,L)=A(K,L)-A(I,L)*A(K,I)
3 B(K)=B(K)-B(I)*A(K,I)
4 CONTINUE
B(M)=B(M)/A(M,M)
C КОНЕЦ ПРЯМОГО ХОДА. НАЧАЛО ОБРАТНОГО ХОДА
DO 5 I=1,M1
K=M-I
DO 5 J=K,M1
5 B(K)=B(K)-A(K,J+1)*B(J+1)
C КОНЕЦ ОБРАТНОГО ХОДА И МЕТОДА ГАУССА
RETURN
END
Дополнение 3
C ФАЙЛ JORD.FOR
C ПРОГРАММА 'JORD' ПРЕДНАЗН. ДЛЯ РЕШЕНИЯ СИСТ. ЛИН. АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
C AX=B ПО СХЕМЕ ЖАРДАНА. СОЗДАНА НА КАФЕДРЕ ЭЛЕКТР. СТАНЦИЙ БГПА
C 1.10.94 г.
C М-ПОРЯДОК СИСТЕМЫ. А-КВАДРАТНАЯ МАТРИЦА КОЭФФИЦИЕНТОВ СИСТЕМЫ.
C (ВО ВХОДНОМ ФАЙЛЕ ДОЛЖНА БЫТЬ РАЗМЕЩЕНА ПО СТРОЧКАМ)
C В-МАТРИЦА ПРАВЫХ ЧАСТЕЙ. НА ВЫХОДЕ МАТРИЦА ПРАВЫХ ЧАСТЕЙ
C ЗАМЕНЯЕТСЯ МАТРИЦЕЙ РЕШЕНИЯ СИСТЕМЫ.
C ПЕРЕД ВЫПОЛНЕНИЕМ РАСЧЕТА ПО ПРОГРАММЕ 'JOR' ПОЛЬЗОВАТЕЛЬ СОЗДАЕТ НА
C ДИСКЕ ФАЙЛ ВХОДН. ДАННЫХ С ИМЕНЕМ В ВИДЕ 'AAAA.DAT', ГДЕ ВМЕСТО СИМC ВОЛОВ 'AAAA' ПОЛЬЗОВ. ЗАПИСЫВАЕТ ЧЕТЫРЕ БУКВЫ ИМЕНИ СВОЕГО ФАЙЛА ВХОДНЫХ
C ДАННЫХ ПОСЛЕ ПУСКА ПРОГРАММЫ 'JOR' ОНА ЗАПРАШИВАЕТ С ЭКРАНА
C ЭТО ИМЯ, И ОНО ДОЛЖНО БЫТЬ ВВЕДЕНО ПОЛЬЗОВАТЕЛЕ С ЭКРАНА ДИСПЛЕЯ.
C ПОСЛЕ ЗАВЕРШ. РАСЧЕТА ПРОГРАММА ЗАПИСЫВАЕТ РЕЗУЛЬТАТЫ РАСЧЕТА НА ДИСК
C В ФАЙЛ С ИМЕНЕМ 'AAAA.REZ'.
C Z1,Z2 - СИМВОЛЬНЫЯ ПЕРЕМЕННЫЕ (СООТВЕТСТВЕННО ИМЕНА ФАЙЛОВ ВХОДНЫХ
C И ИСХОДЯЩИХ ДАННЫХ)
C ДЛЯ РЕШЕНИЯ КОМПЛЕКСНОЙ СИСТЕМЫ НУЖНО ЗАПИСАТЬ ПРОБЕЛ ВМЕСТО
C СИМВОЛА 'C' В ПЕРВОЙ ПАЗИЦЫИ СТРОЧКИ 22 ЭТОЙ ПРОГРАММЫ ПЕРЕД ОПЕРАТОРОМ
C 'COMPLEX A,B' I ЗАНОВО СОБЛЮСТИ ТРАНСЛЯЦИЮ ПРОГРАММЫ
CHARACTER Z1*8,Z2*8
C COMPLEX A,B,AA
DIMENSION A(9,9),B(9)
C ЧТЕНИЕ ИМЕНИ ФАЙЛА ВХОДНЫХ ДАННЫХ С ЭКРАНА ДИСПЛЕЯ
WRITE(5,350)
350 FORMAT(1X,'ВВЕДИТЕ ИМЯ И РАСШИР. ВАШЕГО ФАЙЛА ВХОДНЫХ ДАННЫХ
* В ВИДЕ:'/1X,'"AAAA.DAT"( ДЛЯ ЭТОГО ЗАМЕНИТЕ СИМВОЛЫ "AAAA"
* НА ИМЯ)')
READ(5,351)Z1
351 FORMAT(A8)
C ОТКРЫТИЕ ФАЙЛА ВХОДН. ДАННЫХ, ЧТЕНИЕ ВХОДНЫХ ДАННЫХ С ДИСКА
C В ОПЕРАТИВНОЕ ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО И ОТКРЫТИЕ ФАЙЛА
OPEN(UNIT=1,FILE=Z1,STATUS='OLD')
READ(1,*)M,((A(I,J),J=1,M),I=1,M),(B(I),I=1,M)
CLOSE(UNIT=1)
Z2(1:4)=Z1(1:4)
Z2(5:8)='.REZ'
C ОТКРЫТИЕ ФАЙЛА ДЛЯ ВЫХОДНЫХ ДАННЫХ, ЗАПIСЬ ВХОДНЫХ ДАННЫХ
C В ВЫХОДНОЙ ФАЙЛ
OPEN(UNIT=3,FILE=Z2,STATUS='NEW')
WRITE(3,360)M,((A(I,J),J=1,M),I=1,M)
360 FORMAT(10X,'ВЫХОДНОЙ Ф А Й Л П Р О Г Р АМ М Ы JORD'//
*10X,'ВХОДНЫЕ ДАННЫЕ:'/'Порядок системы: M=',I2/
*'Матрица коэффициентов A(M,M) системы:'/(10F8.4))
WRITE(3,370)(B(I),I=1,M)
370 FORMAT('Матрица правых частей В(M):'/(10F8.4))
C НАЧАЛО СХЕМЫ ЖАРДАНА
C ВЫБОР i-ТОГО УРАВНЕНИЯ СИСТЕМЫ, КОТОРОЕ СОДЕРЖИТ ВЕДУЩИЙ ЭЛЕМЕНТ
DO 6 I=1,M
IA=I+1
AA=A(I,I)
C ДЕЛЕНИЕ i-ТОГО УРАВНЕНИЯ НА ВЕДУЩИЙ ЭЛЕМЕНТ A(i,i)
IF(I.EQ.M)GO TO 2
DO 1 L=IA,M
1 A(I,L)=A(I,L)/AA
2 B(I)=B(I)/AA
C ВЫБОР k-ТОГО УРАВНЕНИЯ СИСТЕМЫ ДЛЯ ИСКЛ. ИЗ НЕГО НЕИЗВЕСТНОЙ ПЕРЕМ. X(i)
DO 5 K=1,M
IF(I.EQ.K)GO TO 5
IF(I.EQ.M)GO TO 4
C ВЫБОР l-ОГО СТОЛБЦА В k-ТОМ УРАВН. ДЛЯ ВЫЧИТАНИЯ i-ОГО УРАВНЕНИЯ ОТ k-ОГО
DO 3 L=IA,M
3 A(K,L)=A(K,L)-A(K,I)*A(I,L)
4 B(K)=B(K)-A(K,I)*B(I)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.