Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Новосибирский государственный технический университет
Кафедра инженерных проблем экологии
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
Тема:
Программирование на алгоритмическом
языке FORTRAN. Использование управляющих
операторов и конструкций DO-циклы,
EXIT, CYCLE, STOP, PAUSE на примере задач экологии
Выполнил студент ФЛА
группы СЭ-31 Сергеев С.А.
Проверил: Голубева А.О.
Новосибирск - 2014
Оглавление:
Введение
Задание 1. Табулирование функций
Задание 2. Программирование ветвящихся вычислительных процессов
Задание 3. Программирование циклических вычислительных процессов
Задание 4. Использование массивов
Задание 5. Решение нелинейных уравнений
Вывод
В наше время, для решения экологических проблем, возможно использование программирование на разных языках, в частности на языке программирования "FORTRAN". Суть данного подхода заключается в составлении циклов подсчета уровня загрязнения, затрат на переработку отходов и других важных расчетов.
Необходимо учесть, что автоматизация производства в наше время играет ключевую роль в инфраструктуре человечества, и поэтому разного рода программы, для обеспечения должного взаимодействия системы "Человек - Производство - Природа" играют весьма важную роль. Не исключением являются и алгоритмы, которые позволяют контролировать выбросы в атмосферу загрязняющих веществ производства.
Примерами таких алгоритмов являются DO-циклы, с помощью которых появилась возможность подсчета, управляющие операторы STOP, PAUSE - которые в любой момент времени могут приостановить любые функции автоматизированного производства.
В данной работе, представлены некоторые программы использования циклов и
операторов при решении простейших математических расчетов.
Цель работы: При табулировании и построении графиков функций получить начальные навыки программирования и работы на компьютере.
Задание: Получить таблицы значений шести функций в приложениях: Microsoft Excel, Mathcad и Fortran. По полученным данным построить графики функций. По таблицам значений, полученных в Fortran, построить графики функций в Excel.
Выражение - это формула для получения значения. Выражения образуются из операндов и знаков операций, объединяемых по правилам синтаксиса алгоритмического языка. В качестве операндов выражения используются буквальные и именованные константы, переменные, указатели функций. В зависимости от типа возвращаемого результата выражения подразделяются на арифметические, логические, символьные и производного типа.
При записи арифметических выражений в Фортране используются следующие арифметические операции и функции (в порядке возрастания приоритета):
, + - вычитание и сложение;
* , / - умножение и деление;
** - возведение в степень;
COS(x) - cos(x) SIN(x) - sin(x)
TAN(x) - tg(x) ATAN(x) - arctg(x)(x) - ln(x) ALOG10(x) - lg(x)(x) - exp ABS(x) - |x|
SQRT(x) - кореньx INT(x) - целая часть x.
ASIN(x) - arcsin(x) ACOS(x) - arcos(x)(x) - sec(x)
Порядок выполнения операций одного и того же приоритета - слева направо (кроме возведения в степень). Для изменения вышеупомянутого порядка вычислений используются круглые скобки.
Функция 1
Текст программы
p1a, b, h, x, y ; integer I, N(1, file ="prog1.txt")= -3.14; b = 3.14*, "N=?"*, N=(b-a)/NI=0,N=a+h*I= -3*sin(5*x)2, X,Y; WRITE(1, 2) X,Y
FORMAT (' X=',F8.1,3X,'Y=',F8.4)program p1
Графики
MATHCAD и EXCEL:

Функция №2
Текст программы:
p1h, x, y, a, bI, N(1, file ="prog2.txt")=-10; b=10*, "N=?"*, N=(b-a)/NI=0,N=a+h*I; y = x/5 - 12, X,Y; WRITE(1, 2) X,Y
FORMAT (' X=',F8.1,3X,'Y=',F8.4)program p1
Графики
MATHCAD и EXCEL:

Функция 3
Текст программы:
p1h, x, y, a, bI, N(1, file ="zad1.txt")=-2.4; b=3.4*, "N=?"*, N=(b-a)/NI=0,N=a+h*I= 2-2*SQRT(9-(x**2)+x)/32, X,Y; WRITE(1, 2) X,Y
FORMAT (' X=',F8.1,3X,'Y=',F8.4)program p1
Графики
MATHCAD и EXCEL:

Функция 4
Текст программы:
p1h, x, y, a, bI, N=-5.=6.(1, file ="zad1.txt")*, "N=?"*, N=(b-a)/NI=0,N=a+h*I= (1/x)-(1/2)2, X,Y; WRITE(1, 2) X,Y
FORMAT (' X=',F8.4,3X,'Y=',F8.4)
enddoprogram p1
Графики
MATHCAD и EXCEL:

Функция 5
Текст программы:
p1h, x, y, t, a, bI, N(1, file ="zad1.txt")= -1; b = 2*, "N=?"*, N=(b-a)/NI=0,N= a+h*I= tan(t)= 2/(1+cos(t))2, t,X,Y; WRITE(1, 2) t,X,Y
FORMAT ('t='F8.2,3X, 'X=',F8.1, 3X, 'Y=',F8.4)program p1
Графики
MATHCAD и EXCEL:

Функция 6
Текст программы:
p1, PARAMETER :: PI=3.141593h, x, y, a, bI, N(1, file ="zad1.txt")=0=2*PI*, "N=?"*, N=(b-a)/NI=0,N= a+h*I= 1+cos(x)2, X, p; WRITE(1, 2) X, p
FORMAT ('X=',F8.4, 3X, 'p=',F8.4)program p1
Графики MATHCAD и EXCEL:

Вывод
По каждой из 6 предложенных были написаны тексты программ FORTRAN, выведены значения неизвестных, записаны эти значения в отдельный текстовый файл и построены графики на некоторых интервалах. Следует отметить, что графики в табличном редакторе Microsoft Excel и математическом редакторе MathCad идентичны.
Примечание: В табличном редакторе при построении графиков следует учесть, что десятичные части отделяются запятой, в то время как программа FORTRAN обозначает их точкой. Для построения графика по заданным значениям необходимо сделать замену символов.
Цель работы: Получить навыки программирования ветвящихся вычислительных процессов. Изучить условные операторы, переменные логического типа, логические отношения и операции.
Задание: Пусть на плоскости x, y задана область D. Требуется определить «попадает» ли точка с координатами (x, y) в область D или нет. Если попадает, то необходимо вычислить функцию f1 и переменной M, значение которой является признаком «попадания» или «непопадания», присвоить значение M=1. В противном случае вычислить f2 и положить M=2.
При составлении программы на Фортране для анализа «попадания» или
«непопадания» точки в область D можно составить только одно логическое
выражение с использованием следующих логических отношений и операций:
отношения:операции
< - .LT. - меньше,
<= - .LE. - меньше или равно, .NOT. - отрицание,
> - .GT. - больше, .AND. - коньюнкция («и»),
>= - .GE. - больше или равно, .OR. - дизьюнкция («или»),
== - .EQ. - равно, ..EQV.- эквивалентность,
/= - .NE. - не равно. .NEQV.- неэквив.
Результатом вычисления отношений является одно из двух логических значений .TRUE. -истина или .FALSE. - ложь. С помощью логических операций можно создавать сложные логические выражения, которые также могут принимать только два значения .TRUE. или .FALSE.
Например, точка (x, y) «попадает» в область D (см. рис. 1), если
логическое выражение
X<=0..AND.Y<=X+4..AND.Y>=-X-
4..OR.X>0..AND.Y>=0..AND.X**2+Y**2<=4. принимает значение
.TRUE. - истина.
Ветвящиеся вычислительные процессы в Фортране можно запрограммировать с помощью следующих условных операторов IF.
Логический оператор IF имеет вид
(L) S
Здесь: L - логическое выражение, S - исполняемый оператор.
Если логическое выражение L истинно, то выполняется оператор S , если оно ложно, то выполнится следующий за IF оператор, а S не выполняется.
Блочный оператор IF имеет вид
(L) THEN
< блок операторов 1 >
< блок операторов 2 >IF
Правило выполнения: если логическое выражение L истинно, то выполняется < блок операторов 1 >, а если оно ложно, то выполняется < блок операторов 2 >. При отсутствии альтернативы < блок операторов 2 > вместе с ELSE опускается.
Приведем пример Фортран-программы, в которой для анализа «попадания» или
«непопадания» точки используется логическая переменная C. Этой переменной
присваивается значение логического выражения. Если C=.TRUE., тов блочном
операторе IF (C) THEN выполняется первый блок операторов, а если C=.FALSE. , то
второй блок (стоящий после ELSE).
Область:
Текст программы
LAB2C; REAL X, Y, ZI, MI=1,8*, ' X=?, Y=? '; READ '(2F7.3)', X,Y=Y<=2..AND.Y>=0..AND.X>=-1..AND.X<=1..OR.&
&X>=0..AND.Y<=0..AND.(9/4)*X**2+Y**2<=9.(C) THEN*, ' YES ' ; Z=F1(X,Y); M=1*, ' NO ' ; Z=F2(X,Y); M=2IF2, X,Y,Z,C,MDO
FORMAT (' X=',F7.3,3X,'Y=',F7.3,3X,'Z=',F11.4,3X,'C=', L2,3X,'M=',I2/)PROGRAM LAB2F1(X,Y)=sin(x**2+y**2)/(x**2+y**2)FUNCTION F1F2(X,Y)=EXP(5.*x)+18.*cos(y)
END FUNCTION F2
Вывод
В данной задаче была написана программа, которая, при вводе данных с клавиатуры, проверяет, удовлетворяют ли эти значения условию принадлежности к интервалу значений. Если они входят в область определения, то подсчет производится по формуле №1, а при неудовлетворении условия расчет производится по формуле №2. Также выводится номер формулы и логическое значение принадлежность "TRUE" или "FALSE". fortran затрата экологический отход
Цель работы: Получить навыки программирования циклических вычислительных процессов. Изучить циклы с шагом и циклы с условием
Задание
1. Записать
расчетные формулы для вычисления, слагаемого и конечной суммы ряда
. Варианты заданий приведены в таблице 3.
2. Составить алгоритм вычисления с заданной точностью суммы конечного числа членов ряда в указанном диапазоне изменения параметра x с заданным шагом. Для получения шага диапазон изменения x разделить на 10.
3. Составить программу решения задачи. В программе для каждого значения x предусмотреть вычисление как приближенной, так и точной суммы соответствующего ряда y по приведенной в таблице 3 формуле.
. Отладить и просчитать программу. Результат получить в виде таблицы, содержащей для каждого x из указанного диапазона приближенное и точное значения суммы ряда, а также количество просуммированных членов.
Работа
содержит задачу, которая сводится к нахождению конечной суммы ряда
при различных значениях x. Каждое слагаемое
зависит от величины x и номера n, определяющего место
этого слагаемого в сумме. Ряд подобран таким образом, чтобы при бесконечно
большом числе членов ряда их сумма в указанном диапазоне изменения величины x
была конечным числом, зависящим только от x, т.е. ряд является сходящимся.
Например,
.
Первый
член этого ряда при n =0 равен x , второй член при n =1 равен
, третий член равен
и т.д. В
сумме при бесконечно большом числе членов они дают функцию sin(x) . Видно, что
при ограниченных значениях x, сравнимых по модулю с единицей, каждый
последующий член этого знакопеременного ряда существенно меньше предыдущего,
поэтому ряд быстро сходится и для вычисления суммы ряда с необходимой точностью
достаточно просуммировать относительно небольшое число членов ряда. Например,
суммирование можно прекратить, когда текущий член ряда станет по абсолютной
величине меньше заданного малого положительного числа ε, определяющего погрешность вычисления суммы ряда.
Формула
общего члена суммы принадлежит к одному из следующих типов:
а)
;
б)
;
в)
.
В случае (а) для вычисления члена суммы целесообразно использовать рекуррентные соотношения, т.е. выражать последующий член суммы через предыдущий, например, если
В случае (б) каждый член суммы вычисляется согласно общей формуле, которую и нужно запрограммировать.
В
случае (в) член суммы целесообразно представить в виде двух сомножителей, один
из которых вычисляется по рекуррентному соотношению, а другой -
непосредственно, например, если
, где
Пусть требуется составить программу для вычисления суммы ряда
и
функции
для
.
Суммирование следует выполнять до тех пор, пока текущий член ряда по абсолютной
величине не станет меньше заданного малого положительного числа ε.
Запишем ряд в виде
,
где
,
здесь
.
Общий член ряда относится к типу (а), т.е. для вычисления члена суммы целесообразно использовать рекуррентные соотношения, выражая каждый последующий член суммы через предыдущий. Суммирование начинается с n=1, при этом начальные значения c =−1, b =1.
Для каждого значения x, задаваемого во внешнем цикле, вычисление суммы
ряда выполняется во внутреннем цикле, при прохождении которого номер члена ряда
увеличивается на 1, а сумма изменяется по формуле S =S +a, где a вычисляется
как произведение c и b. Начальное значение суммы в данном примере равно нулю
S=0. Суммирование в глухом цикле DO необходимо продолжать до тех пор, пока
величина a не станет по абсолютной величине меньше ε.
Вычисление постоянной по
модулю знакопеременной величины cn можно организовать в цикле по
формуле c =−c. Для вычисления величины (2n)! в знаменателе необходимо во
внутреннем цикле, где n каждый раз увеличивается на 1, число 2n умножать на
число (2n −1), так как факториал - это, по определению, произведение
последовательных натуральных чисел.