Табулирование и программирование функций

Табулирование и построение графиков функций. Получение таблиц значений шести функций в приложениях: Microsoft Excel, Mathcad и Fortran. Программирование циклических вычислительных процессов. Особенности описания и использования массивов в программе.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 17.04.2013
Размер файла 845,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Курсовая работа по информатике

Для студентов 1 курса по направлению 280700, 022000

Задание №1. Табулирование функций

Цель работы: При табулировании и построении графиков функций получить начальные навыки программирования и работы на компьютере.

Задание: Получить таблицы значений шести функций в приложениях: Microsoft Excel, Mathcad и Fortran. По полученным данным построить графики функций. По таблицам значений, полученных в Fortran, построить графики функций в Excel.

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

При записи арифметических выражений в Фортране используются следующие арифметические операции и функции (в порядке возрастания приоритета):

- , + -- вычитание и сложение;

* , / -- умножение и деление;

** -- возведение в степень;

COS(x) -- cos(x) SIN(x) -- sin(x)

TAN(x) -- tg(x) ATAN(x) -- arctg(x)

ALOG(x) -- ln(x) ALOG10(x) -- lg(x)

EXP(x) -- exp ABS(x) -- |x|

SQRT(x) -- кореньx INT(x) -- целая часть x.

ASIN(x) - arcsin(x) ACOS(x) - arcos(x)

SEC(x) - sec(x)

Порядок выполнения операций одного и того же приоритета - слева направо (кроме возведения в степень). Для изменения вышеупомянутого порядка вычислений используются круглые скобки.

Варианты заданий приведены в таблице 1.

Таблица 1. Варианты заданий

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рассмотрим пример.

Дана функция . Областью определения является вся числовая ось от ? ? до + ?. Но вследствие периодичности функции синус достаточно построить график в интервале . Областью изменения функции является интервал .

Каждая пара значений x и y должна быть записана в таблицу результатов счета. Запишем алгоритм решения первой задачи.

1. Зададим тип и значение неизменяемому параметру ?.

2. Опишем тип используемых в программе переменных.

3. Откроем файл для записи значений x и y.

4. Определим начальное a и конечное b значения переменной x.

5. Введем количество строк n для табулирования функции.

6. Вычислим шаг h цикла для изменения переменной x.

7. Организуем цикл с управляющей переменной i целого типа.

8. В цикле вычислим значения переменных x и y.

9. Напечатаем на дисплей значения x и y.

10. Повторим печать значений x и y в файл.

11. Закончим цикл.

В соответствии с алгоритмом составим Фортран-программу:

PROGRAM LAB1

REAL, PARAMETER :: PI=3.141593

REAL A, B, H, X, Y

INTEGER I, N

OPEN(1, FILE='LAB1.TXT')

A=-2./3.; B=2.*(PI-1.)/3.

PRINT *, ' N=?'; READ *, N

H=(B-A)/N

DO I=0,N

X=A+H*I

Y=0.5*SIN(3.*X+2.)

PRINT 2, X,Y; WRITE(1, 2) X,Y

END DO

2 FORMAT (' X=',F8.4,3X,'Y=',F8.4)

END PROGRAM LAB1

Прокомментируем работу программы:

- вначале после ключевого слова PROGRAM объявляется имя программы, которое обязательно должно начинаться с буквы латинского алфавита или символа $ (в общем случае ключевое слово PROGRAM с именем программы может отсутствовать);

- первый оператор задает тип и значение именованной константе PI;

- затем идут два оператора, описывающие тип используемых в программе переменных;

- оператор OPEN назначает логический номер 1 файлу «LAB1.TXT». Указанный файл создается в папке проекта либо предварительно, либо в процессе работы программы в момент выполнения оператора OPEN;

- в следующей строке через точку с запятой записаны два оператора, которые вычисляют значения переменных A и B (обратите внимание на десятичные точки в неименованных константах вещественного типа);

- оператор PRINT выводит на дисплей в свободном формате символьную константу, которая заключена в апострофы. Эта последовательность символов является подсказкой для пользователя;

- оператор READ требует ввода с клавиатуры значения целой переменной N. После нажатия клавиши [Enter] переменной N будет присвоено набранное значение;

- следующий оператор вычисляет значение переменной H;

- оператор цикла DO организует повторение вычислений в теле цикла необходимое число раз при изменении управляющей переменной I от 0 до N с шагом 1 (шаг равен 1 по умолчанию, т.к. его значение не указано);

- операторы в следующих двух строках обеспечивают вычисление арифметических выражений, записанных справа от знака равенства. Результаты присваиваются переменным X и Y;

- оператор PRINT работает под управлением оператора FORMAT с меткой 2. Он выводит на экран сначала символьную константу X=, которая в программе заключена в апострофы, затем числовое значение переменной X по дескриптору F8.4. Далее через три позиции выводится символьная константа Y=, и значение Y также по дескриптору F8.4 , где 8 - общее число позиций для выводимого числа, а 4 - количество позиций для цифр после десятичной точки. В общее число позиций включается знак отрицательного числа «-» и десятичная точка (ноль перед десятичной точкой, как правило, не печатается);

- оператор WRITE повторяет печать значений X и Y в файл «LAB1.TXT» с логическим номером 1 под управлением оператора FORMAT с меткой 2;

- предпоследний оператор END DO ограничивает тело цикла;

- последний оператор END PROGRAM LAB1 ограничивает программный модуль, заканчивая его (LAB1 или PROGRAM LAB1 могут быть опущены). Если имя программы не объявлено, то оно не может присутствовать и в операторе END.

