Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

учебное пособие по лр_фортран

.pdf
Скачиваний:
109
Добавлен:
21.03.2016
Размер:
1.32 Mб
Скачать

32

Графики

30

1.4. Попадание точки в заданную область плоскости Задание

1.Область заштрихована и ограничена линиями контура.

2.Определить графики линий контура:

a)для каждой i-ой линии контура задать область определения и уравнение y = fi(x) – проверить уравнения в Agrapher;

b)написать программу табулирования fi(x), полученные таблицы импортировать в Agrapher, настроив линии – красным цветом, точки удалить – график должен повторять рисунок индивидуального задания;

c)сохранить график в файле area.agr (этот график используется в дальнейшем).

3.Описать математически систему неравенств, обеспечивающую попадание произвольной точки в заштрихованную область – проверить правильность системы неравенств в AGrapher.

4.Рисунок индивидуального задания накрыть прямоугольной сеткой,

вузлах которой находятся точки для проверки системы неравенств:

a)прямоугольник должен на 10-20% перекрывать заданный контур с каждой из четырех сторон;

b)рекомендуемое число узлов сетки – 20-40 по каждой оси. Определить параметры сетки: начальное и конечное значения x и y, шаг изменения x и y.

5.Дополнить программу из пункта 2:

a)сгенерировать узлы сетки, используя ее параметры;

b)проверить соответствие координат каждой точки сетки системе неравенств, используя для этого единственный оператор IF;

c)записать координаты точки (x, y) в один из двух файлов:

если точка в пределах заштрихованной области – в файл in.txt, если точка за пределами заштрихованной области – в файл out.txt.

6.Дополнить график в Agrapher:

a)прочитать график контурных линий из файла area.agr ;

b)импортировать таблицы из файлов in.txt и out.txt ;

c)установить для точек из in.txt и out.txt разные цвета и удалить линии, соединяющие точки;

Практикум по современному Фортрану

33

d) предъявить преподавателю результат на экране.

Содержание отчета

1.Название работы, номер варианта индивидуального задания.

2.Фамилия, имя, отчество и номер группы студента.

3.Рисунок в том виде, как он приведен в варианте задания.

4.Уравнения всех линий, ограничивающих заштрихованную область.

5.Система неравенств координат всех точек заштрихованной области.

6.Блок – схема и распечатка текста программы.

При подготовке к защите ответить на контрольные вопросы.

Комментарии к заданию

1.В системе неравенств показать объединение квадратной скобкой, пересечение – фигурной скобкой.

2.Таблицу основных уравнений смотрите в разделе 7.3.

3.При составлении системы неравенств рекомендуется рассматривать область по отдельным фрагментам, что поможет в решении задачи. Система неравенств в этом случае представляется объединением групп неравенств, соответствующих этим фрагментам.

4.Рекомендуется воспользоваться симметрией заданной области, иногда это помогает уменьшить количество неравенств.

5.Генерируя точки – узлы сетки, воспользуйтесь вложенными циклами для задания координат x,y для точек.

Пример

На рисунке показана заштрихованная область и ограничивающий ее пунктирный прямоугольник. Точка находится в пределах заданной области, если она принадлежит хотя бы одному из двух фрагментов В или A, причем из-за |x|<3 вертикальные стороны прямоугольника A -пунктирные.

 

 

 

 

 

 

Система неравенств:

y 2

 

 

 

 

 

 

 

 

 

 

(фрагмент A)

у 4

 

 

 

 

x

 

<3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

+ y

2

 

(фрагмент B)

x

 

 

 

 

9

x

0

 

 

 

 

 

 

 

 

 

 

 

Границы прямоугольника, содержащего область: –4 x 4; –4 y 5 В качестве шага изменения x и y выбрано 0.4 .

Практикум по современному Фортрану

 

 

34

 

 

Блок-схема программы.

 

 

 

 

 

Начало

 

 

Табуляция линий - границ области

 

 

Открытие файлов In.txt иOut.txt

 

 

 

x = -4, 4, 0.4

Конеццикла

Конец

 

 

 

Конеццикла

y = -4, 4, 0.4

 

 

 

 

 

 

 

A = (y >= 2) и(y <= 4) и(|x| < 3)

 

 

B = (x + y <= 9) и(x <=0)

 

 

да

 

А или В

нет

 

 

 

 

 

x, y => вфайл«In.txt»

 

x, y => вфайл«Out.txt»

Программа.

Program Region ! Попадание точки в область плоскости ! студент (фамилия, имя) группа № работа № вариант №

Implicit none Real x, y

