Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛекцииЛаб(Часть_2_Книги).doc
Скачиваний:
4
Добавлен:
03.05.2019
Размер:
988.16 Кб
Скачать

Лабораторная работа № 12.

Тема. Указатели на функции.

Требования и общие указания к заданиям.

  • Составить функцию, которая по заданной формуле (Симпсона, трапеций, прямоугольников и др.) вычисляет значение определённого интеграла от произвольной функции одной переменной или решает произвольное нелинейное уравнение f(x)=0 с помощью заданного численного метода.

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

  • Функцию для вычисления определённого интеграла проверить, используя аналитическое выражение для первообразной или с помощью какой-нибудь системы компьютерной математики (Mathcad, Mathematica и др.).

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

  • Запрограммировать проверку найденных решений нелинейных уравнений.

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

В. Задачи второго среднего уровня.

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной по формуле правых прямоугольников:

,

где n фиксировано, . Составленную функцию проверить для вычисления интеграла . Значение функции y=sin(t) вычислять с заданной точностью ., используя разложение в ряд Тейлора:

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной. по формуле левых прямоугольников

,

где n фиксировано, . Составленную функцию проверить для вычисления интеграла . Значение функции y=cos(t) вычислять с заданной точностью ., используя разложение в ряд Тейлора:

.

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной по формуле средних прямоугольников

,

где n фиксировано, Составленную функцию проверить для вычисления интеграла Значение функции y=et , где

t= 1/x, вычислять с заданной точностью , используя разложение в ряд Тейлора:

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной с помощью составной формулы трапеций:

где n фиксировано, . С помощью составленной функции вычислить значение интеграла для n=3, 6, 9. Для вычисления y = , где t= , составить и использовать функцию, которая реализует следующий итерационный алгоритм: … Вычисления продолжаются до тех пор, пока не выполнится условие . Массив y не формируется, достаточно двух переменных для старого и нового значений y.

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу трапеций:

где n фиксировано, . С помощью составленной функции вычислить значения интеграла для с = 1, 1.2, 1.4, …, 2.8, 3. Для вычисления y = можно использовать стандартную встроенную функцию или вычислять по итерационной формуле, приведенной в варианте 4.

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу Симпсона:

где n фиксировано, . С помощью составленной функции вычислить значение интеграла . Значение функции y=et , где t= -x2, вычислять с заданной точностью , используя разложение в ряд Тейлора:

  1. Составить функцию, которая вычисляет значение определённого интеграла от произвольной функции одной переменной, используя составную формулу Симпсона:

где n фиксировано, . С помощью составленной функции вычислить значение интеграла для n=6. Значение функции y=ln(1+t) , где t=x2, вычислять с заданной точностью , используя разложение в ряд Тейлора: .

  1. Составить функцию для вычисления определённого интеграла от произвольной функции одной переменной по следующей формуле:

I ,

где n фиксировано и кратно трём, , , С помощью составленной функции вычислить значения интегралов для k = 1/4, 1/2, 1, 2, 4.

  1. Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом деления отрезка пополам с точностью . Используя эту функцию, решить уравнения для a = 0.5+0.1k, k=0,1,2,3,4,5 с точностью 1=0.1.

  2. Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом простой итерации с точностью . Используя эту функцию, решить уравнения с точностью 1=0.0001. Указание. В методе простой итерации исходное уравнение приводится к виду x=(x). Начиная с некоторого заданного начального значения , строим последовательность по правилу . Вычисления прекращаем, если на некотором шаге получим , где — заданная точность решения уравнения.

  3. Составить функцию для приближённого решения произвольного нелинейного уравнения f(x)=0 методом Ньютона с точностью . Используя эту функцию, решить уравнения 3x-ekx = 0 для k = 1, 2, 3, 4, 5 с точностью 1=10-5. Значение et вычислять с заданной точностью 2 = 10-6 с помощью разложения в ряд Тейлора

et=1+t+ .

Указание. В методе Ньютона по заданному начальному приближению xо строим последовательность по правилу

; n=0,1, 2, 3, …

Вычисления продолжаются до тех пор, пока не выполнится условие . Массив x не формируется, достаточно двух переменных для старого и нового значений x.

  1. Составить функцию для приближённого решения нелинейного уравнения f(x)=0 с точностью  методом секущих. Используя эту функцию, решить уравнения для = 2(0.1)3 с точностью 1=10-5. Указание. В методе секущих по двум начальным приближениям строим последовательность по правилу

; n= 1,2, 3, …