Задание №2. Программирование ветвящихся вычислительных процессов

Цель работы: Получить навыки программирования ветвящихся вычислительных процессов. Изучить условные операторы, переменные логического типа, логические отношения и операции.

Задание: Пусть на плоскости x, y задана область D. Требуется определить «попадает» ли точка с координатами (x, y) в область D или нет. Если попадает, то необходимо вычислить функцию f1 и переменной M, значение которой является признаком «попадания» или «непопадания», присвоить значение M=1. В противном случае вычислить f2 и положить M=2.

В каждом варианте задания область D можно разбить на две подобласти: D1, D2. Подобласть D1 ограничена прямыми линиями, уравнения которых нужно составить. При этом удобно использовать уравнение прямой в отрезках на осях: . Подобласть D2 ограничена кривой второго порядка, уравнение которой указано в задании. Варианты заданий приведены в таблице 2.

Пояснение задачи

1. Для заданного варианта из таблицы нарисовать область D и выписать функции f1(x,y) и f2(x,y) . Записать уравнения, определяющие границы области, и подготовить исходные данные (координаты точек) так, чтобы часть точек находилась внутри области D , а часть -- вне ее (см. рис. 1). При этом для каждой четверти координатной плоскости рекомендуется выбрать по две точки.

2. Создать на компьютере проект для решения поставленной задачи, составить и отладить программу.

3. Для выбранных точек получить и записать результаты счета.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Пусть область D имеет вид, показанный на рисунке 1, а функции f1 и f2 заданы как .

Прямой x = 0 разобьем область D на две подобласти: D1 и D2 . Уравнения прямых, ограничивающих подобласть D1 , будут: во второй четверти ; в третьей .

Уравнение окружности с центром в начале координат, ограничивающей подобласть D2 при x >0 и y >0 , имеет вид .

Теперь можно записать, что некоторая точка (x, y) «попадает» в область D, если она «попадает» в область D1 или D2 , то есть если x ?0 и y ?x +4 и y??x?4 или x >0 и y ?0 и .

Точка (x, y) «не попадает» в область D, если x ?0 и y >x +4 или x ?0 и y <?x ?4 или x >0 и y < 0или x >0 и .

При выполнении задания можно проводить анализ как «попадания», так и «непопадания» точки в область D.

При составлении программы на Фортране для анализа «попадания» или «непопадания» точки в область 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 имеет вид

IF(L) S

Здесь: L - логическое выражение, S - исполняемый оператор.

Если логическое выражение L истинно, то выполняется оператор S , если оно ложно, то выполнится следующий за IF оператор, а S не выполняется.

Блочный оператор IF имеет вид

IF(L) THEN

< блок операторов 1 >

ELSE

< блок операторов 2 >

END IF

Правило выполнения: если логическое выражение L истинно, то выполняется < блок операторов 1 >, а если оно ложно, то выполняется < блок операторов 2 >. При отсутствии альтернативы < блок операторов 2 > вместе с ELSE опускается.

Приведем пример Фортран-программы, в которой для анализа «попадания» или «непопадания» точки используется логическая переменная C. Этой переменной присваивается значение логического выражения. Если C=.TRUE., тов блочном операторе IF (C) THEN выполняется первый блок операторов, а если C=.FALSE. , то второй блок (стоящий после ELSE).

PROGRAM LAB2

LOGICAL C

REAL X, Y, Z

INTEGER I, M

DO I=1,8

PRINT *, ' X=?, Y=? '; READ '(2F7.3)', X,Y

C=X<=0..AND.Y<=X+4..AND.Y>=-X-4..OR.&

&X>0..AND.Y>=0..AND.X**2+Y**2<=4.

IF(C) THEN

PRINT *, ' YES '

Z=F1(X,Y); M=1

ELSE

PRINT *, ' NO '

Z=F2(X,Y); M=2

END IF

PRINT 2, X,Y,Z,C,M

END DO

2 FORMAT (' X=',F7.3,3X,'Y=',F7.3,3X,'Z=',E11.4,3X,'C=', L2,3X,'M=',I2/)

END PROGRAM LAB2

FUNCTION F1(X,Y)

F1=ALOG(ABS(X+Y)+1.)

END FUNCTION F1

FUNCTION F2(X,Y)

F2=EXP(1./(ABS(X)+ABS(Y)))

END FUNCTION F2

После окончания программы описаны внутренние процедуры-функции F1 и F2. Эта программа для своего завершения требует ввести координаты 8 точек.

Варианты заданий приведены в таблице 2.

Таблица 2. Исходные данные

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Задание №3. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ

Цель работы: Получить навыки программирования циклических вычислительных процессов. Изучить циклы с шагом и циклы с условием

Задание.

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

2. Составить алгоритм вычисления с заданной точностью суммы конечного числа членов ряда в указанном диапазоне изменения параметра x с заданным шагом. Для получения шага диапазон изменения x разделить на 10.

3. Составить программу решения задачи. В программе для каждого значения x предусмотреть вычисление как приближенной, так и точной суммы соответствующего ряда y по приведенной в таблице 3 формуле.

4. Отладить и просчитать программу. Результат получить в виде таблицы, содержащей для каждого 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) , так как факториал - это, по определению, произведение последовательных натуральных чисел.

PROGRAM LAB3

REAL A, B, C, EPS, H, S, X, X0, XK, Y

INTEGER I, N

OPEN (1, FILE='LAB3.TXT')

X0=0.1; XK=1.; EPS=0.0001

H=(XK-X0)/10.

