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

Правило:

Массивы можно описывать динамически только в подпрограммах и только в том случае, когда имя массива и его размерность находятся в списке формальных параметров. В головной программе динамически описывать массивы нельзя.

Оперативная память ЭВМ отводится динамическим массивам подпрограмм при работе головной программы. Эти массивы располагаются на месте реальных массивов, описанных в головной программе. Размерность динамического массива может меняться, но не может превосходить размерность соответствующего массива головной программы.

Задача:

Написать подпрограмму-функцию, которая описывает заданную графическую функцию и использовать эту подпрограмму-функцию для вычисления определённого интеграла, то есть площади, ограниченной этой фигурой при любых значениях выходных параметров.

Для определения значения yна этом отрезке мы использовали соотношение:

Зная значения Х1, Х2, Х3, Х4 мы сможем вычислить значения Yв любой точке.Y=f(X, X1, X2 ,X3, X4).

FUNCTION Y(X,X1,X2,X3,X4)

Y=0.

R=X3*X3

IF(ABS(X).LT.ABS(X3)) Y=X*X

IF(ABS(X).GE.ABS(X3).AND.X.LE.X4.OR.ABS(X).GE.X3.AND.X.GE.X2) Y=R

IF(X.LT.X2.AND.X.GE.X1) Y=R*(X1–X)/(X1–X2)

IF(X.GT.X4.AND.X.LE.X4+R) Y=SQRT(R*R–(X–X4)**2)

RETURN

END

Задача:

Сформировать одномерный массив численных значений функций, определённых графиком из предыдущей задачи, в пределах изменения аргумента от адоb. Массив из 100 элементов.

DIMENSION Y1(100)

Массив с именем Y нельзя использовать, так как в программе будут два одинаковых имени (массива и подпрограммы-функции), поэтому используем имя массива Y1.

WRITE (6,*)’ Введите параметры графика : X1, X2 ,X3, X4’

READ (5,*) X1,X2,X3,X4

WRITE (6,*)’Введите пределы изменения Х : A, B

READ (5,*) A,B

DX=(B-A)/(100.–1.) Для получения правильного шага цикла, используем (100.-1.).

X=A

DO 2 I=1,100

Y1(I)=Y(X,X1,X2,X3,X4)

Идёт обращение к подпрограмме-функции Y, куда посылаются фактические параметры Х, X2, X3, X4, которые случайно совпали с описанными в FUNCTION. После каждого обращения к подпрограмме-функции мы получаем результата – одно число, которое возвращается назад в головную программу на то место, откуда осуществился вызов подпрограммы-функции и этот результат записывается в массив Y1. По окончании этого цикла (повторится 100 раз) мы имеем заполненный массив Y1, в котором содержатся значения координат Y графика в пределах от а до b.

  1. X=X+DX

PAUSE

STOP

END

Мини задача 1:

По методу прямоугольников вычислить значение интеграла, т. е. определить площадь фигуры, описанной в предыдущем примере..

SINT=0.

DO 3 I=1,100–1

Цикл до 100-1 потому. что последняя площадь не суммируется.

  1. SINT=SINT+Y1(I)*DX

WRITE (6,*)’Интеграл =’,SINT

Мини задача 2:

Вычислить значение интеграла, по методу трапеции.

STR=0.

DO 3 I=1,100–1

  1. STR=STR+(Y1(I)+Y1(I+1))/2.*DX

Мини задача 3:

Найти максимальное значение элементов массива и его порядковый номер.

REAL MAX

MAX=Y1(1)

N=1

DO 4 I=2,100

IF(MAX.GE.Y1(I)) GO TO 4

MAX=Y1(I)

N=I

  1. CONTINUE

Мини задача 4

Найти значения всех локальных максимумов фигуры, численные значения которой хранятся в массиве Y1.

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