Методы решения систем линейных алгебраических уравнений (Лабораторная работа № 2), страница 5

C ВХОДНЫХ ДАННЫХ ПОСЛЕ ПУСКА ПРОГР. ОНА ЗАПРАШИВАЕТ ЭТО ИМЯ С ЭКРАНА,

C И ОНО ДОЛЖНО БЫТЬ ВВЕДЕНО ПОЛЬЗОВАТЕЛЕМ С ЭКРАНА.

C ПОСЛЕ ОКОНЧАНИЯ РАСЧЕТА ПРОГР. ЗАПИСЫВАЕТ РЕЗУЛЬТАТЫ РАСЧЕТА НА ДИСК

C В ФАЙЛ С ИМЕНЕМ 'AAAA.REZ'.

C Z1,Z2 - СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ (СООТВЕТСТВЕННО ИМЕНА ФАЙЛОВ ВХОДНЫХ

C И ИСХОДЯЩИХ ДАННЫХ)

C ДЛЯ РЕШЕНИЯ КОМПЛЕКСНОЙ СИСТЕМЫ НУЖНО ЗАПИСАТЬ ПРОБЕЛ ВМЕСТО

C СИМВОЛА 'C' В ПЕРВОЙ ПОЗИЦИИ СТРОЧКИ 21 ЭТОЙ ПРОГРАММЫ ПЕРЕД ОПЕРАТОРОМ

C 'COMPLEX A,B,B1' I ЗАНОВО СОБЛЮСТИ ТРАНСЛЯЦИЮ ПРОГРАММЫ

CHARACTER Z1*8,Z2*8

C     COMPLEX A,B,B1,W

DIMENSION A(20,40),B(20),B1(20)

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)

C ОТКРЫТИЕ ФАЙЛА ДЛЯ ИСХОДЯЩИХ ДАННЫХ, ЗАПИСЬ ВХОДНЫХ ДАННЫХ

C НА ДИСК В ВЫХОДНОЙ ФАЙЛ

Z2(1:4)=Z1(1:4)

Z2(5:8)='.REZ'

OPEN(UNIT=3,FILE=Z2,STATUS='NEW')

WRITE(3,360)M,((A(I,J),J=1,M),I=1,M)

360 FORMAT(10X,'В Ы Х А Д Н Ы   Ф А И Л   П Р А Г Р А М Ы   ABAS'//

*10X,'ВХОДНЫЕ ДАННЫЕ:'/'Порядок системы: M=',I2/

*'Матрица коэффициентов:'/(10F8.4))

WRITE(3,370)(B(I),I=1,M)

370 FORMAT('Матрица правых частей:'/(10F8.4))

C НАЧАЛО СХЕМЫ ЖАРДАНА

M1=M+1

M2=M+M

C ОБРАЗОВАНИЕ ЕДИНИЧН. МАТРИЦЫ В ПРАВОМ КВАДР. БЛОКЕ РАБОЧЕГО МАССИВА A

DO 20 I=1,M

N=I+M

DO 20 J=M1,M2

A(I,J)=0.

IF(N.EQ.J) A(I,J)=1

20 CONTINUE

C РАСЧЕТ ЭЛЕМЕНТОВ ОБРАТНОЙ МАТР. В ПРАВОМ КВАДРАТНОМ БЛОКЕ РАБОЧЕГО

C МАССИВА A(М,М2) ПО СХЕМЕ ЖАРДАНА

DO 60 I=1,M

N=I+1

DO 40 J=N,M2

40 A(I,J)=A(I,J)/A(I,I)

DO 30 K=1,M

IF(K.EQ.I) GO TO 30

DO 50 L=N,M2

50 A(K,L)=A(K,L)-A(I,L)*A(K,I)

30 CONTINUE

60 CONTINUE

C ПЕРЕМНОЖ. ОБРАТНОЙ МАТР. НА МАТРИЦУ ПРАВЫХ ЧАСТЕЙ И ЗАПИСЬ РЕШЕНИЙ

C В МАССИВ B1(M)

DO 80 I=1,M

W=0.

DO 70 J=1,M

70 W=W+A(I,J+M)*B(J)

B1(I)=W

80 CONTINUE

C ЗАПИСЬ РЕЗУЛЬТАТОВ РАСЧЕТА В ВЫХОДНОЙ ФАЙЛ И ОТКРЫТИЕ ФАЙЛА