DO I=0,10

X=X0+H*I

N=1; C=-1.; B=1.; S=0.

DO

B=B*(2.*X)**2/(2.*N*(2.*N-1.)); A=C*B

N=N+1; S=S+A; C=-C;

IF (ABS(A) < EPS) EXIT

END DO

Y=2.*(COS(X)**2-1.)

PRINT 2, X,S,Y,N; WRITE (1,2) X,S,Y,N

END DO

2 FORMAT (` X=`,F6.3,3X,'S=`,E10.3,3X,'Y=`,E10.3,3X,'N=`,I5)

END PROGRAM LAB3

Результаты счета выводятся не только на дисплей, но в файл LAB3.TXT. Вывод осуществляется под управлением оператора FORMAT с меткой 2, который формирует таблицу, содержащую для каждого x из указанного диапазона приближенное и точное значения суммы ряда, а также количество просуммированных членов.

Варианты заданий приведены в таблице 3.

Таблица 3. Варианты заданий.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Задание №4. ИСПОЛЬЗОВАНИЕ МАССИВОВ

программирование табулирование график циклический

Цель работы. Изучить особенности описания и использования массивов в программе.

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

Пояснение задачи

Наряду с простыми переменными в алгоритмических языках используются переменные с индексами, называемые массивами. Массив - это упорядоченная последовательность величин, обозначаемая одним именем. Величины, из которых состоит массив, называются элементами массива. Элемент массива обозначается с помощью имени массива и индексов, следующих в круглых скобках за именем массива. Индексы отделяются друг от друга запятыми и указывают положение элемента в массиве. Индексов может быть 1, 2 и т.д. вплоть до 7. Соответственно массивы бывают одномерные, двумерные и т.д.

Все массивы, используемые в программе, должны быть описаны, так как для хранения элементов массива в определенной последовательности отводится необходимый объем памяти. При описании указываются имя массива и затем в круглых скобках через запятую граничные пары, т.е. разделенные двоеточием минимальные и максимальные значения соответствующего индекса. При отсутствии двоеточия минимальное значение соответствующего индекса в Фортране по умолчанию равно единице. Для описания массивов в Фортране используются операторы описания типа переменных (REAL, INTEGER, COMPLEX, LOGICAL, CHARACTER, DOUBLE PRECISION), а также атрибут и оператор DIMENSION.

Рассмотрим несколько примеров описания массивов. Значения граничных пар можно задавать с использованием именованных констант и константных выражений.

INTEGER, PARAMETER :: N=4

REAL, DIMENSION :: A(N,N), B(N), K(N+1,N+1), C(0:N)

В этом примере оператор REAL c атрибутом DIMENSION описывает двумерный вещественный массив A, содержащий 16 элементов; одномерный вещественный массив B, содержащий 4 элемента; двумерный вещественный массив K, содержащий 25 элементов, и одномерный вещественный массив C, содержащий 5 элементов.

Объекты с общими атрибутами можно группировать в единый список, например, следующий оператор описывает два двумерных вещественных массива D и E, каждый из которых имеет 3 строки и 4 столбца.

REAL, DIMENSION (3,4) :: D, E

Операторы описания типа могут использоваться для описания массивов и без атрибутов, но с указанием граничных пар, например,

INTEGER MIN(2,2), MAX(10)

REAL Q(5), SUMMA(3,3)

Здесь: MIN и MAX - целые массивы, содержащие 4 и 10 элементов соответственно; Q и SUMMA - вещественные массивы, содержащие 5 и 9 элементов.

Оператор DIMENSION также может использоваться для описания массивов, например, для описания одномерного вещественного массива F из 10 элементов

REAL F

DIMENSION F(-2:7)

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

В Фортране список операторов ввода READ и вывода PRINT или WRITE может содержать как имена простых переменных и элементов массива, так и имена массивов. В последнем случае вводу-выводу подлежат все элементы массива в «естественной последовательности» (т.е. сначала растет первый индекс, затем второй и т.д.). Так, если в программе описан массив A(2,2) и имеется оператор ввода READ *, A, то численные значения необходимо задавать в следующей последовательности: A(1,1), A(2,1), A(1,2), A(2,2), т.е. любая матрица вводится по столбцам. Для изменения порядка ввода-вывода или если требуется передать только часть элементов массива можно использовать неявную форму оператора цикла. Например, ввод матрицы A(2,2) по строкам осуществляет оператор READ *, ((A(I,J), J=1,2), I=1,2).

Не следует забывать, что в Фортране функции «что вводить (выводить)» и «как вводить (выводить)» распределены между операторами ввода-вывода и оператором FORMAT.

Если в программе предусмотрен ввод исходных данных с клавиатуры, то в процессе отладки приходится задавать одни и те же численные значения много раз. Поэтому, когда исходных данных достаточно много, удобнее записать их перед счетом программы в файл данных, а в программе предусмотреть оператор, считывающий данные из файла данных. Кроме того, результаты также имеет смысл выводить в файл данных, чтобы иметь возможность получить распечатку результатов счета. Обращение к файлу данных производится по его логическому номеру N, указанному в операторах READ (N,…) или WRITE (N,…). С помощью оператора OPEN можно как назначать логические номера уже имеющимся файлам, так и создавать новые файлы с указанием соответствующего логического номера, например, OPEN (1, FILE='LAB4.TXT'). После выполнения этого оператора файлу LAB4.TXT будет соответствовать логический номер 1. Файл LAB4.TXT создается в папке проекта либо предварительно до запуска программы на счет, либо в процессе работы программы в момент выполнения оператора OPEN. Для завершения доступа к файлу используется оператор CLOSE.