Integer, parameter:: inside=1, outside=2 ! Номера устройств

Logical A, B

Open(inside, file=’in.txt’) ! координаты точек внутри области

Open(outside, file=’out.txt’)! координаты точек вне области

Open(3, file=’3.txt’) ! прямоугольник, ограничивающий фрагмент A

Open(4, file=’4.txt’) ! прямоугольник, ограничивающий фрагмент В ! Табуляция линий – границ области (файлы на устройствах 3 и 4)

. . .

! цикл по Y внутри цикла по X - перебор точек сетки

Do X = -4, 4, 0.4

Do Y = -4, 5, 0.4

 

A =

y>=2 .and. y<=4 .and. abs(x)<3 ! фрагмент A

В =

x*x + y*y <= 9 .and. x<=0

! фрагмент B

If (A .or. B) then

 

Write(inside, *) x, y

 

Else

 

 

Write(outside, *) x, y

 

End

If

 

End Do

 

 

End Do

 

 

End Program Region

Практикум по современному Фортрану

35

Контрольные вопросы к защите работы

1.Как в логическом выражении распределяются приоритеты между операциями отношения, числовыми, логическими?

2.Пять логических операций (три основные и две дополнительные) с таблицами истинности и примерами.

3.Приоритеты логических операций в логическом выражении.

4.Шесть операций отношения с примерами.

5.Запись на Фортране логических констант.

6.Что называется циклом? Его стандартная блок-схема в программе.

7.Объясните формулу числа повторений цикла по переменной.

8.В каких случаях целая переменная цикла лучше вещественной?

9.Как по-другому можно назвать цикл по переменной? Приведите пример.

10.Приведите блок-схему и пример вложенных циклов.

11.Приведите блок-схему, пример одноблочного условного оператора.

12.Приведите блок-схему, пример двухблочного условного оператора.

13.Приведите блок-схему и пример условного оператора без блоков.

Пример контрольного задания

1. Напишите условный оператор для вычисления значения переменной.

 

 

2

x

3

 

 

при

х <

2 ,

 

 

 

 

 

 

 

9

 

 

 

 

 

 

2

1

 

 

 

 

 

 

 

 

 

 

 

 

Y =

sec

 

 

 

при

2

х < 4 ,

 

 

x

 

 

 

 

x

 

 

х

4

 

3 e

+ 2 при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Подсчитайте количество выведенных строк

Do a = 22, 9, -8 Do b = 3, 19, 11

write(*, *) a, b enddo

enddo

Какие значения a и b будут выведены?

3.

При каких значениях координат точка [x, y]

 

находится в заштрихованной области

 

плоскости? Опишите эти условия:

 

a)

в виде системы неравенств;

 

b)

в виде логического выражения

 

(без промежуточных переменных).

Практикум по современному Фортрану

36

4. Напишите по блок-схеме фрагмент программы на Фортране.

 

a = 0

 

 

x = 2, 3, 0.2

Конец цикла

 

 

 

x < 2.5

 

a = a + 2x

 

a = a + x

нет

a > 10

да

 

 

Варианты индивидуальных заданий

Рисунки

Рисунки

 

 

 

 

1

 

2

 

 

 

 

 

3

 

4

 

 

 

 

 

5

 

6

 

 

 

 

 

Практикум по современному Фортрану

 

 

37

 

 

 

 

 

Рисунки

Рисунки

 

 

 

 

7

 

8

 

 

 

 

 

9

 

10

 

 

 

 

 

11

 

12

 

 

 

 

 

13

 

14

 

 

 

 

 

15

 

16

 

 

 

 

 

Практикум по современному Фортрану

 

 

38

 

 

 

 

 

Рисунки

Рисунки

 

 

 

 

17

 

18

 

 

 

 

 

19

 

20

 

 

 

 

 

21

 

22

 

 

 

 

 

23

 

24

 

 

 

 

 

25

 

26

 

 

 

 

 

Практикум по современному Фортрану

 

 

39

 

 

 

 

 

Рисунки

Рисунки

 

 

 

 

27

 

28

 

 

 

 

 

29

 

30

 

 

 

 

 

1.5. Приближенное вычисление функции – сумма степенного ряда Задание

1.Составить программу Pro1, которая для рекомендованного в инди-

видуальном варианте значения аргумента x = x0 и заданного значения точности ε:

a)вычисляет значение функции f(x) с помощью встроенной функции Фортрана;

b)вычисляет приближенное значение f(x), суммируя члены ряда Тейлора, и определяет их количество, необходимое для достижения заданной точности ε;

c)формирует три текстовых файла для пакета AGrapher:

зависимость значения члена ряда an от n;

зависимость частичной суммы членов ряда Sn от n;

значение встроенной функции f(x), одно и то же при всех значениях n;

для построения графиков принять ε = 10-4;

d)выводит в текстовый файл Out.txt результаты суммирования с пояснениями:

значение ε;

значение аргумента x = x0;

f(x), вычисленное по стандартной программе;

значение суммы членов ряда;

Практикум по современному Фортрану

40

количество членов ряда, составивших его сумму;

модуль разности f(x) и суммой ряда.

2.С помощью пакета AGrapher построить графики зависимостей по трем текстовым файлам, созданным в программе Pro1.

3.Составить программу Pro2, модифицировав программу Pro1:

a)значение аргумента x функции f(x) изменять от xn до xk с шагом

xиз расчета 10 – 15 значений;

b)исключить формирование текстовых файлов для графиков;

c)результаты вычислений оформить в виде таблицы (каждая строка таблицы соответствует одному значению x и содержит форматированные результаты).

4.Выполнить программу Pro2 дважды с разными значениями ε:

a)со степенью точности, соответствующей визуальному восприятию графиков;

b)со степенью точности, достижимой при использовании вещественных переменных типа Real.

Содержание отчета

1.Название работы, номер варианта индивидуального задания.

2.Фамилия, имя, отчество и номер группы студента.

3.Вариант индивидуального задания (функция, её разложение в ряд Тейлора и область определения аргумента функции).

4.Рекуррентная формула и расчет коэффициента рекурсии с последующей его проверкой для двух членов ряда.

5.Блок-схемы программ Pro1 и Pro2.

6.Распечатки текстов программ Pro1 и Pro2.

7.Распечатка результатов работы программы Pro1.

8.Рисунок или распечатка графиков, построенных в AGrapher по трем файлам, созданным в Pro1.

9.Распечатки двух таблиц с результатами программы Pro2.

При подготовке к защите ответить на контрольные вопросы.

Справочная информация

1.Запись бесконечного ряда Тейлора:

an = a0 + a1 + a2 +... + an +..., здесь an общий член ряда;

n=0

S0, S1,… Sn,… называют частичными суммами бесконечного ряда,

n

S0 = a0 , S1 = a0 + a1, …, Sn = ak = a0 + a1 + a2 +... + an , …

k =0

Практикум по современному Фортрану

41

2.Сходящимся называется ряд, у которого последовательность частичных сумм имеет конечный предел S, т.е. limn→∞ Sn = S , иначе ряд называется расходящимся. S называется суммой сходящегося ряда.

Нахождение этой суммы является целью лабораторной работы.

3.Величина n! называется n-факториал” и вычисляется по формуле

 

n

n! = 1 2 3 … (n – 1) n = (n – 1)! n

или n! = k

при 0! = 1.

k =1

 

Комментарии к заданию

1.Обратите внимание на то, что в Вашем индивидуальном задании:

a)нумерация членов ряда может начинаться не с «0», а с «1» (n=1);

b)a0 может быть функцией от x или константой;

c)сумме может предшествовать слагаемое или сомножитель.

2.При суммировании ряда необходимо решить следующие задачи:

a)упростить вычисления - свести их к простейшим операциям;

b)уменьшить число этих операций и время расчета;

c)уменьшить погрешность вычислений.

Эти задачи решает рекуррентная формула, позволяющая вычислить значение очередного члена ряда, используя уже найденное значение предыдущего. Рекуррентная формула имеет вид:

an+1 = an Tn, где Tn коэффициент рекурсии.

3.Возможно суммирование только конечного количества членов ряда. Для сходящегося ряда limn→∞ an =0 . Следовательно, начиная с некото-

рого n, отношение |an| > ε перестанет выполняться для любого положительного ε. Этим значением n и следует ограничиться при суммировании бесконечного ряда.

4.Во избежание зацикливания программы вследствие ошибок, значение n следует ограничить, для чего в программе предусмотрена переменная Nmax (равная, например, 100). При n > Nmax суммирование прекращается и выдается сообщение с дополнительной инфор-

мацией (в том числе значение an). Аварийное сообщение может появиться, если:

a)значение |an| приближается к ε. Возможно, ряд просто «не успел» сойтись и достаточно увеличить значение Nmax ;

b)значение |an| на порядки превышает ε, то есть ряд не сходится. В этом случае следует проверить:

находится ли x в области определения аргумента;

достижима ли задаваемая погрешность вычислений ε при использовании вещественных переменных типа Real ;

Практикум по современному Фортрану