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

Руководство по УВП (I курс)

.pdf
Скачиваний:
10
Добавлен:
10.08.2019
Размер:
940.02 Кб
Скачать

vk.com/club152685050

Санкт-Петербургский государственный университет аэрокосмического приборостроения

Кафедра компьютерной математики и программирования

А.А.Ключарёв, М.Д.Поляк, М. В. Фаттахова

УЧЕБНО-ВЫЧИСЛИТЕЛЬНАЯ ПРАКТИКА

Методические указания

Санкт-Петербург

2011

vk.com/club152685050

1. Цель учебно-вычислительной практики.

Целью проведения учебно-вычислительной практики (УВП) является:

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

развитие навыков самостоятельной работы по анализу информационных материалов печатных и электронных источников;

получение навыков программирования на языке MATLAB;

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

2. Задание по УВП.

Разработать алгоритм и программную реализацию заданного математического метода в виде функции на языке программирования

MATLAB в среде MatLab, FreeMat, Octave или SciLab. Разработанная функция должна быть снабжена пользовательским интерфейсом. Для недопустимых значений входных данных, при которых невозможно провести вычисления, должно отображаться сообщение об ошибке. Также необходимо провести сравнение разработанной функции со встроенными функциями используемого математического пакета (MatLab, FreeMat, Octave), решающими те же задачи.

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

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

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

Блок «системы линейных алгебраических уравнений»

1.Решение системы линейных алгебраических уравнений методом Гаусса

([1], с. 75).

Блок «интерполяция и экстраполяция»

1.Интерполяция функции по формулам Лагранжа при равномерном расположении узлов ([1], с. 79).

2.Интерполяция функции методом Ньютона при произвольном расположении узлов ([1], с. 82).

vk.com/club152685050

Блок «нелинейные и трансцендентные уравнения» 1. Решение нелинейных и трансцендентных уравнений методом

Ньютона ([1], с. 86).

2.Решение нелинейных и трансцендентных уравнений методом простых итераций ([1], с. 86, 87).

3. Решение нелинейных и трансцендентных уравнений методом хорд ([1],

с. 89).

Блок «численное интегрирование»

1.Численное интегрирование функций методом трапеций ([1], с. 104-105).

2.Численное интегрирование функций методом парабол (Симпсона) ([1],

с. 108, 109).

4.Порядок выполнения задания

1 этап (0 – 20 баллов). Анализируется возможность применения указанного численного метода при решении поставленной задачи [2, 3]. Проверяется выполнение условий, которые накладываются на исходные данные [2]. Указанным методом вручную решается тестовый пример, указанный в задании, или произвольный. (Числовая информация для параметров тестового примера подбирается самостоятельно с учетом области существования программируемого выражения.)

Защищаемый результат: математическое и вербальное описание выбранного метода решения задачи, результаты решения (в письменном виде, обязательно подробно и с описанием каждого шага).

2 этап (0 – 8 баллов). Разрабатывается алгоритм программной реализации заданного аналитического выражения и его блок-схема [1]

Защищаемый результат: блок-схема алгоритма.

3 этап (0 – 16 баллов). Разрабатывается реализация алгоритма в MATLAB. На этом этапе необходимо выполнить следующее:

a) реализовать алгоритм в виде пользовательской функции (см. примечание 1 ниже);

vk.com/club152685050

b)реализовать указанный в задании математический метод с использованием встроенных математических функций среды разработки (см. примечание 2 ниже);

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

d)сравнить работу пользовательских функций, полученных в результате выполнения пунктов 1 и 2.

Защищаемый результат: листинг программы с подробными комментариями и работающая версия на электронном носителе.

Примечание 1: при выполнении пункта a) задания запрещается использовать все математические и другие функции используемого математического пакета. Алгоритм необходимо реализовать с помощью базовых языковых конструкций, таких как for, while, if-else и т.п.

Примечание 2: при выполнении пункта b) задания, в случае, если в используемом математическом пакете нет встроенной функции, реализующей указанный в задании математический метод, необходимо подобрать имеющуюся в математическом пакете функцию, наиболее близкую по смыслу решаемой ею задачи. Например, в пакете FreeMat не реализована интерполяция многочленами Лагранжа или по формуле Ньютона, однако связка функций polyfit и polyval решает задачу интерполяции многочленами методом наименьших квадратов. Следовательно, вместо интерполяции многочленами по Лагранжу или по Ньютону, при выполнении пункта 2 задания можно использовать функции polyfit и polyval.

4 заключительный этап (0 – 56 баллов). Окончательный вариант отчета, подготовленный к защите, комплектуется и оформляется на

бумажном носителе.

Защищаемый результат: отчет по учебной (вычислительной) практике, выполненный на бумажном носителе.

Баллы начисляются по следующему правилу:

На первых трех этапах: если очередной этап защищен в срок, студент может получить за него максимальное количество баллов. Если в срок,

vk.com/club152685050

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

На последнем, заключительном, этапе: представленная работа оценивается по нескольким показателям: срок представления,