Отличительной особенностью Фортрана является развитая система операций с массивами. Операции над массивами и сечениями массивов задают параллелизм действий над компонентами массивов (или массива). Такие средства, с одной стороны, позволяют пользователю лаконично и сжато описать алгоритм обработки массивов и, с другой стороны, дают возможность компилятору генерировать более эффективный код с учетом особенностей конкретного компьютера. Очевидно, что наиболее эффективно использование этих возможностей для вычислительных систем, имеющих аппаратные средства для векторной обработки.

В Фортран встроено большое число функций, позволяющих:

· выполнять вычисления в массивах, например, суммировать элементы массива или находить его максимальный элемент;

· преобразовывать массивы, например, можно получать из одномерного массива двумерный;

· получать справочные данные о массиве (размер, форма и значения границ каждого измерения).

1. Ввод одномерного массива B(8) можно осуществить несколькими способами:

а) READ (1,*) B

Численные значения (8 значений) перед запуском программы на счет записываются через запятую или пробел в файл данных, соответствующий логическому номеру 1. Этот способ наиболее предпочтителен.

б) PRINT 1

1 FORMAT (` INPUT VECTOR B(8)')

READ *, B

После появления на экране монитора текста INPUT VECTOR B(8) численные значения элементов массива вводятся с клавиатуры (8 значений через запятую или пробел).

в) PRINT 1

FORMAT (` INPUT VECTOR B')

DO I=1,8

PRINT 2, I

READ *, B(I)

END DO

FORMAT (` B(`,I2,')=')

Массив вводится с клавиатуры поэлементно по одному значению в строку после появления на экране соответствующей подсказки.

2. Ввод двумерного массива A(4,4)

а) из файла данных построчно с использованием неявной формы цикла

READ (1,*) ((A(I,J), J=1,4), I=1,4)

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

б) из файла данных построчно с использованием сечения массива (простейшей формы индексного триплета)

READ (1,*) (A(I,:),I=1,4)

Файл данных такой же, как и в случае а).

в) с клавиатуры построчно через запятую или пробел

READ *, (A(I,:),I=1,4)

3. Вывод одномерного массива B(4) на экран.

PRINT 5, B

5 FORMAT (` VECTOR B'/4F10.4)

При выводе в файл данных оператор PRINT заменяется на оператор WRITE, например, при выводе двумерного массива A(4,4)

WRITE (1,10) (A(I,:), I=1,4)

10 FORMAT (` MATRICA A'/4(4F10.4/))

4. Суммирование элементов одномерного массива B(10)

а) с использованием встроенной функции SUM

S=SUM(B)

б) по следующему алгоритму: начальное значение суммы принимается равным нулю S = 0, затем в цикле по i от 1 до 10 накапливается сумма

S=0.

DO I=1,10

S=S+B(I)

END DO

5. Произведение элементов одномерного массива B(10) .

а) целесообразно использовать встроенную функцию PRODUCT

P=PRODUCT(B)

б) можно составить алгоритм, аналогичный алгоритму сложения элементов массива, в котором начальное значение произведения необходимо положить равным единице, а операцию сложения заменить произведением

P=1.

DO I=1,10

P=P*B(I)

END DO

6. Пусть требуется определить максимальный элемент массива B из N элементов и его номер K.

а) Определение максимального (или минимального) элемента одномерного массива S =max (b1,b2,…,bn ) и номера k этого элемента выполняется по следующему алгоритму: сначала за максимальный принимается первый элемент массива S = b1 и, следовательно, номером k максимального элемента будет единица k =1. Затем в цикле по i от 2 до N текущее значение максимального S сравнивается с bi . Если условие S <bi не выполняется, то цикл повторяется. Если условие S <bi выполняется, то текущему значению максимального S присваивается значение bi , а его номеру - значение i .

INTEGER, PARAMETER :: N=10

REAL B(N) /1.,2.,3.,4.,5.,6.,5.,4.,3.,2./

S=B(1); K=1

DO I=2,N

IF (S.LT.B(I)) THEN

S=B(I); K=I

END IF

END DO

PRINT *, ' S=', S, ` K=', K

END

б) Определение максимального (или минимального) элемента одномерного массива S =max (b1,b2,…,bn ) и номера k этого элемента можно выполнить с использованием встроенных функций MAXVAL и MAXLOC.

INTEGER, PARAMETER :: N=10

REAL B(N) /1.,2.,3.,4.,5.,6.,5.,4.,3.,2./

S=MAXVAL(B); K=MAXLOC(B)

PRINT *, ' S=', S, ` K=', K

END

7. Пусть требуется расположить элементы одномерного массива B(10) в порядке невозрастания, т.е. так чтобы для всех элементов массива выполнялось условие: bi ?bi+1 при i =1,9 . Рассмотрим один из способов решения этой задачи.

Сначала из всех элементов bi при i =1,10 найти максимальный (его величину S и номер k ), затем переставить первый и максимальный элементы. Из оставшихся девяти элементов bi при i =2,10 найти максимальный и поменять его местами со вторым и т.д. Перестановка двух элементов массива с номерами k и j выполняется следующим образом: элемент bk равен S , поэтому сначала следует заменить bk на bj, а затем bj присваивается значение S. Программа упорядочения элементов массива будет иметь следующий вид:

DO J=1,9

S=B(J); K=J

DO I=J+1,10

IF (S.LT.B(I)) THEN

S=B(I); K=I

END IF

END DO

B(K)=B(J); B(J)=S

