Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
527.87 Кб
Скачать

28. Использование библиотек стандартных программ (бсп)

Библиотеки стандартных программ позволяют программисту использовать уже готовые подпрограммы (стандартные или составленные им самим), в любой своей программе. Это избавляет от необходимости повторения в каждой программе каких-либо вычислений, выполнявшихся ранее в других программах. Для этого надо составить одну подпрограмму, произвести её отладку, тестирование и занести в библиотеку. К стандартным программам из БСП относится вычисление специальных функций, интегралов и другие. Благодаря этому не приходится каждый раз составлять алгоритм вычисления , например, интеграла. Мы просто обращаемся к стандартной программе из БСП, засылаем в неё значения фактических параметров, обратно получаем результат. Библиотеки программ подключаются при их вызове. При этом указывается список фактических параметров.

Основные термины, которые используются при работе с БСП:

вектор-столбец– одномерный массив;

матрица– двухмерный массив;

код ошибки(чаще всего этоIER) – это может быть переменная целого типа с любым именем, которая показывает или обозначает, в каком состоянии стандартная программа (СП) завершила свою работу. Код ошибки всегда нужно анализировать после выполнения стандартных программ. Этот анализ осуществляется при помощи оператораIF.

Пример:

IF(IER.EQ.1) …

Обращение к БСП осуществляется при помощи оператора CALL:

CALL имя (список фактических параметров)

Задача:

Решить систему линейных алгебраических уравнений:

В БСП уже есть программа для решения системы линейных уравнений. Поэтому воспользуемся ей, чтобы не тратить время на составление своей программы.

В описании к БСП находим подходящую стандартную программу:

программа для решения системы линейных алгебраических уравнений SIMQ(A,B,N,IER)

где А– матрица коэффициентов при неизвестных, расположенных по столбцам;

В– вектор-столбец свободных членов. Заполняется значениями свободных членов системы линейных алгебраических уравнений (5, 4, 6). В результате работы подпрограммы вычисляются значения неизвестныхи эти неизвестные записываются в массив В, а предыдущие значения членов уничтожаются;

N– размерность массивов;

IER– код ошибки, еслиIER=0, то решение получено, еслиIER=1, то решение не может быть получено, так как дискриминант равен нулю, еслиIER=2 – количество уравнений меньше трех.

С Головная программа

DIMENSION A(3,3),C(3)

WRITE (6,*)’Введите коэффициенты при Х по строкам’

READ (5,*) ((A(I,J),J=1,3),I=1,3)

Введём: 2. 3. 4. -1. -2. 3. 1. -3. 0.

WRITE (6,*)’Введите массив свободных членов’

READ (5,*) C

Введём: 5. 4. 6.

CALL SIMQ(A,C,3,IER)

Идет обращение к стандартной программе SIMQ. В этой СП будет получено решение, а результат этого решения будет находиться в массиве С.

С Анализ кода ошибки

IF(IER.EQ.0) WRITE (6,*)’Решение: X1, X2, X3=’, (C(I),I=1,3)

If(ier.Eq.1) write (6,*)’Нет решения. Проверьте исходные данные’

If(ier.Eq.2) write (6,*)’Неверное количество уравнений’

PAUSE

STOP

END

Задача:

Вычислить значение определенного интеграла:

Воспользоваться программой из БСП: QG5(XL,XU,FCT,Y)

где XL– левый предел интеграла;

XU– правый предел интеграла;

FCT– внешняя подпрограмма-функция, которая описывает решаемое уравнение;

Y– результат.

Эта программа с автоматическим выбором шага и для своей работы требует использование подпрограммы-функции, в которой описывается решаемое уравнение . Начинаем с написания подпрограммы – функции.

С Подпрограмма-функция

FUNCTION FUN(X)

В качестве подпрограммы-функции может быть любая функция с любым именем.

FUN=SIN(X)**2–COS(X)**2

RETURN

END

С Головная программа

EXTERNAL FUN

WRITE (6,*)’Введите Хнач , Хкон

READ (5,*) A,B

Обращаемся к стандартной подпрограмме вычисления определенного интеграла. Фактические параметры А и В, имя функции FUN. Результат вычисления интеграла будет помещен в переменную с именем Y.

CALL QG5(A,B,FUN,Y)

WRITE (6,*)’Вычисленное значение интеграла =’,Y

PAUSE

STOP

END

Поскольку имя подпрограммы-функции FUNнаходится в списке фактических параметров при обращении к стандартной программеQG5, то имя этой функции должно быть описано в оператореEXTERNALв самом начале программы. Для компилятора это является признаком, чтоFUNне простая переменная, а функция с именемFUN.

Задача:

Решить дифференциальное уравнение и построить график для:

на отрезке с шагомdx при.

Использовать стандартную программу RK2(FUN,H,X1,Y1,K,N,VEC)

где FUN– подпрограмма-функция, которая описывает значение функции;

Н– шаг интегрирования;

X1, Y1– начальные значения;

K– количество шагов между двумя сохраняемыми значениями;

N – количество значений;

VEC– результирующий вектор-столбец длинныN, в котом сохраняются вычисленные значения.

Величина Kзадаёт точность решения (количество промежуточных вычисленных точек, которые не запоминаются).

С Подпрограмма-функция

FUNCTION FUNC(X,Y)

FUNC=2*SIN(X)+COS(Y)

RETURN

END

C Головная программа

DIMENSION VEC(1000) Описываем массив, в который будут записываться результаты расчета. Размерность его задается с запасом.

EXTERNAL FUNC Описываем имя подпрограммы-функции как внешней, т.к. ее имя находится в списке фактических параметров при обращении к RK2

READ (5,*) XN,XK,X0,Y0,DX,K

N=(XK–XN)/DX/K

CALL RK2(FUNC,DX,X0,Y0,K,N,VEC)

Результат вычислений будет помещён в массив VEC размерностью N элементов.

CALL GRAF(VEC,N)

Здесь идёт обращение к программе GRAF, которая выведет график вычисленных значений массива VEC. Описание этой программы см. в разделе "работа с текстом".

DO 2 I=1,N

Распечатаем значения массива в столбец:

WRITE(6,*)'При Х=',XN,'Y=',VEC(I)

XN=XN+DX*K

2 CONTINUE

STOP

END

Соседние файлы в папке Программирование на Фортране