Вычисления продолжаются до тех пор, пока не выполнится условие . Массив x не формируется, достаточно двух переменных для старого и нового значений x.

  1. Составить функцию для решения произвольного нелинейного уравнения f(x) модифицированным методом секущих с точностью . Используя эту функцию, решить уравнение для =3(0.5)7 с точностью = . Указание. В модифицированном методе секущих по двум начальным приближениям строим последовательность по правилу

для n=1, 2, …, при . Вычисления прекращаем, если на некотором шаге получим , где — заданная точность решения уравнения.

  1. Составить функцию, которая находит приближенно, с точностью до 0,001, минимум произвольной функции от одной переменной на отрезке [u, v]. С помощью составленной функции найти минимум функции y= +sin(x) на отрезке (-0.9, 0.9). Значение функции y= sin (x) вычислять с заданной точностью , используя разложение в ряд Тейлора:

  1. Составить функцию, которая выводит таблицу значений произвольной функции от одной переменной на отрезке [u, v] с шагом h. С помощью составленной функции построить таблицу значений функции y=arctg(x) на отрезке [-1, 1] с шагом h=0.1. Значение функции y=arctg(x) вычислять с заданной точностью , используя разложение в ряд:

С. Задачи повышенной сложности.

1— 8. Найти приближённое значение определённого интеграла с заданной точностью , используя соответствующие (см. уровень В) квадратурные формулы. Это означает, что значение интеграла вычисляем не для одного фиксированного количества (n) разбиений отрезка [a, b], а используем двойной пересчёт. Сначала интеграл вычисляем для n разбиений, затем для 2n, 4n и т.д. Вычисления прекращаем, если на некотором шаге получим значение интеграла, полученное на предыдущем шаге, а - значение интеграла, полученное на данном текущем шаге.

Лабораторная работа 13.

Тема: Рекурсивные функции.

Требования и общие указания к заданиям.

Выполнить задания двумя способами: 1) используя механизм рекурсии;

2) разработать нерекурсивный алгоритм и запрограммировать его с помощью обычного цикла. Оба варианта включить в один проект в виде отдельных функций.

B. Задачи второго среднего уровня.

1. Вычислить для заданного натурального n:

.

2.Найти n-й член числовой последовательности, которая определяется рекуррентной формулой

a1 = 1, a2 = 2, a3 = 3, an+1 = 3an + 2an+ an–2.

  1. Для заданных вещественном x и натуральном n найти значение полинома Чебышева Тn(x) по рекуррентной формуле:

T0(x) = 1, T1(x) = x, Tn+1(x) = 2xTn(x) – Tn–1(x).

      1. Найти значение функции С(m,n), где 0 < m < n, если:

.

  1. С помощью признака делимости на 3 проверьте, кратно ли данное натуральное число трём.

  2. Найдите n-ю степень (n – натуральное число) числа а, используя рекурсивную функцию.

  3. Найдите n-й член арифметической прогрессии с заданными первым членом а и разностью прогрессии d.

  4. Найдите n-й член геометрической прогрессии с заданными первым членом b и знаменателем прогрессии q.

  5. Методом половинного деления уточните корень уравнения f(х) = 0.

  6. Найти максимальный элемент массива а1, а2, …, аn.

  7. В одномерном массиве найти i и j такие, что подпоследовательность аi, аi+1, …, аj является перевертышем.

  8. В одномерном числовом массиве найдите подпоследовательность подряд идущих элементов, сумма которых максимальна.

  9. Рассортировать одномерный массив методом простого выбора.

  10. Запрограммировать алгоритм двоичного поиска элемента одномерного массива, равного данному числу.

  11. Разработайте рекурсивную функцию нахождения значения функции Аккермана, которая определяется для всех неотрицательных целых аргументов m и n следующим образом:

А(0, n) = n + 1;

A(m, 0) = A(m – 1, 1), если (m > 0);

A(m, n) = A(m – 1, A(m, n – 1)), если (m, n > 0).

С. Задачи повышенной сложности.

  1. С помощью рекурсивной функции найдите с заданной точностью квадратный корень , воспользовавшись итерационной формулой Ньютона:

Y0=1

Вычисления производите пока |Yi – Yi-1| не станет меньше заданного EPS..

Используя эту функцию, составьте другую рекурсивную функцию, которая для заданного а вычисляет

.

  1. Разработайте рекурсивную функцию нахождения наибольшего общего делителя двух чисел m и n, используя алгоритм Евклида ( например, НОД(96, 36) : 96 = 2 · 36 + 24; 36 = 1 · 24 +12; 24 = 2 · 12 + 0. Следовательно, НОД(96, 36) = 12). Используя эту функцию, составьте вторую рекурсивную функцию для нахождения наибольшего общего делителя натуральных чисел а1, а2, … аn.одномерного массива.