END DO

Внешний цикл по j изменяет номер элемента, с которого начинается поиск.

8. Пусть требуется составить одномерный массив С(4) из максимальных элементов строк матрицы А(4,4). Программа строится по схеме двойного цикла. Параметром внешнего цикла является номер строки i . Во внутреннем цикле по j определяется максимальный элемент строки:

DO I=1,4

C(I)=A(I,1)

DO J=2,4

IF (C(I).LT.A(I,J)) C(I)=A(I,J)

END DO

END DO

9. Пусть требуется умножить матрицу А(4,4) на вектор В(4). Результатом умножения матрицы А(4,4) на вектор В(4) является вектор С(4), элементы которого определяются по формуле .

а) используем встроенную функцию MATMUL, которая выполняет матричное умножение операндов

C=MATMUL(A,B)

б) алгоритм строится по схеме двойного цикла: внешний цикл по параметру i, во внутреннем цикле по параметру j производится суммирование:

DO I=1,4

C(I)=0.

DO J=1,4

C(I)=C(I)+A(I,J)*B(J)

END DO

END DO

10. Пусть требуется найти произведение D матрицы A на матрицу F, где A(4,4), F(4,4) и D(4,4). Умножение матрицы на матрицу осуществляется по схеме тройного цикла в соответствии с формулой , где i=1,4 и j=1,4.

а) используем схему тройного цикла с суммированием во внутреннем цикле

DO I=1,4

DO J=1,4

D(I,J)=0.

DO K=1,4

D(I,J)=D(I,J)+A(I,K)*F(K,J)

END DO

END DO

END DO

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

DO I=1,4

DO J=1,4

D(I,J)=SUM(A(I,:)*F(:,J))

END DO

END DO

11. Пусть требуется вычислить элементы матрицы D(4,4) по формулам:

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

DO I=1,4

DO J=1,4

IF ((B(I)+B(J)).LT.-1.) THEN

D(I,J)=(B(I)+B(J))**2

ELSE IF ((B(I)+B(J)).GT.1.) THEN

D(I,J)=SQRT(B(I)+B(J))

ELSE

D(I,J)=2.*(B(I)+B(J))

END IF

END DO

END DO

Варианты заданий

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

.

1. Заданы массивы А(4,4), В(4). Вычислить элементы массивов С(4), D(4,4), F(4,4) в соответствии с формулами:

.

Вывести на печать массивы C, D, F.

2. Заданы массивы A(4,4), B(4). Вычислить элементы массива по формуле:

Найти максимальный элемент массива P=C+B. Преобразовать матрицу A, разделив все ее элементы на найденный максимум. Печатать A, B, C, P.

3. Заданы массивы A(4,4), B(4). Из 1-й строки А вычесть 3-ю и в полученной матрице найти максимальный элемент. Из всех элементов массива В вычесть найденный максимум. Печатать А, В.

4. Задан массив В(4). Вычислить элементы массива С(4) по формулам

Вычислить элементы матрицы D(4,4) по формуле . Найти . Из всех элементов массива B вычесть S. Печатать B, C, D, S.

5. Задан массив А(4,4). Составить вектор С(4) из минимальных элементов в столбцах А. Из каждой строки А вычесть С. Печатать А, С.

6. Задан массив А(4,4). Составить вектор С(4) из максимальных модулей элементов в строках А. Элементы вектора С разделить на максимальный элемент С. Из диагональных элементов А вычесть С. Печатать A, C.

7. Заданы массивы А(4,4), В(4). Найти С=АВ. Максимальный элемент С и его номер k . Из k-й строки матрицы А вычесть С. Печатать A, B, C, k.

8. Заданы массивы А(4,4), В(4). Найти максимальные элементы массивов А и В и поменять их местами. Печатать А, В.

9. Задан массив В(4). Вычислить элементы массива С(4) по формулам

Вычислить элементы матриц D(4,4) и F(4,4) . Найти Q=DF. Печатать С, D, F, Q.

10. Заданы массивы А(4,4), В(4). Составить вектор С(4) из максимальных элементов в строках А. Вычислить P=BC. Из диагональных элементов А вычесть P. Печатать А, В, С, Р.

11. Задан массив А(4,4). Вычислить элементы массива по формулам

Найти F=AD. Печатать A, D, F.

12. Заданы массивы А(4,4), В(4). Найти максимальный элемент В и его номер k, минимальный элемент В и его номер l . В матрице А элемент akl заменить на найденный максимум, alk - на минимум. В векторе В поменять местами максимальный и минимальный элементы. Вычислить C=AB. Печатать А, В, С.

13. Заданы массивы А(4,4), В(4). Упорядочить B в порядке не убывания. Из каждой строки А вычесть В. Печатать А, В.

14. Заданы массивы А(4,4), В(4). Вычислить С=АВ. Упорядочить С в порядке не возрастания. Из столбцов А вычесть С. Печатать А, В, С.

15. Задан массив В(4). Вычислить С(4) по формулам:

.

Вычислить элементы D(4,4) по формулам

. Печатать B, C, D.

16. Заданы массивы А(4,4), В(4). Упорядочить строки А по не убыванию значений первых элементов строк. Вычислить элементы вектора С(4) по формуле . Печатать A, B, C.

17. Задан массив В(4). Вычислить элементы матрицы D(4,4) по формулам

Найти максимальные элементы D и B, поменять их местами. Печатать B, D.

18. Задан массив В(4). Вычислить элементы матрицы D(4,4) по формулам