WRITE(3,352)(B1(I),I=1,M)

352 FORMAT(/10X,РЕЗУЛЬТАТЫ РАСЧЕТА:'/6(G13.6))

CLOSE(UNIT=3)

C СООБЩЕНИЕ НА ЭКРАН ДИСПЛЕЯ О ЗАВЕРШЕНИИ РАБОТЫ

WRITE(5,353) Z2

353 FORMAT(1X,'ПРОГРАММА ''ABAS'' РАБОТУ ОКОНЧИЛА. РЕЗУЛЬТАТЫ РАСЧЕТА

*ЗАПИСАНЫ НА ДИСК В ФАЙЛ '/1X,A8)

STOP

END

Приложение 2

C ФАЙЛ GAUS.FOR

C ПРОГРАММА 'GAUS' РЕШЕНИЯ СИСТЕМЫ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

C AX=B МЕТОДАМ ГАУССА. СОЗДАНА НА КАФЕДРЕ ЭЛЕКТРИЧЕСКИХ СТАНЦИЙ БГПА

C 1.10.94 г.

C М-ПОРЯДОК СИСТЕМЫ. А-КВАДРАТНАЯ МАТРИЦА КОЭФФИЦИЕНТОВ СИСТЕМЫ.

C (ВО ВХОДНОМ ФАЙЛЕ ДОЛЖНА БЫТЬ РАЗМЕЩЕНА ПО СТРОЧКАМ)

C В-МАТРИЦА ПРАВЫХ ЧАСТЕЙ. НА ВЫХОДЕ МАТРИЦА ПРАВЫХ ЧАСТЕЙ

C ЗАМЕНЯЕТСЯ МАТРИЦЕЙ РЕШЕНИЯ X СИСТЕМЫ AX=B.

C ПЕРЕД ВЫПОЛНЕНИЕМ РАСЧЕТА ПО ПРОГРАММЕ 'GAUS' ПОЛЬЗОВАТЕЛЬ СОЗДАЕТ НА

C ДИСКЕ ФАЙЛ ВХОДНЫХ ДАННЫХ С ИМЕНЕМ В ВИДЕ 'AAAA.DAT', ГДЕ ВМЕСТО СИМC ВОЛОВ 'AAAA' ПОЛЬЗОВ. ЗАПИСЫВАЕТ ЧЕТЫРЕ БУКВЫ ИМЯ СВОЕГО ФАЙЛА ВХОДНЫХ

C ДАННЫХ ПОСЛЕ ПУСКА ПРОГРАММЫ 'GAUS' ОНА ЗАПРАШИВАЕТ С ЭКРАНА

C ЭТО ИМЯ, И ОНО ДОЛЖНО БЫТЬ ВВЕДЕНО ПОЛЬЗОВАТЕЛЕМ С ЭКРАНА ДИСПЛЕЯ.

C ПОСЛЕ ЗАВЕРШ. РАСЧЕТА ПРОГРАММА ЗАПИСЫВАЕТ РЕЗУЛЬТАТЫ РАСЧЕТА НА ДИСК

C В ФАЙЛ С ИМЕНЕМ 'AAAA.REZ'.

C Z1,Z2 - СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ (СООТВЕТСТВЕННО ИМЕНА ФАЙЛОВ ВХОДНЫХ

C И ИСХОДЯЩИХ ДАННЫХ)

C ДЛЯ РЕШЕНИЯ КОМПЛЕКСНОЙ СИСТЕМЫ НУЖНО ЗАПИСАТЬ ПРОБЕЛ ВМЕСТО

C СИМВОЛА 'C' В ПЕРВОЙ ПОЗИЦИИ СТРОЧКИ 22 ЭТОЙ ПРОГРАММЫ И 58 СТРОЧКИ ПОДПР.

C ПЕРЕД ОПЕРАТ. 'COMPLEX A,B' И ЗАНОВО СОБЛЮСТИ ТРАНСЛЯЦИЮ ПРОГРАММЫ

CHARACTER Z1*8,Z2*8

C     COMPLEX A,B

DIMENSION A(20,20),B(20)

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 ОТКРЫТИЕ ФАЙЛА ДЛЯ ВЫХОДНЫХ ДАННЫХ, ЗАПИСЬ ВХОДНЫХ ДАННЫХ

C В ВЫХОДНОЙ ФАЙЛ