2. ВЫЧИСЛИТЕЛЬНЫЙ ПРАКТИКУМ

2.1. БИБЛИОТЕКА IMSL

В составе версий Fortran PowerStation (FPS) и Compaq Visual Fortran (CVF) и других входных языках имеется  математическая и статистическая библиотека фирмы Visual Numerics, Inc., которая называется IMSL. Фортран и подпрограммы библиотеки IMSL образуют мощный инструмент для решения вычислительных задач и обработки данных. Подпрограммы IMSL реализованы на Фортране и  естественным образом встраиваются в фортран-приложения. Программы, созданные с использованием подпрограмм из библиотеки IMSL, используются для исследования моделей, выполнения расчетов, обработки и отображения данных, в автоматизированных системах проектирования и управления, т.е. в любой сфере, где проблема поддается формализации. В книгах О. В. Бартеньева [Бартеньев О. В. Фортран для профессионалов. Математическая библиотека IMSL: части 1, 2 и 3.] рассмотрены функции и процедуры этой библиотеки. Большой объем библиотеки не позволяет дать ее более или менее полное описание в настоящем пособии (см. пример описания процедур вывода на печать матриц). Поэтому рассматриваются только некоторые подпрограммы библиотеки, необходимые для выполнения заданий и индивидуальных работ.

Закрыть

Таблица 2.1. Подпрограммы вывода матриц

Подпрограмма

Назначение

Вещественная матрица

WRRRN

Вывод прямоугольной матрицы с нумерацией строк и столбцов

WRRRL

Вывод прямоугольной матрицы по заданному формату и с заданными именами ее строк и столбцов

Целочисленные матрицы

WRIRN

Вывод прямоугольной матрицы с нумерацией строк и столбцов

WRIRL

Вывод прямоугольной матрицы по заданному формату и с заданными именами ее строк и столбцов

 

Таблица 2.2. Синтаксис вызова подпрограмм, приведенных в таблице 3.1

Синтаксис вызова

CALL WRRRN(title, nra, nca, a, Lda, itring)

CALL WRRRL(title, nra, nca, a, Lda, itring, fmt, rlabel, clabel)

CALL WRIRN(title, nrmat, ncmat, mat, Ldmat, itring)

CALL WRIRL (title, nrmat, ncmat, mat, Ldmat, itring, fmt, rlabel, clabel)

Подробное описание формальных параметров и продолжение описания параметров

Закрыть

Таблица 2.3. Параметры подпрограмм вывода матриц

Имена

Содержание

Тип

a

Массив формы(Lda,n), содержащий элементы матрицы А

Real(4)

Real(8)

clabel

Вектор размера nca+1 имен столбцов выводимой матрицы. Причем clabel(1) содержит имя столбца, хранящего имена строк матрицы, а clabel(1+j) – имя столбца j. Размер вектора задается равным единице в двух случаях:

– если нужно пронумеровать столбцы цифрами 1, 2,…, nca, вектор clabel()='NUMBER';

– если столбцы выводятся неименованными, то задается clabel()='NONE'

CHARACTER(*)

fmt

Символьная строка, содержащая формат

CHARACTER(*)

itring

Параметр, задающий форму вывода матрицы

INTEGER(4)

Lda

Ведущий размер массива a по 1-му измерению

INTEGER(4)

Ldmat

Ведущий размер массива mat по 1-му измерению

INTEGER(4)

mat

Массив формы(Lda,n), содержащий элементы матрицы MАT

INTEGER(4)

nca, ncmat

Число выводимых столбцов соответственно матриц A и MAT

INTEGER(4)

nra, nrmat

Число выводимых строк (рядов) соответственно матриц A и MAT

INTEGER(4)

Закрыть

Таблица 2.3(продолжение) Параметры подпрограмм вывода матриц

Имена

Содержание

Тип

nca, ncmat

Число выводимых столбцов соответственно матриц A и MAT

INTEGER(4)

nra, nrmat

Число выводимых строк(рядов) соответственно матриц A и MAT

INTEGER(4)

rlabel

Вектор размера nra имен строк (рядов) выводимой матрицы. Размер вектора задается равным единице в двух случаях:

– если нужно пронумеровать строки цифрами 1, 2,…, nra, вектор rlabel()='NUMBER';

– если строки выводятся неименованными, то задается rlabel()='NONE'

CHARACTER(*)

title

Символьная строка, задающая заголовок таблицы. При задании пустой строки заголовок не выводится. Если в заголовке содержатся символы % (процент) или / (слейдж), то следующие за ними символы будут выводиться с новой строки. Заголовки, длина которых больше ширины страницы, будут переносится автоматически.

 

Многим процедурам библиотеки IMSL для выполнения вычислений нужна дополнительная память, например для создания промежуточных данных. В IMSL выделение дополнительной памяти – одного или нескольких рабочих массивов – осуществляется в так называемой главной процедуре, например в LFCRG. Затем сформированные массивы передаются в процедуру 2-го уровня – L2CRG, в которой собственно и производятся вычисления. Перед выходом из LFCRG выделенная в ней память освобождается. Процедуру 2-го уровня можно вызвать непосредственно. Однако при этом в нее потребуется явно передать рабочие массивы. Так процедура L2CRG дополнительно по сравнению с LFCRG принимает рабочий вектор размера n. Если же вызывается процедура DL2CRG, оперирующая с двойной точностью, то размер рабочего вектора должен быть увеличен до 2n .Процедуры уровня 2 в пособии не приводятся.