Из всех элементов D вычесть максимальный элемент В. Вычислить C=DB. Печатать B, C, D.

19. Задан массив А(4,4). Вычислить элементы вектора С(4) по формулам:

.

Вычислить P=AC. Из диагональных элементов A вычесть вектор Р. Печатать А, С, Р.

20. Заданы массивы A(4,4), В(4). В матрице A найти минимальный и максимальный элементы, поменять их местами. Вычислить C=АВ. Печатать A, В, С.

21. Заданы массивы A(4,4), В(4). В массиве B найти максимальный и минимальный элементы, поменять их местами. Вычислить C=АВ. Из диагональных элементов A вычесть вектор С. Печатать А, В, С.

22. Задан массив A(4,4). Из диагональных элементов A вычесть максимальный элемент А. Вычислить вектор С(4) как сумму 1-й и 3-й строк А. Вычислить P=АС. Печатать A, С, Р.

23. Заданы массивы А(4,4), В(4). Вычислить C=АВ. Упорядочить C в порядке не убывания. Из диагональных элементов A вычесть вектор С. Печатать А, В, С.

24. Заданы массивы A(4,4), В(4). Вычислить элементы массива С(4) как сумму элементов в соответствующих строках А. Из диагональных элементов А вычесть С. Вычислить P=АС. Печатать A, С, Р.

25. Задан массив А(4,4). Вычислить элементы массива D(4,4) по формулам

.

Вычислить F=AD. Печатать A, D, F.

26. Задан массив B(4). Вычислить элементы массива C(4) по формуле . Вычислить элементы массива D(4,4) по формуле . Печатать B, C, D.

27. Задан массив B(4). Вычислить элементы массива C(4) по формуле . Вычислить элементы массива D(4,4) по формуле . Печатать B, C, D.

28. Заданы массивы A(4,4), В(4). Вычислить C=АВ. Из первой строки A вычесть B, из второй строки A вычесть вектор С. Печатать A, B, C.

29. Заданы массивы A(4,4), В(4). Найти максимальный и минимальный элементы B и поменять их местами. Вычислить C=АВ. Печатать A, В, С.

30. Задан массив B(4). Вычислить элементы массива C(4) по формуле: . Найти и поменять местами максимальные элементы B и С. . Печатать B, C, D.

Задание №5. РЕШЕHИЕ HЕЛИHЕЙHЫХ УРАВHЕHИЙ

Задание: Используя методы половинного деления и Ньютона, найти корни нелинейных уравнений f1(x)=0.

Решение нелинейных (трансцендентных или алгебраических) уравнений вида f(x)=0 заключается в отыскании одного или нескольких корней, т.е. таких значений аргумента x, для которых функция f(x) обращается в нуль. В общем случае функции f(x) не имеют аналитических формул для своих корней, поэтому приходится использовать приближенные методы.

Решение нелинейных уравнений обычно состоит из двух этапов:

1) Отделение, или локализация корней, т.е. отыскание таких отрезков [a,b] (одного или нескольких), внутри которых имеется только один корень нелинейного уравнения.

2) Уточнение приближенного значения корня до некоторой заданной степени точности. Отделить корни в некоторых случаях можно графически. Так, если уравнение имеет вид cos(x)-x=0, то переписав его в виде cos(x)=x и построив графики функций y1=cos(x) и y2=x, найдем приближенное значение корня как точку пересечения функций y1 и y2.

Локализовать корень уравнения можно также программно, вычисляя функцию f(x) для значений x, изменяющихся с некоторым заданным шагом h. Пpи этом отыскиваются два таких соседних значения x, для которых f(x) имеет противоположные знаки. Алгоритм отделения корня удобно оформить в виде подпрограммы. В качестве параметров подпрограммы можно выбрать следующие: F,XL,XR,H,A,B,IER.

Входные параметры:

F - имя внешней функции f(x);

XL,XR - соответственно левая и правая границы отрезка оси x, на котором отделяется корень уравнения;

H - шаг перебора аргумента функции.

Выходные параметры:

A,B - соответственно левая и правая границы отрезка [a,b], содержащего первый, считая от точки XL вправо, корень нелинейного уравнения;

IER - код ошибки. IER=0, если на участке от XL до XR с шагом H найден отрезок [A,B], содержащий корень уравнения; IER=1, если корень не локализован.

Алгоритм отделения корня нелинейного уравнения может быть следующим:

1) Зададим IER=1, т.е. предполагаем, что на отрезке от XL до XR корней нет. В дальнейшем проверим, так ли это.

2) Зададим начальное значение аргумента функции X=XL.

3) Вычислим значение функции в точке X: Y=F(X).

4) Изменим значение аргумента функции на величину шага : X=X+H .

5) Проверим, лежит ли X внутри [XL,XR]: если X>XR , то возвращаемся в вызывающую программу. В этом случае отрезок [A,B] не найден,IER=1.

6) Вычислим значение функции в новой точке X: Z=F(X).

7) Проверим, изменила ли функция знак при последнем изменении аргумента. Если не

изменила, то опять меняем X : если Y*Z>0 идти на 4.

8) В противном случае определим границы отрезка [A,B] по формулам A=X-H, B=X,

изменим код ошибки IER=0 и вернемся в вызывающую программу.

Для уточнения корня нелинейного уравнения до заданной точности можно воспользоваться методами половинного деления, Ньютона, простых итераций и другими.

МЕТОД ПОЛОВИHHОГО ДЕЛЕHИЯ состоит в построении последовательности вложенных отрезков, на концах которых функция принимает значения разных знаков. Каждый последующий отрезок получают делением предыдущего пополам. Процесс построения последовательности отрезков позволяет найти корень уравнения f(x)=0 с любой заданной точностью.

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