оформление, подробность и ясность изложения материала, качество программного продукта и др. На основании этой оценки выставляется количество баллов в диапазоне 0 – 56.

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

85 – 100 баллов: «отлично»;

70 – 84 баллов: «хорошо»;

56 – 69 баллов: «удовлетворительно»; менее 56 баллов: «неудовлетворительно».

5. Указания по выполнению задания.

5.1 Требования к входным и выходным данным разрабатываемой функции

Для блока заданий, посвященных решению систем линейных алгебраических уравнений, на вход разрабатываемой функции должны поступать матрица коэффициентов системы A и вектор значений правых частей (свободных членов) B . Ввод матрицы и вектора должен осуществляться через интерфейс пользователя. На выходе функция должна выдавать вектор значений X 0 – решение системы уравнений.

Для блока заданий, посвященных интерполяции, на вход разрабатываемой функции должен поступать вектор значений независимой переменной X ,

вектор значений

зависимой

переменной Y

и

вектор X 0

значений

независимой

переменной,

для

которых

необходимо

найти

интерполированное

значение

функции.

Ввод

векторов

должен

осуществляться через интерфейс пользователя, с последующим преобразованием из строки в массив чисел. На выходе функция должна выдавать вектор интерполированных значений зависимой переменной Y0 в точках, указанных во входном векторе X 0 .

vk.com/club152685050

Для блока заданий по решению нелинейных и трансцендентных уравнений на вход разрабатываемой функции должно подаваться имя функции (указатель на функцию, т.н. Function Handle в MatLab), осуществляющей вычисление левой части уравнения F(x) 0 при заданном значении переменной x , а также интервал [a b] , на котором ищется корень, и погрешность . Сама функция F (x) вводится через интерфейс пользователя в виде строки, например такой: 'x – x^2'. Преобразование из строки в функцию MatLab может осуществляться с помощью функции inline, например, так: f=inline('x – x^2'). Вызов f(2) теперь вернет -2, а f(5) будет равно -20. Именно функция f и передается в качестве входных данных разрабатываемой функции. Выходным значением разрабатываемой функции должно быть найденное значение корня. Выходное значение должно выводиться пользователю.

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

5.2 Справка по некоторым функциям языка MatLab

Функции, реализующие различные алгоритмы интерполяции: polyfit, polyval, interp1, interp2, spline, pchip, ppval. Среды MatLab и GNU Octave поддерживают все эти функции.

Функции для решения нелинейных уравнений: fzero, fsolve.

Функции численного интегрирования: trapz, quad, quadgk, quad2d, dblquad.

5.3Этапы разработки программного обеспечения

Впроцессе разработки программ с использованием процедурного подхода можно выделить следующие этапы:

vk.com/club152685050

постановка задачи - определение требований к программному продукту;

анализ - осуществление формальной постановки задачи и определение методов ее решения;

проектирование - разработка структуры программного продукта,

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

• реализация - составление программы на выбранном языке программирования, ее тестирование и отладка.

5.3.1 Постановка задачи

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

Прежде всего, устанавливают набор выполняемых функций, а также перечень и характеристики исходных данных. Так, для числовых данных может задаваться точность, для текстовых - возможно, размер текста, способ кодировки и т. п. Затем определяют перечень результатов, их характеристики и способы представления (в виде таблиц, диаграмм, графиков и т. п.). Кроме того, уточняют среду функционирования программного продукта:

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

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

vk.com/club152685050

Отдельно перечисляют возможные сообщения и реакция программы на

ошибки ввода и вычислений. Приводят тексты сообщений при

возникновении ошибок.

vk.com/club152685050

5.3.2 Анализ, формальная постановка и выбор метода решения

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

(метод решения задачи).

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

(метод решения задачи).

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

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

Пример1.

Разработать программу, которая с заданной точностью E находит значение аргумента x по заданному значению функции y при известном значении n

y (x 1)n 1 , x

где n 1, x 0 .

Решение.

1 Методические указания не ставят целью приводить полное изложение примеров выполнения разделов. Подобные материалы имеются в рекомендованной литературе и в сети Интернет по всем вариантам заданий

vk.com/club152685050

Эта задача сводится к решению нелинейного уравнения вида:

 

y

(x 1)n

1

0 .

 

x

 

 

 

 

 

 

 

При n 1данная

функция является

монотонно возрастающей. Для

нахождения значения

x можно применить метод половинного деления.

Суть данного метода заключается в следующем. Вначале определяют

отрезок [x1 , x2 ]такой, что f (x1 ) y f (x2 ) . Затем делят его

пополам

x

x1 x2

и определяют, в какой половине отрезка находится x

, для чего

 

t

2

 

 

 

 

 

сравнивают f (xt ) и y . Полученный отрезок опять делят пополам и так до тех пор, пока длина возникшего при очередном делении отрезка не станет меньше заданного значения E .

Рассмотренный метод иллюстрирует рис.1.

Рисунок 1 Графическое объяснение метода решения задачи

Известно, что численное решение подобных задач выполняется в два этапа:

Локализация корней;

Уточнение корней.

Соседние файлы в предмете MathCad/MatLab/Maple