Министерство образования Российской Федерации
Новосибирский государственный технический университет
73 № 2551
П741
ИНФОРМАТИКА
Методические указания
К расчетно-графическим заданиям
Для студентов I курса факультета РЭФ
специальностей «Радиотехника»
И «Бытовая радиоэлектронная аппаратура»
Дневного отделения
Новосибирск
2003
ББК 73я7
И 73
Составили канд. техн. наук, доц. В.В. Дуркин,
канд. техн. наук, доц. О.Н. Шлыкова
Рецензент: д-р техн. наук, проф. И.С. Грузман
Работа подготовлена кафедрой радиоприемных
и радиопередающих устройств
Ó Новосибирский государственный технический университет, 2003 |
Оглавление
Стр. | |
Расчётно-графическое задание №1……………………….. | 4 |
Тема №1. Арифметические выражения и условные операторы ……………………………………………………… | 4 |
Тема №2. Вычисление сумм и произведений …………… | 9 |
Тема №3. Ряды ……………………………………………... | 14 |
Тема №4. Матрицы ………………………………………… | 20 |
Расчётно-графическое задание №2 ……………………….. | 24 |
Вычисление определенных интегралов ………………….. | 24 |
1. Общие сведения …………………………………………. | 24 |
2. Квадратурные формулы Ньютона – Котеса …………… | 24 |
3. Квадратурная формула Гаусса …………………………. | 29 |
4. Метод рядов ……………………………………………... | 31 |
Расчётно-графическое задание № 1
Тема № 1. Арифметические выражения и условные операторы
Задание
С помощью оператора if определить, находится ли точка на плоскости в замкнутой области. Если находится, то вычислить значение функции f 1 (x, y), если нет – то значение функции f 2 (x, y). Результаты выдать на экран монитора. Значения x и y ввести с клавиатуры компьютера.
Таблица 1
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |
1 | tg (x) + ln (y 2) | exp(sin2 (x)+cos2 (y)) | ||
2 | sin (x)/(1-cos y)) | exp (arctg (x 2 + y 2)) | ||
Продолжение табл. 1 | ||||
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |
3 | 2x + arctg (y) | arctg (1/ x 2 + 1/ y 2) | ||
4 | ln | x 2 + 18 y | | |||
5 | ||||
6 | exp (cos (y) + x) | |||
7 | (sin (x) + tg (y))3 | |||
Продолжение табл. 1 | ||||||||
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |||||
8 | tg (y)/(1 – cos2 (x)) | |||||||
9 | exp (x + tg (y)) | |||||||
10 | cos [(| x |–| y |)/(xy)] | cos2(x)/sin(2 x +3 y) | ||||||
11 | x2 – tg2 (y) | |||||||
12 | ln (1/ x 2 + 1/ y 2) | |||||||
Продолжение табл. 1 | ||||||||
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |||||
13 | x + tg (y) | ln | x 3 + 3 xy | | ||||||
14 | tg (y / sin2 (x)) | |||||||
15 | 2sin (x) cos (y) | |||||||
16 | tg (x)/e y | |||||||
17 | sin2 (x) + ln | y | | (x + sin (y))/cos (xy) | ||||||
Продолжение табл. 1 | ||||||||
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |||||
18 | ln | y – 3 sin (x)| | arctg (ex + y 2) | ||||||
19 | ln |arctg (y / x)| | arctg (1/ x 2+1/ y 2) | ||||||
20 | exp[(5 x +8 y)/(xy)] | |||||||
21 | exp[2sin(x)+cos(y)] | exp (1/ x + 1/ y) | ||||||
22 | x sin (y) | tg (x 2 + y 2) | ||||||
Окончание табл. 1 | ||||||||
№ п/п | f 1 (x, y) | f 2 (x, y) | Область | |||||
23 | 1/sin (x) + ln| y | | x 3 + x 2 y + y 3 | ||||||
24 | x 2 – 10 sin (xy) | |||||||
25 | e 5 x + 18 cos (y) | sin(x 2 + y 2)/(x 2 + y 2) | ||||||
Тема № 2. Вычисление сумм и произведений
Задание
С помощью оператора цикла for вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения переменных i и j указывается только в том случае, если он отличается от единицы.
Вариант № 1
,
Вариант № 2
Вариант № 3
Вариант № 4
,
Вариант № 5
, ,
Вариант № 6
,
a – вещественное число, вводимое с клавиатуры.
Вариант № 7
,
a – вещественное число, вводимое с клавиатуры,
Вариант № 8
, , ,
Вариант № 9
, ,
a – вещественное число, вводимое с клавиатуры
Вариант № 10
,
Вариант № 11
, ,
a и b – вещественные числа, вводимые с клавиатуры
Вариант № 12
,
Вариант № 13
,
Вариант № 14
,
Вариант № 15
, , ,
Вариант № 16
,
,
Вариант № 17
, n > 2,
Вариант № 18
,
Вариант № 19
,
Вариант № 20
, ,
Вариант № 21
,
Вариант № 22
,
l - вещественное число, вводимое с клавиатуры,
Вариант № 23
, ,
Вариант № 24
,
,
Вариант № 25
,
Тема № 3. Ряды
Задание
Определить: 10 членов ряда; абсолютную разность между табличной функцией и суммой ряда. Функцию pow() в программе не применять! Для вычисления члена ряда необходимо использовать рекуррентные соотношения, т.е. выражать последующий член суммы через предыдущий . Выражение для D (n)студент должен найти самостоятельно. Значение x вводить с клавиатуры.
Таблица 2
Вари- ант | Функция | Ряд | Общий член | Область допустимых значений x |
1 | 2 | 3 | 4 | 5 |
1 | sin x | |||
2 | cos x | |||
3 | ||||
4 | ln (1+ x) |
Продолжение табл.2 | ||||
1 | 2 | 3 | 4 | 5 |
5 | arctg (x) | |||
6 | arctg (x) | |||
7 | arctg (x) | |||
8 | arcctg (x) | |||
9 |
Продолжение табл.2 | ||||
1 | 2 | 3 | 4 | 5 |
10 | ||||
11 | ||||
12 | ||||
13 |
Продолжение табл.2 | ||||
1 | 2 | 3 | 4 | 5 |
14 | ||||
15 | ||||
16 | ||||
17 | ||||
18 | ||||
19 |
Окончание табл.2 | ||||
1 | 2 | 3 | 4 | 5 |
20 | ||||
21 | arcsin(x) | |||
22 | arccos(x) | |||
23 | ||||
24 | sh (2 x) | |||
25 | ch (3 x) |
Тема № 4. Матрицы
Краткие теоретические сведения
Многомерные массивы в С++ как таковые не существуют. Например, двумерный массив int mass[2][3] следует рассматривать как массив из двух элементов, каждый из которых является массивом из трёх элементов. В памяти многомерный массив располагается в порядке возрастания самого правого индекса, т.е. mass[0][0], mass[0][1], mass[0][2], mass[1][0], mass[1][1], mass[1][2] Удобно по аналогии рассматривать двумерный массив как матрицу, т.е. массив mass[2][3] есть матрица, состоящая из двух строк и трёх столбцов, элементы этой матрицы в памяти располагаются по строкам.
Доступ к элементам многомерного массива возможен как с помощью индексированных переменных, так и указателей (компилятор всегда реализует доступ к элементам массива с помощью указателей и операции разыменования!). Адрес начала двумерного массива можно определить тремя способами, например, mass[0]= =&mass[0]= =&mass[0][0]. Поэтому доступ, например, к элементу массива mass, расположенному на пересечении первой строки и четвертого столбца, возможен следующим образом: mass[0][3], *(mass[0]+3). Пусть имеется массив mass[n][m] и необходимо получить доступ к элементу mass[i][j] через указатель - *(mass[0]+i*m+j). Это общее правило, и его полезно запомнить!
Всякая программа на языке С++ представляет собой совокупность функций, выполняющих основную работу по реализации некоторого алгоритма.
Для организации связи между независимыми функциями в языке С++ используется или аппарат формальных/фактических параметров, или набор глобальных либо внешних переменных. Формальными параметрами называются аргументы функции, стоящие в её заголовке и имена которых используются для построения тела функции при её определении.
Список фактических параметров содержит произвольные выражения, разделенные запятыми, значения которых вычисляются в момент обращения к функции и копируются в область её формальных параметров. Таким образом, в языке С++ реализован механизм передачи по значению. Поскольку всякая функция работает лишь с копиями значений своих аргументов, а не с их адресами, никакие изменения значений формальных параметров в теле функции не могут отразиться на значениях фактических параметров. Это, в свою очередь, означает, что аргументы функции являются только носителями входной информации и не могут быть использованы для передачи результатов её работы в вызывающую функцию.
Для преодоления этого ограничения необходимо использовать указатели в качестве аргументов функций, передавая тем самым числовые значения соответствующих адресов.
Для того чтобы в теле всякой функции можно было обеспечить доступ к массиву, ей достаточно передать адрес его нулевого элемента, причем носителем последнего является для одномерного массива его имя (например, mass), а для двумерного – имя массива[0] (например, mass[0]).
Задание
В предлагаемых вариантах необходимо написать и протестировать отдельные функции для работы с матрицами, в том числе и функцию печати матрицы. Для организации связи между функциями использовать аппарат формальных/фактических параметров. Доступ к элементам матриц реализовывать с помощью указателей. Предусмотреть заполнение матрицы в функции main() как вручную, так и с помощью датчика случайных чисел. Функция rand() возвращает псевдослучайное целое число из диапазона 0…215-4.
Вариант № 1
Написать и протестировать функцию для перемножения матриц. Перемножение производить по следующим правилам относительно размерности сомножителей: An´mBm´k = Cn´k.
Вариант № 2
Написать и протестировать функцию, которая находит минимальный элемент матрицы, а также номера строки и столбца, на пересечении которых расположен этот элемент.
Вариант № 3
Написать и протестировать функцию, которая находит максимальный элемент матрицы, а также номер строки и столбца, на пересечении которых расположен этот элемент.
Вариант № 4
Написать и протестировать функцию, которая находит произведение ненулевых элементов двух строк матрицы.
Вариант № 5
Написать и протестировать функцию, которая находит сумму элементов двух столбцов матрицы.
Вариант № 6
Написать и протестировать функцию, подсчитывающую количество положительных элементов в матрице и их среднеарифметическое значение.
Вариант № 7
Написать и протестировать функцию для транспонирования матрицы.
Вариант № 8
Написать и протестировать функцию для сложения и вычитания квадратных вещественных матриц и определения следа результирующей матрицы. Одним из формальных параметров должен быть признак вида операции.
Вариант № 9
Написать и протестировать функцию для вычисления суммы всех элементов квадратной матрицы, расположенных над главной диагональю, и их среднеарифметического значения.
Вариант № 10
Написать и протестировать функцию для перестановки двух строк матрицы и определения максимальных элементов в каждой из этих строк.
Вариант № 11
Написать и протестировать функцию для перестановки двух столбцов матрицы и определения минимальных элементов в каждом из этих столбцов.
Вариант № 12
Написать и протестировать функцию для вычисления произведения ненулевых элементов квадратной матрицы, расположенных под главной диагональю, и их среднеарифметического значения.
Вариант № 13
Написать и протестировать функцию, которая из исходной квадратной матрицы формирует диагональную матрицу и определяет сумму её положительных элементов.
Вариант № 14
Написать и протестировать функцию, которая определяет максимальный и минимальный элементы матрицы и меняет их местами. Функция должна возвращать преобразованную матрицу и найденные элементы.
Вариант № 15
Написать и протестировать функцию, которая находит в массиве минимальный по модулю элемент и заменяет им все элементы в нечетных строках.
Вариант № 16
Написать и протестировать функцию для вычисления суммы всех элементов квадратной матрицы, расположенных под главной диагональю, и их среднеарифметического значения.
Вариант № 17
Написать и протестировать функцию, которая определяет номера столбцов и строк, на пересечении которых находится минимальный и максимальный элементы.
Вариант № 18
Написать и протестировать функцию, которая определяет число элементов матрицы больших, меньших и равных нулю.
Вариант № 19
Написать и протестировать функцию, которая определяет максимальный и минимальный элементы матрицы и сумму элементов, расположенных между ними.
Вариант № 20
Написать и протестировать функцию, которая определяет минимальный элемент матрицы и сумму элементов той строки, в которой расположен этот минимальный элемент.
Вариант № 21
Написать и протестировать функцию, которая определяет сумму элементов матрицы, значение которых больше 2,7 и меньше 5,6.
Вариант № 22
Написать и протестировать функцию, которая определяет произведение элементов матрицы, значение которых больше 10,15 или меньше – 3.
Вариант № 23
Написать и протестировать функцию, которая вычисляет сумму элементов квадратной матрицы на побочной диагонали.
Вариант № 24
Написать и протестировать функцию, которая вычисляет максимальный элемент матрицы и находит произведение элементов в столбце, содержащем этот максимальный элемент.
Вариант № 25*
Написать и протестировать функцию, которая вычисляет сумму элементов квадратной матрицы на главной и побочной диагоналях. Элемент, находящийся на пересечении диагоналей, считать один раз (если он существует).