следующие: F,A,B,EPS,C,N,IER.

Входные параметры:

F - имя внешней функции f(x);

A,B - соответственно левая и правая граница отрезка,содержащего один корень уравнения f(x)=0;

EPS - точность вычисления корня.

Выходные параметры:

C - корень уравнения (если он найден);

N - количество итераций, которое потребовалось выполнить для вычисления корня с заданной точностью;

IER - код ошибки. IER=0, если корень найден; IER=1, если A>B или на отрезке [A,B] нет корня, т.е. если F(A)*F(B)>0.

Алгоритм метода половинного деления:

1) Зададим код ошибки IER=1.

2) Проверим, правильно ли заданы исходные данные: если F(A)*F(B)>0 или A>B, то возвращаемся в вызывающую программу.

3) Зададим текущие границы отрезка, содержащего корень A1=A, B1=B; зададим начальное число итераций N=0 и IER=0; вычислим значение функции в точке A1: Y=F(A1).

4) Вычислим середину отрезка [A1,B1]: C=.5*(A1+B1); изменим счетчик итераций на единицу : N=N+1.

5) Если длина текущего отрезка [A1,B1] меньше заданной точности, то возвращаемся в вызывающую программу.

6) Проверим, внутри какого из отрезков [A1,C] или [C,B1] лежит корень уравнения. Если корень лежит внутри [A1,C], то изменяем правую текущую границу отрезка, содержащего корень, в противном случае - левую: если F(A1)* F(C)<0, то B1=C, иначе A1=C; итерационный процесс повторяется с пункта 4.

Метод половинного деления - наиболее унивеpсальный метод отыскания коpней нелиней ных уpавнений. К его недостаткам относится невысокая скоpость сходимости.

МЕТОД HЬЮТОHА (метод касательных) является одним из наиболее эффективных методов нахождения коpней нелинейных уpавнений. Он состоит в постpоении итеpационной последовательности xi+1=xi-f(xi)/f'(xi), сходящейся к коpню уpавнения f(x)=0. Геометpическая интеpпpетация метода следующая: если чеpез точку с кооpдинатами (xi ,f(xi)) пpовести касательную к функции y=f(x), то точка пеpесечения этой касательной с осью абсцисс пpинимается за уточненное значение коpня xi+1. Метод Hьютона особенно эффективен, когда известно хоpошее пpиближение коpня и в окpестности коpня функция имеет большую кpутизну.

В качестве паpаметpов подпpогpаммы метода Hьютона можно pекомендовать следующие:

F,PF,X0,EPS,NMAX,X,N,IER.

Входные паpаметpы:

F - имя внешней функции f(x);

PF - имя внешней функции f '(x);

X0 - начальное пpиближение для коpня уpавнения;

EPS - точность вычисления коpня;

NMAX - максимальное количество итеpационных циклов.

Выходные паpаметpы:

X - коpень уpавнения;

N - количество итеpаций, выполненных для вычисления коpня с заданной точностью;

IER - код ошибки. Если коpень найден, то IER=0; если коpень не найден за NMAX итеpационных циклов, то IER=1.

Используемый в подпpогpамме метода Hьютона алгоpитм:

1) Зададим: IER=1; начальное значение количества итеpаций N=0; текущее значение коpня X=X0.

2) Выполним итеpационный цикл: изменим содеpжимое счетчика итеpаций на единицу N=N+1; если количество итеpаций пpевысило NMAX, осуществим возвpат в вызывающую пpогpамму; вычислим уточненное значение коpня по фоpмуле Y=X-F(X)/PF(X); вычислим модуль pазности между уточненным и текущим значениями коpня E=ABS(Y-X); в качестве нового текущего зададим уточненное значение коpня X=Y; пpовеpим, следует ли пpодолжать уточнение коpня: если E>EPS, то итеpационный цикл следует повтоpить с начала пункта 2.

3) Если точность вычисления коpня достигнута, то следует изменить код ошибки IER=0 и осуществить возвpат в вызывающую пpогpамму.

Один из недостатков метода Hьютона состоит в том, что пользуясь им, пpиходится диффеpенциpовать функцию f(x). Если сделать это затpуднительно, то можно пpоизводную заменить конечной pазностью.

При выполнении задания требуется:

1) Построить графики функций y1=f1(x) и y2=f2(x) в MathCad для того, чтобы определить количество корней и отрезки, где они расположены. Функции могут иметь один, несколько или бесчисленное множество корней. Необходимо решить вопрос с преподавателем, какие корни подлежат определению.

2) Составить все необходимое для расчетов программное обеспечение: подпрограммы-функции для вычисления f1(x), f1'(x), f2(x), f2'(x) ,p1(x), p2(x); подпрограммы для локализации корней, методов половинного деления, Ньютона, простых итераций; головную программу. 3) Провести счет. Результаты оформить в виде таблицы. Предусмотреть печать не только окончательных, но и промежуточных результатов ( отрезков [ A, B ], числа итераций, кодов ошибок)

Варианты задания приведены в таблице 4.

Таблица 4. Варианты заданий

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

21

22

23

24

25

26

27

28

29

30

Рекомендуется в качестве отрезка [A, B] для всех вариантов принять [0; 1]. Кроме № 10, интервал [0; 1.5], №20, интервал [1.5; 2.5], №23, интервал [1.5; 2.5]

Размещено на Allbest.ru

...

