Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен 2015 МТ8-11 / ReshayuBilety (1).docx
Скачиваний:
248
Добавлен:
12.01.2015
Размер:
1.17 Mб
Скачать

11. Ошибки. Классификация и виды ошибок, где появляются, где выявляются. Последовательность обнаружения ошибок. Методы устранения. Примеры.

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

Накопление погрешностей результатов вычисления (некорректное отбрасывание дробных цифр чисел, некорректное использование приближенных методов вычисления, игнорирование использования разрядной сетки ЭВМ и тп)

Ошибки логики (семантические):

некорректное использование переменных (до инициализации, использование индексов, выходящих за границы массивов и тп.)

ошибки вычисления (некорректное использование целочисленной арифметики, незнание Приоритетов выполнения операций, деление на 0, извлечение корня из отриц. числа и тп)

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

неправильная реализация алгоритма программы.

Семантические ошибки -- самые непредсказуемые ошибки, которые могут иметь разную природу, при этом часть из них обнаруживается ОС, а часть -- нет.

((синтаксические ошибки; семантические ошибки; логические ошибки.))

Лекция 3

12.Алгоритмы обработки данных. Итерационные алгоритмы вычисления суммы ряда, интегралов, нахождение корней уравнения.

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

Алгоритмы вычисления определенных интегралов.

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

называют площадь криволинейной трапеции, ограниченную подынтегральной кривой, осью абсцисс и ординатами f(a) и f(b). На рис. 5.1 данная площадь заштрихована.

Рис. 5.1 Геометрический смысл

определенного интеграла

Метод прямоугольников.

метод, основанный на применении формулы прямоугольников. В этом случае подынтегральную функцию/кривую заменяют прямой, а формула для вычисления площади прямоугольника известна. Для повышения точности вычислений участок интегрирования [a, b] разбивается на n равных частей. Далее берутся значения подынтегральной функции в левых (или правых) концах полученных участков. При этом подынтегральная функция f(x) на отрезке [a, b] заменяется ступенчатой кривой (см. рис. 5.2), и приближенное значение интеграла определяется суммой площадей прямоугольников

где

y

В результате расчетов по формулам «слева» и «справа» получается приближенное значение интервала (с недостатком или с избытком), которое может отличаться от действительного на некоторую величину, называемую ошибкой ограничения. Эта ошибка определяется величиной остаточного члена ряда Тейлора:

В качестве примера на рис. 5.3 приведена схема алгоритма, реализующего вычисления по формуле прямоугольников «слева». Увеличение числа участков разбиения n приводит к повышению точности вычисления интеграла. Следует обратить внимание также на формирование условия выхода из цикла на рис. 5.3, добавление половины шага h в условие необходимо для избежания возможного сравнения на равенство двух вещественных значений x и bh.

Алгоритм вычисления суммы бесконечного ряда

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

где tn(x) – слагаемое, зависящее от параметра x (в общем случае) и номера n. Вычисляемая последовательность

где – частная сумма.

Для контроля погрешности можно использовать последовательность

где tn(x) = sn(x) – sn-1(x) – слагаемые ряда n.

.

Условие выхода из итерационного цикла (справедливо при знакопеременном ряде {tn(x)}):

| tn ( x ) | <  .

Алгоритм вычисления бесконечной суммы является модификацией одного из алгоритмов вычисления конечной суммы. Если применение рекуррентных формул нецелесообразно, то вычисления будут наиболее эффективными, если каждое слагаемое определять по общей формуле и полученные значения накапливать в некоторой переменной. Общий вид схемы алгоритма, реализующего вычисление бесконечной суммы с погрешностью  с помощью цикла с предусловием, показан на рис. 5.10, а.

Если для вычисления слагаемых используются рекуррентные соотношения

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

Например, тригонометрическая функция sin(x) может быть представлена в виде бесконечной суммы

В данном случае

тогда

Теперь можно определить

Начальное значение слагаемого находим по формуле

Алгоритм нахождения корней уравнений методом половинного деления.

Для нахождения корня уравнения f(x)=0, принадлежащего отрезку [a, b], делим отрезок пополам z=(a+b)/2.

Рассмотрим значения функции в точках x=a, x=z. Если f(a)*f(z)<0, то исходный отрезок [a,b] уменьшим в два раза путем переноса точки b в точку z. новый отрезок а-б вновь делим пополам и если f(a)*f(z)>0, то переносим точку a в точку z, уменьшая [a,b] в два раза. повторяем указанную процедуру до тех пор, пока длина отрезка, содержащего корень, не станет меньше заданной погрешности Эпсилон. Любое значение является искомым значением корня, однако на практике в качестве корня выбирают середину отрезка, т.е. x=(a+b)/2.

13. Алгоритмы обработки массивов, нахождение количества, суммы, произведения, минимума, максимума, сортировки. Алгоритм нахождения произведения матриц. Алгоритмы обработки строк, разбиение строки на слова, поиск слов в строке.

Алгоритмы обработки массивов

Определение минимального элемента в массиве.

Задача нахождения минимума (или максимума) в массиве из N элементов может быть решена последовательным сравнением "текущего" минимального (максимального) значения со значением очередного элемента массива и "запоминанием" при необходимости нового значения. Схема алгоритма показана на рис. 5.18.

Рис. 5.18 Алгоритм определения минимального элемента массива

Сортировка массива.

Допустим, необходимо упорядочить массив из N элементов по возрастанию. Задача решается последовательным сравнением пар соседних элементов массива и при необходимости их перестановкой. Сравнение происходит при N-1 проходах по всему массиву. Схема алгоритма показана на рис. 5.19.

Рис. 5.19 Алгоритм сортировки массива методом пузырька

Произведение матриц

Пусть необходимо найти произведение двух матриц А и В размером 2х3 и 3х3 соответственно. Элементы результирующей матрицы С (размером 2х3) определяются по формуле

где n – число строк матрицы А;

m – число столбцов матрицы А и число строк матрицы В;

p – число столбцов матрицы В. В общем случае результирующая матрица имеет размер np. Схема алгоритма умножения двух матриц представлена на рис. 5.20.

Рис. 5.20 Алгоритм умножения матриц

Алгоритм обработки строк

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

При решении задачи следует обратить внимание на следующую важную особенность. Если бы слово от слова отделялось только одним пробелом, то мы могли бы, посчитав количество пробелов, вычислить количество слов. В нашем случае необходимо перед каждым определением слова в строке удалять из нее первые пробелы и выделять слово до следующего пробела. После выделения слово удаляется из строки. Для выделения последнего слова строки, если в конце строки нет пробелов, за слово будет считаться оставшаяся часть строки.

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

Рис. 5.21 Алгоритм подсчета количества слов в строке и их вывод

Соседние файлы в папке Экзамен 2015 МТ8-11