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

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

.pdf
Скачиваний:
129
Добавлен:
21.03.2016
Размер:
1 Мб
Скачать
☆

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 ;

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