Подобные документы

  • Составление отчетной ведомости "Магазины" в Excel 2013. Работа с таблицами семейства Microsoft Office. Построение круговой диаграммы и гистограммы, графиков. Разработка процедур для табулирования функций. Программирование функций пользователя на VBA.

    курсовая работа [2,6 M], добавлен 03.04.2014

  • Пакет Microsoft Office. Электронная таблица MS Excel. Создание экранной формы и ввод данных. Формулы и функции. Пояснение пользовательских функций MS Excel. Физическая постановка задач. Задание граничных условий для допустимых значений переменных.

    курсовая работа [3,4 M], добавлен 07.06.2015

  • Особенности использования встроенных функций Microsoft Excel. Создание таблиц, их заполнение данными, построение графиков. Применение математических формул для выполнения запросов с помощью пакетов прикладных программ. Технические требования к компьютеру.

    курсовая работа [1,1 M], добавлен 25.04.2013

  • Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц.

    курсовая работа [5,8 M], добавлен 24.05.2014

  • Процессор электронных таблиц Microsoft Excel - прикладная программа, предназначенная для автоматизации процесса обработки экономической информации, представленной в виде таблиц; применение формул и функций для производства расчетов; построение графиков.

    реферат [2,4 M], добавлен 03.02.2013

  • Программирование вычислительных процессов на языке FORTRAN для обеспечения взаимодействия системы "Человек-Производство-Природа". Использование массивов для составления циклов подсчета уровня экологического загрязнения, затрат на переработку отходов.

    курсовая работа [2,0 M], добавлен 30.05.2014

  • Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.

    дипломная работа [1,7 M], добавлен 16.02.2016

  • Математические возможности Mathcad и Microsoft Excel. Преобразование алгебраических выражений. Вычисление значения функции. Решение уравнений и систем. Вычисление значения интеграла, производных и пределов. Построение графиков функций. Работа с матрицами.

    курсовая работа [559,5 K], добавлен 15.07.2012

  • Вычисление выражений, использование стандартных функций; работа с графикой. Порядок действий при вычислении, способы ввода данных с клавиатуры. Построение таблиц функций. Организация циклов в программе, итерационные процессы. Работа с массивами чисел.

    контрольная работа [614,7 K], добавлен 16.09.2012

  • Вычисление значений выражений при вещественных типах данных float и double. Нахождение суммы элементов, используя оператор цикла. Вычисление функций с разложением в степенной ряд. Работа со строками. Обработка массивов с использованием функций.

    лабораторная работа [24,3 K], добавлен 09.02.2010

  • Особенности параллельного программирования высокопроизводительных многопроцессорных или многомашинных вычислительных комплексов. Основные положения и понятия стандартов MPI и OpenMP. Средства компиляции параллельных операторов для языков C и Fortran.

    лекция [177,9 K], добавлен 22.10.2014

  • Технология работы с программой Microsoft Excel, ее функциональные возможности и взаимодействие с другими программами Office. Методика выполнения расчетов, вычисления логарифмических и тригонометрических функции в Excel. Построение графиков и диаграмм.

    контрольная работа [1,2 M], добавлен 05.06.2009

  • Создание круговой диаграммы в табличном процессоре Microsoft Office Excel. Построение графиков математических функций. Назначение и алгоритм построение диаграммы с помощью Мастера диаграмм. Типы диаграмм в Excel. Метки строк и столбцов диаграммы.

    лабораторная работа [1,6 M], добавлен 15.11.2010

  • Создание электронных таблиц в MS Excel, ввод формул при помощи мастера функций. Использование относительной и абсолютной ссылок в формулах. Логические функции в MS Excel. Построение диаграмм, графиков и поверхностей. Сортировка и фильтрация данных.

    контрольная работа [2,3 M], добавлен 01.10.2011

  • Построение эмпирических формул методом наименьших квадратов. Линеаризация экспоненциальной зависимости. Элементы теории корреляции. Расчет коэффициентов аппроксимации, детерминированности в Microsoft Excel. Построение графиков функций, линии тренда.

    курсовая работа [590,9 K], добавлен 10.04.2014

  • Понятие и возможности MS Excel. Основные элементы его окна. Возможные ошибки при использовании функций в формулах. Структура электронных таблиц. Анализ данных в Microsoft Excel. Использование сценариев электронных таблиц с их практическим применением.

    курсовая работа [304,3 K], добавлен 09.12.2009

  • Определение возможностей математического пакета и изучение методов вычисления выражений в Mathcad. Возможности построения графиков функций одной переменной. Просмотр и способы построения графика функции одного аргумента и участков двухмерных графиков.

    контрольная работа [384,8 K], добавлен 06.03.2011

  • Практика построения графиков с использованием функций и работа с мастером диаграмм в ПП Microsoft Excel. Применение встроенных функций работы с матрицами для решения системы линейных уравнений. Практика создания запросов при работе с базами данных.

    контрольная работа [436,1 K], добавлен 08.08.2011

  • Программа Microsoft Excel для работы с таблицами данных и формулами. Абсолютные и относительные ссылки. Использование мастера функций, ввод ее параметров. Суммирование, построение диаграмм и графиков. Арифметические и логические табличные формулы.

    курсовая работа [47,3 K], добавлен 28.11.2009

  • Решение нелинейного уравнения вида f(x)=0 с помощью программы Excel. Построение графика данной функции и ее табулирование. Расчет матрицы по исходным данным. Проведение кусочно-линейной интерполяции таблично заданной функции с помощью программы Mathcad.

    контрольная работа [1,8 M], добавлен 29.07.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.