НОД(n1, n2, ... nm) = НОД (НОД (n1, n2, ... nm–1), nm).

  1. Найдите количество n-значных чисел в m-ичной системе счисления, у каждого из которых сумма цифр равна k. При этом в качестве n-значного числа мы допускаем и числа, начинающиеся с одного или нескольких нулей.

  2. Вычислите количество различных представлений заданного натурального числа n в виде суммы не менее двух попарно различных натуральных слагаемых. Представления, отличающиеся лишь порядком слагаемых, различными не считаются.

  3. Дана матрица a(m, n), состоящая из нулей и единиц. Найдите в ней прямоугольную подматрицу из одних единиц максимального размера (т.е. с максимальным произведением высоты на длину).

  4. Дана матрица a(m, n). Найдите в ней прямоугольную подматрицу, сумма элементов которой максимальна.

  1. Дана матрица a(m, n). Найдите в ней путь от элемента a[i1, j1] до элемента a[i2, j2] с максимальной суммой. Ходить можно по горизонталям и вертикалям. Каждый элемент матрицы может входить в путь не более одного раза.

  2. Дана матрица a(m, n). Найдите в ней путь от элемента первой строки матрицы до элемента последней строки с максимальной суммой. Ходить можно вниз по вертикали или диагоналям.

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

где матрица Вk получается из матрицы А вычеркиванием первой строки и k-го столбца.

  1. Лабиринт задан матрицей a(m, n), состоящей из нулей и единиц, причем а[1, 1] = 0 и a[m, n] = 0. Разработайте рекурсивную процедуру нахождения пути из клетки а[1, 1] в a[m, n]. Путь должен состоять из элементов, равных нулю. Ходить можно только по вертикалям и горизонталям.

  2. Задано число А и два вектора b[1..n] и c[1..n]. Найдите множество I, являющееся подмножеством множества {1, ..., n}, такое, что , а является максимальной из всех возможных.

  3. Разработайте рекурсивную функцию, находящую сумму двух натуральных чисел, заданных массивами своих цифр а1, а2, …, аn и b1, b2, …, bm.

  4. Разработайте рекурсивную функцию сортировки одномерного массива методом слияния.

  5. Дано n различных натуральных чисел. Разработайте рекурсивную функцию формирования всех перестановок этих чисел.

  6. Даны два натуральных числа m и n. Найдите НОД(m, n) и натуральные x и y такие, что mx + ny = НОД(m, n).

  7. Даны три натуральных числа m, n и k, причем k делится на НОД(m, n). Найдите какое-нибудь целочисленное решение уравнения mx + ny = k.

  8. Имеется n населенных пунктов, пронумерованных от 1 до n. Некоторые пары пунктов соединены дорогами. Разработайте рекурсивную процедуру определения, можно ли попасть по этим дорогам из 1-го пункта в n-й.

  9. Вводятся три неотрицательных числа d, i, c и две строки X и Y. Найдите преобразование строки X в Y минимальной стоимости. Допустимы следующие три операции:

- удалить любой символ из X (стоимость операции d);

- вставить любой символ в X (стоимость операции i);

- заменить символ в X на произвольный (стоимость операции с).

  1. Строка символов состоит из букв А, В и С. Разработайте рекурсивную функцию, преобразующую данную строку по правилам:

а) удаляет четыре подряд идущие буквы А;

б) удаляет из последовательности ВАВА одну пару ВА;

в) удаляет комбинацию АВС.

Преобразования выполняйте до тех пор, пока ни одной из перечисленных комбинаций не останется.

  1. Даны две строки x и y. Строка x состоит из нулей и единиц, строка y – из символов A и B. Можно ли строку x преобразовать в строку y по следующему правилу: цифра 0 преобразуется в непустую последовательность букв A, а цифра 1 – либо в непустую последовательность букв A, либо в непустую последовательность букв B?

  2. Задано конечное множество жителей некоего города, причем для каждого из жителей перечислены имена его детей. Жители X и Y считаются родственниками, если:

а) либо Х – ребенок Y,

б) либо Y – ребенок X,

в) либо существует некий Z такой, что Х является родственником Z, а Z является родственником Y.

Перечислите все пары жителей города, которые являются родственниками.

  1. На шахматной доске расставьте 8 ферзей так, чтобы они не «били» друг друга.

  2. Имеется полоска клетчатой бумаги шириной в одну клетку и длиной в n клеток. На первой клетке установлена шашка. Одним ходом шашку можно передвигать на одну или две клетки. Разработайте рекурсивную функцию, определяющую количество способов продвижения шашки на n-ю клетку.

Г л а в а 8