close

Вход

Забыли?

вход по аккаунту

?

Klucharev Fattahova

код для вставкиСкачать
Министерство образования и науки российской федерации
Федеральное государственное автономное образовательное
учреждение высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Учебно-вычислительная практика
Методические указания для студентов заочной
форм обучения
Санкт-Петербург
2014
Составитель – А. А.Ключарёв, М. В. Фаттахова
Рецензент – кандидат технических наук, доцент В. И. Исаков
В методических указаниях для студентов заочной формы обучения по направлению 23100062 «Программная инженерия», проходящих учебную (вычислительную) практику на первом курсе обучения, приводятся указания по выполнению индивидуального задания. Перечислены требования к входным и выходным данным
разрабатываемой функции, этапы разработки программного обеспечения, а также приведено описание основных этапов решения типового задания.
Методические задания составлены в соответствии с рабочей программой по УВП и рекомендованы к изданию РИСО СПбГУАП.
Публикуется в авторской редакции
Компьютерная верстка Ю. А. Гайнутдиновой
Сдано в набор 01.04.2014. Подписано к печати . Формат 60 × 84 1/16.
Бумага офсетная. Усл. печ. л. 1,62.
Тираж 100 экз. Заказ №.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения, 2014
Введение
Данные методические указания содержат теоретический материал и задания к учебно-вычислительной практике для студентов
заочной формы обучения по направлению 231000.62 «Программная
инженерия», проводимой во 2-ом семестре.
1. Цель учебно-вычислительной практики
Целями проведения учебно-вычислительной практики (УВП) является:
– закрепление теоретических знаний, полученных студентами
на лекционных, лабораторных и практических занятиях;
– развитие навыков самостоятельной работы по анализу информационных материалов печатных и электронных источников;
– получение навыков программирования на языке MATLAB;
– освоение работы с функциями и массивами данных, получение
навыков построения интерфейса пользователя.
2. Задание по УВП
Разработать алгоритм и программную реализацию заданного математического метода в виде функции на языке программирования
MATLAB в среде MatLab, FreeMat, Octave или SciLab. Разработанная функция должна быть снабжена пользовательским интерфейсом. Для недопустимых значений входных данных, при которых невозможно провести вычисления, должно отображаться сообщение
об ошибке. Также необходимо провести сравнение разработанной
функции со встроенными функциями используемого математического пакета (MatLab, FreeMat, Octave), решающими те же задачи.
Реализуемый математический метод определяется в соответствии с вариантом. Варианты назначаются преподавателем.
3
Результаты практики оформляются в виде отчета, представляемого в конце практики.
3. Варианты заданий
Блок «системы линейных алгебраических уравнений»
1. Решение системы линейных алгебраических уравнений методом Гаусса ([1], с. 75).
Блок «интерполяция и экстраполяция»
1. Интерполяция функции по формулам Лагранжа при равномерном расположении узлов ([1], с. 79).
2. Интерполяция функции методом Ньютона при произвольном
расположении узлов ([1], с. 82).
Блок «нелинейные и трансцендентные уравнения»
1. Решение нелинейных и трансцендентных уравнений методом
Ньютона ([1], с. 86).
2. Решение нелинейных и трансцендентных уравнений методом
простых итераций ([1], с. 86, 87).
3. Решение нелинейных и трансцендентных уравнений методом
хорд ([1], с. 89).
Блок «численное интегрирование»
1. Численное интегрирование функций методом трапеций
([1], с. 104, 105).
2. Численное интегрирование функций методом парабол (Симпсона) ([1], с. 108, 109).
4. Порядок выполнения задания
– 1 этап. Анализируется возможность применения указанного
численного метода при решении поставленной задачи [2, 3]. Проверяется выполнение условий, которые накладываются на исходные
данные [2]. Указанным методом вручную решается тестовый пример, указанный в задании, или произвольный. (Числовая информация для параметров тестового примера подбирается самостоятельно
с учетом области существования программируемого выражения.)
– 2 этап. Разрабатывается алгоритм программной реализации
заданного аналитического выражения, его блок-схема [1] и реализация в MATLAB. На этом этапе необходимо выполнить следующее:
a) построить алгоритм для указанного в задании математического метода, описать его с помощью блок – схемы и реализовать в виде
пользовательской функции (см. примечание 1 ниже);
4
b) реализовать указанный в задании математический метод с использованием встроенных математических функций среды разработки (см. примечание 2 ниже);
c) реализовать пользовательский интерфейс для упрощения взаимодействия конечного пользователя с разработанной функцией;
d) сравнить работу пользовательских функций, полученных
в результате выполнения пунктов 1 и 2.
Примечание 1: при выполнении пункта a) задания запрещается использовать все математические и другие функции используемого математического пакета. Алгоритм необходимо реализовать с помощью базовых языковых конструкций, таких как for, while, if-else и т.п.
Примечание 2: при выполнении пункта b) задания, в случае, если в используемом математическом пакете нет встроенной функции, реализующей указанный в задании математический метод,
необходимо подобрать имеющуюся в математическом пакете функцию, наиболее близкую по смыслу решаемой ею задачи. Например, в пакете FreeMat не реализована интерполяция многочленами Лагранжа или по формуле Ньютона, однако связка функций
polyfit и polyval решает задачу интерполяции многочленами
методом наименьших квадратов. Следовательно, вместо интерполяции многочленами по Лагранжу или по Ньютону, при выполнении
пункта 2 задания можно использовать функции polyfit и polyval.
– 3 заключительный этап. Окончательный вариант отчета, подготовленный к защите, комплектуется и оформляется на бумажном носителе.
Защита учебно-вычислительной практики:
Подготовленный отчет представляется на проверку преподавателю, ответственному за проведение практики, в установленный преподавателем срок. После прочтения и проверки отчета, преподаватель назначает срок защиты учебно-вычислительной практики, во
время которой студент должен продемонстрировать работу написанной программы и ответить на вопросы по решенной задаче.
5. Указания по выполнению задания
5.1 Требования к входным и выходным данным
разрабатываемой функции
Для блока заданий, посвященных решению систем линейных алгебраических уравнений, на вход разрабатываемой функции должны поступать матрица коэффициентов системы A и вектор значений
правых частей (свободных членов) B. Ввод матрицы и вектора должен
5
осуществляться через интерфейс пользователя. На выходе функция
должна выдавать вектор значений X0 – решение системы уравнений.
Для блока заданий, посвященных интерполяции, на вход разрабатываемой функции должен поступать вектор значений независимой переменной X, вектор значений зависимой переменной Y и вектор X0 значений независимой переменной, для которых необходимо
найти интерполированное значение функции. Ввод векторов должен осуществляться через интерфейс пользователя, с последующим преобразованием из строки в массив чисел. На выходе функция должна выдавать вектор интерполированных значений зависимой переменной Y0 в точках, указанных во входном векторе X0.
Для блока заданий по решению нелинейных и трансцендентных уравнений на вход разрабатываемой функции должно подаваться имя функции (указатель на функцию, т.н. 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.
6
Функции численного интегрирования: trapz, quad, quadgk,
quad2d, dblquad.
5.3 Этапы разработки программного обеспечения
В процессе разработки программ с использованием процедурного подхода можно выделить следующие этапы:
– постановка задачи – определение требований к программному
продукту;
– анализ – осуществление формальной постановки задачи и определение методов ее решения;
– проектирование – разработка структуры программного продукта, выбор структур для хранения данных, построение и оценка
алгоритмов подпрограмм и определение особенностей взаимодействия программы с вычислительной средой (другими программами, операционной системой и техническими средствами);
– реализация – составление программы на выбранном языке
программирования, ее тестирование и отладка.
5.3.1 Постановка задачи
Процесс создания нового программного обеспечения начинают
с постановки задачи, в процессе которой определяют требования к
программному продукту.
Прежде всего, устанавливают набор выполняемых функций,
а также перечень и характеристики исходных данных. Так, для
числовых данных может задаваться точность, для текстовых – возможно, размер текста, способ кодировки и т. п. Затем определяют
перечень результатов, их характеристики и способы представления (в виде таблиц, диаграмм, графиков и т. п.). Кроме того, уточняют среду функционирования программного продукта: конкретную комплектацию и параметры технических средств, версию используемой операционной системы и, возможно, версии и параметры другого установленного программного обеспечения, с которым
предстоит взаимодействовать будущему программному продукту.
Определяют, какие данные, в какой последовательности должны
быть введены для организации диалога с пользователем. Перечисляют виды и формы представления результатов работы программы.
Отдельно перечисляют возможные сообщения и реакция программы на ошибки ввода и вычислений. Приводят тексты сообщений при возникновении ошибок.
7
5.3.2 Анализ, формальная постановка и выбор метода решения
На данном этапе по результатам анализа условия задачи выбирают математические абстракции, адекватно, т.е. с требуемой точностью и полнотой, представляющие исходные данные и результаты,
строят модель задачи и определяют метод преобразования исходных данных в результат (метод решения задачи).
На данном этапе по результатам анализа условия задачи выбирают математические абстракции, адекватно, т.е. с требуемой точностью и полнотой, представляющие исходные данные и результаты,
строят модель задачи и определяют метод преобразования исходных данных в результат (метод решения задачи).
Определив методы решения, следует для некоторых вариантов
исходных данных вручную или на калькуляторе подсчитать ожидаемые результаты. Эти данные в дальнейшем будут использованы
при тестировании программы. Кроме того, выполнение операций
вручную позволяет точно уяснить последовательность действий,
что упростит разработку алгоритмов.
Целесообразно также продумать, для каких сочетаний исходных
данных результат не существует или не может быть получен данным
методом, что тоже необходимо учесть при разработке программы.
Пример1.
Разработать программу, которая с заданной точностью E находит значение аргумента x по заданному значению функции y при
известном значении n
y=
(x + 1)n + 1
,
x
где n>1, x>0.
Решение.
Эта задача сводится к решению нелинейного уравнения вида:
y−
(x + 1)n + 1
= 0.
x
При n>1 данная функция является монотонно возрастающей.
Для нахождения значения x можно применить метод половинного
1 Методические указания не ставят целью приводить полное изложение примеров выполнения разделов. Подобные материалы имеются в рекомендованной литературе и в сети Интернет по всем вариантам заданий
8
деления. Суть данного метода заключается в следующем. Вначале
определяют отрезок [x1, x2] такой, что f(x1)<y<f(x2). Затем делят его
x1 + x2
пополам xt =
и определяют, в какой половине отрезка нахо2
дится x, для чего сравнивают f(xt) и y. Полученный отрезок опять
делят пополам и так до тех пор, пока длина возникшего при очередном делении отрезка не станет меньше заданного значения E.
y
f(xt)
20
40
60
80
100
y
Рассмотренный метод иллюстрирует рис. 1.
Известно, что численное решение подобных задач выполняется
в 2 этапа:
– Локализация корней;
– Уточнение корней.
xt
x
x1
x2
Рис. 1 Графическое объяснение метода решения задачи
5.3.3 Разработка алгоритмов решения задачи
Принято различать логическое и физическое проектирование.
Логическое проектирование не учитывает особенностей среды, в которой будет выполняться программа (технические и программные
средства компьютера).
При выполнении физического проектирования все эти параметры должны быть учтены. Логическое проектирование. Логическое
проектирование при процедурном подходе предполагает детальную
проработку последовательности действий будущей программы. Его
начинают с определения структуры будущего программного про9
дукта: отдельная программа или программная система, состоящая
из нескольких взаимосвязанных программ. Затем переходят к разработке алгоритмов программ.
Алгоритмом называют формально описанную последовательность действий, которые необходимо выполнить для получения требуемого результата.
Различают последовательности действий (вычислений) линейной, разветвленной и циклической структуры.
Линейная структура процесса вычислений предполагает, что
для получения результата необходимо выполнить некоторые операции в определенной последовательности. Например, для определения площади треугольника по формуле Герона необходимо сначала определить полупериметр треугольника, а затем по формуле его
площадь.
Разветвленная структура процесса вычислений предполагает,
что конкретная последовательность операций зависит от значений
одного или нескольких параметров. Например, если дискриминант
квадратного уравнения не отрицателен, то уравнение имеет два
корня, а если отрицателен, то действительных корней нет.
Циклическая структура процесса вычислений предполагает,
что для получения результата некоторые действия необходимо выполнить несколько раз. Например, для того, чтобы получить таблицу значений функции на заданном интервале изменения аргумента с заданным шагом, необходимо соответствующее количество раз
определить следующее значение аргумента и посчитать для него
значение функции.
Процессы вычислений циклической структуры в свою очередь
можно разделить на три группы:
– циклические процессы, для которых количество повторений известно – (счетные циклы или циклы с заданным количеством повторений);
– циклические процессы, завершающиеся по достижении или
нарушении некоторых условий – итерационные циклы;
– циклические процессы, из которых возможны два варианта
выхода: выход по завершении процесса и досрочный выход по какому-либо дополнительному условию – поисковые циклы.
Формальное описание алгоритмов осуществляют с использованием схем алгоритмов и псевдокодов.
На изображение схем алгоритмов существует ГОСТ 19.701-90, согласно которому каждой группе действий ставится в соответствие
блок особой формы.
Некоторые часто используемые обозначения приведены в табл. 1.
10
Таблица 1
Основные элементы схем алгоритма
Наименование
Обозначение
Функция
Блок началоконец (пускостановка)
Элемент отображает вход из внешней
среды или выход из нее (наиболее
частое применение − начало и конец
программы). Внутри фигуры записывается соответствующее действие.
Блок вычислений (вычислительный блок)
Выполнение одной или нескольких операций, обработка данных
любого вида (изменение значения
данных, формы представления,
расположения). Внутри фигуры
записывают непосредственно сами
операции, например, операцию
присваивания a = 10∗b + c.
Логический
блок (блок
условия)
Отображает решение или функцию
переключательного типа с одним
входом и двумя или более альтернативными выходами, из которых
только один может быть выбран
после вычисления условий, определенных внутри этого элемента. Вход
в элемент обозначается линией, входящей обычно в верхнюю вершину
элемента. Если выходов два или три
то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней).
Если выходов больше трех, то их
следует показывать одной линией, выходящей из вершины (чаще
нижней) элемента, которая затем
разветвляется. Соответствующие
результаты вычислений могут
записываться рядом с линиями,
отображающими эти пути. Примеры
решения: в общем случае − сравнение (три выхода: >, <, =); в программировании − условные операторы
if (два выхода: true, false) и case
(множество выходов).
11
Продолжение таблицы 1
Наименование
Обозначение
Функция
Предопределенный процесс
Символ отображает выполнение
процесса, состоящего из одной или
нескольких операций, который
определен в другом месте программы (в подпрограмме, модуле).
Внутри символа записывается
название процесса и передаваемые
в него данные. Например, в программировании − вызов процедуры
или функции.
Данные
(ввод-вывод)
Преобразование данных в форму,
пригодную для обработки (ввод) или
отображения результатов обработки
(вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы).
Граница
цикла
Символ состоит из двух частей − соответственно, начало и конец цикла
− операции, выполняемые внутри
цикла, размещаются между ними.
Условия цикла и приращения
записываются внутри символа начала или конца цикла − в зависимости
от типа организации цикла. Часто
для изображения на блок-схеме
цикла вместо данного символа используют символ решения, указывая в нем условие, а одну из линий
выхода замыкают выше в блоксхеме (перед операциями цикла).
Соединитель
Символ отображает вход в часть
схемы и выход из другой части этой
схемы. Используется для обрыва
линии и продолжения ее в другом
месте (для избежания излишних
пересечений или слишком длинных
линий, а также, если схема состоит
из нескольких страниц). Соответствующие соединительные символы
должны иметь одинаковое (при том
уникальное) обозначение.
12
Окончание таблицы 1
Наименование
Комментарий
Обозначение
Коментарии
к операциям
Функция
Используется для более подробного
описания шага, процесса или группы процессов. Описание помещается со стороны квадратной скобки
и охватывается ей по всей высоте.
Пунктирная линия идет к описываемому элементу, либо группе элементов (при этом группа выделяется
замкнутой пунктирной линией).
Также символ комментария следует
использовать в тех случаях, когда
объём текста, помещаемого внутри
некоего символа (например, символ
процесса, символ данных и др.),
превышает размер самого этого
символа.
Для рисования схем алгоритмов удобно использовать программу
Microsoft Office Visio.
При разработке алгоритма каждое действие обозначают соответствующим блоком, показывая их последовательность линиями со
стрелками на конце. Для простоты чтения схемы желательно, чтобы линия входила в блок сверху, а выходила снизу. Если линии идут
не слева направо и не сверху вниз, то стрелка в конце линии обязательна, в противном случае ее можно не ставить.
В случае, когда схема алгоритма не умещается на листе, используют соединители. При переходе на другой лист или получении
управления с другого листа в комментарии указывается номер листа, например «с листа 3» «на лист 1».
В теории программирования доказано, что для записи любого сколь угодно сложного алгоритма достаточно трех базовых
структур:
– следование – обозначает последовательное выполнение действий (рис. 2, а);
– ветвление – соответствует выбору одного из двух вариантов
действий (рис. 2, б);
– цикл «пока» – определяет повторение действий, пока не будет
нарушено условие, выполнение которого проверяется в начале цикла (рис. 2, в).
13
Начало
Начало
Действие
1
1
Условие
Действие
2
Конец
а)
Действие
1
Начало
Условие
Действие
2
Конец
Действие
Конец
б)
в)
Рис. 2. Базовые алгоритмические структуры
Помимо базовых структур используют три дополнительные
структуры, производные от базовых:
– выбор – выбор одного варианта из нескольких в зависимости от
значения некоторой величины (рис. 3, а);
– цикл «до» – повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле (рис. 3, в);
– цикл с заданным числом повторений (счетный цикл) – повторение некоторых действий указанное число раз (рис. 3, д).
На рис. 3, б, г и е показано, как каждая из дополнительных
структур может быть реализована через базовые структуры.
Перечисленные структуры были положены в основу структурного программирования – технологии, которая представляет собой
набор рекомендаций по уменьшению количества ошибок в программах [1]. В том случае, если в схеме алгоритма отсутствуют другие
варианты передачи управления, алгоритм называют структурным,
подчеркивая, что он построен с учетом рекомендаций структурного
программирования.
Схема алгоритма детально отображает особенности разработанного алгоритма. Иногда такой высокий уровень детализации не позволяет выделить суть алгоритма. В этих случаях для описания алгоритма используют псевдокод.
Псевдокод – описание алгоритма, которое базируется на тех же
основных структурах, что и структурные схемы алгоритма. Описать на псевдокоде неструктурный алгоритм нельзя.
14
нет
Код=Код 1
Код 1
Код
Код 3
Да
Код 2
Действие
1
Действие
2
нет
Да
Действие
3
а)
Действие
1
Действие
2
Действие
3
б)
Действие
Действие
нет
Условие
Условие
нет
Да
Да
Действие
в)
г)
i=n1
i=n1, n2, h
i<=n2
Действие
д)
е)
Да
нет
Действие
i=i+1
Рис. 3. Дополнительные структуры и их реализация
через базовые структуры
Для каждой структуры используют свою форму описания, которая, в общем случае может быть произвольной.
Программа должна начинаться с ввода исходных данных. Заметим, что любой ввод данных пользователем должен сопровождаться
запросом на ввод, чтобы пользователь знал, чего от него ждет про15
грамма после запуска. На схеме алгоритма и при записи псевдокодов этот запрос часто не указывают.
5.3.4 Реализация
Разработанные алгоритмы реализуют, составляя по ним текст
программы с использованием конкретного языка программирования. Язык может быть определен в техническом задании, а может
выбираться исходя из особенностей конкретной разработки.
5.3.5 Тестирование разработанных программных модулей
Тестированием называют процесс выполнения программы при
различных тестовых наборах данных с целью обнаружения ошибок. Правильный подбор тестовых данных – отдельная и достаточно сложная задача. Для поиска логических ошибок также можно
использовать отладчик: по шагам отследить процесс получения результата. Однако полезно бывает выполнить программу вручную,
фиксируя результаты выполнения команд на бумаге. При этом
очень поможет пример расчета, выполненный вручную на этапе
анализа и выбора методов.
Параллельно с процессом разработки программного продукта на
всех этапах должно выполняться составление документации как
для выполнения следующего этапа, так и для последующего сопровождения и модификации.
5.3.6 Пример разработки алгоритма
Для разработки алгоритма в структурном программировании
эффективно использование метода пошаговой детализации.
Создание программы – процесс сложный, поэтому практически
с любого этапа возможен возврат на предыдущие этапы для исправления ошибок или принятия других проектных решений. Чаще всего такого рода возвраты являются следствием ошибок, допущенных при логическом проектировании программы. Поэтому в процессе программирования необходимо особое внимание уделять разработке алгоритмов.
С использованием метода пошаговой детализации разработку алгоритмов выполняют поэтапно. На первом этапе описывают решение поставленной задачи, выделяя подзадачи и считая их решенными. На следующем аналогично описывают решение подзадач, фор16
мулируя уже подзадачи следующего уровня. Процесс продолжают
до тех пор, пока не дойдут до подзадач, алгоритмы решения которых
очевидны. При этом, описывая решение каждой задачи, желательно
использовать не более одной-двух конструкций, таких как цикл или
ветвление, чтобы четче представлять структуру программы.
Для разработки алгоритма программы, которая находит значение аргумента х по заданному значению функции у.
Шаг 1. Определяем общую структуру программы.
Программа:
Ввести выражение для функции
Ввести у, n, E.
Вывести график функции
Определить х.
Вывести x, у.
Конец.
Шаг 2. Детализируем операцию определения х.
Определить х:
Определить х1 такое, что f(xl) < у.
Определить х2 такое, что f(x2) > у.
Определить х на интервале [х1, х2].
Все.
Шаг 3. Детализируем операцию определения х1.
Значение х1 должно быть подобрано так, чтобы выполнялось условие f(xl) < у. Известно, что x > О, следовательно, можно взять некоторое значение х, например, х1=1, и последовательно уменьшая
его, например в два раза, определить значение х1, удовлетворяющее
данному условию.
Определить х1:
х1:=Xm
цикл-пока f(xl) > у х1:=х1/2
все-цикл
Все.
Щаг 4. Детализируем операцию определения х2.
Значение х2 определяем аналогично х1, но исходное значение будем увеличивать в два раза.
17
Определить х2:
х2:=0.1
цикл-пока f(x2) < у х2:=х2*2
все-цикл
Все.
Шаг 5. Детализируем операцию определения х.
Определение х выполняется последовательным сокращением отрезка [х1, х2].
Определить х:
цикл-пока x2-xl>E
Сократить отрезок [х1, х2].
все-цикл
Все.
Шаг 6. Детализируем операцию сокращения интервала определения х.
Сокращение отрезка достигается делением пополам и отбрасыванием половины, не удовлетворяющей условию f(x1) <= у<= f(x2).
Сократить интервал определения х:
xt:=(xl +х2)/2
если f(xt) > у то х2 := xt
иначе х1 :=xt
все-если
Все.
Таким образом, за шесть шагов мы разработали весь алгоритм,
который выглядит следующим образом.
Программа:
Ввести выражение для функции
Ввести у, n, E
Вывести график функции
% Определить х1:
х1:=Xm
цикл-пока f(xl) > у х1:=х1/2
18
Начало
Ввод
формулы
Ввод
входных
данных
Вывод
графика
X1^=Xm
Определить х1
x1:=x1/2
Да
Нет
f(x1)>y
x2:=0,1
Определить x2
Определить х
x2:=x2∗2
Да
хt:=(xl+x2)/2
f(x2)<y
Нет
Нет
х1:=xt
f(xt) > у
Да
Вывести
х2:= xt
xt, у
Конец
Рис. 4. Схема алгоритма
19
все-цикл
% Определить х2:
х2:=0.1
цикл-пока f(x2) < у х2 := х2*2
все-цикл
% Определить х:
цикл-пока х2-х1 > E
xt:=(xl +х2)/2
если f(xt) > у то х2 := xt
иначе х1 := xt
все-если
все-цикл
Вывести xt, у.
Конец.
В приведенном тексте строка, начинающаяся с символа «%» –
комментарии, не влияющие на порядок вычислений и необходимые для лучшего понимания текста.
Таким образом, на каждом шаге решается одна достаточно простая задача, что существенно облегчает разработку алгоритма и является основным достоинством метода пошаговой детализации.
При разработке алгоритма методом пошаговой детализации мы
использовали псевдокод, но можно было использовать и схемы алгоритма, в которых решение каждой подзадачи может быть обозначено блоком «предопределенный процесс», однако это не обязательно.
Общая схема алгоритма приведена на рис.4.
Далее необходимо детализировать выполнение подзадач ввода
и вывода.
5.3.7 Примеры программ, реализующих рассмотренный алгоритм
Разработку программы целесообразно начать с простого модуля
решения задачи. Ниже приведен пример программы для рассмотренного выше примера, в комментариях приведены соответствующие фрагменты псевдокода. Этот пример можно скопировать в среду MatLab и выполнить.
20
%пример для методички 1 (только решение для заданной функции без диалога)
clear
E=0.01; %погрешность вычисления
n=3; %
параметр
y=200; %для какого значения найти решение
Xm=20; %максимальное значение аргумента
x=0.1:0.2:Xm; %вектор значений аргумента
R=’((x+1).^n-1)./x’; % Ввести выражение для функции
f = inline(R); %преобразовать строку в вычисляемое выражение
plot(x,f(n,x),’DisplayName’,’F’,’YDataSource’,’F’) % Вывести
%график функции
% Определить х1:
x1=Xm; while(f(n,x1)>y) x1=x1/2; end % х1:=Xm
% цикл-пока f(xl) > у % х1:=х1/2
%все-цикл
% Определить х2:
x2=0.1; while(f(n,x2)<y) x2=x2*2; end % х2:=0.1
%цикл-пока f(x2) < у %х2 := х2*2
%все-цикл
% Определить х:
while(x2-x1>E) xt=(x1+x2)/2; if f(n,xt)>y x2=xt; else x1=xt;
end end at=f(n,x1); % цикл-пока х2-х1 > E
% xt:=(xl +х2)/2
% если f(xt) > у % то х2 := xt
%иначе х1 := xt
% все-если
% все-цикл
%результат
Пример программы с простым диалогом
%пример для методички
%с простым диалогом без проверки данных
21
clear
global f
f = in_fun();
y=0;
while(y==0)
[ E,n,Xm,y] = in_dat();
end
x=0.1:0.2:Xm;
F=f(n,x);
plot(x,f(n,x))
x1=Xm;
while(f(n,x1)>y)
x1=x1/2;
end
x2=0.1;
while(f(n,x2)<y)
x2=x2*2;
end
while(x2-x1>E)
xt=(x1+x2)/2;
if f(n,xt)>y
x2=xt;
else
x1=xt;
end
end
at=f(n,x1);
out_x(at,y,x1)
В последней программе использованы следующие функции:
function [ f] = in_fun()
%ввод вида функции
global f
R=input(‘Выражение для функции (только правую
часть!!!)\n’,’s’);
f = inline(R);
end
function [ E,n,Xm,y] = in_dat()
22
%ввод исходных данных
R=input(‘Введите значение погрешности
вычислений\n’,’s’);
E=str2double(R);
R=input(‘Введите показатель степени\n’,’s’);
n=str2double(R);
R=input(‘Введите максимальное значение Xm\n’,’s’);
Xm=str2double(R);
R=input(‘Для какого значения функции надо найти
аргумент?\n’,’s’);
y=str2double(R);
if y>f(n,Xm)
disp(‘Ошибка! Решения нет!’)
y=0;
end
end
function [ ] = out_x(a,y,x)
%вывод результата
fprintf(‘Для y=%d\n’,y)
fprintf(‘Решение x=%d\n’,x)
fprintf(‘Ошибка вычисления составила %d\n’,a)
end
6. Структура отчета
Отчет должен содержать следующие разделы:
1. Титульный лист.
Форма титульного листа приведена в приложении.
2. Содержание.
Содержание должно включать наименование всех разделов отчета с указанием номера страниц, на которых помещаются начала
данных разделов.
3. Основная часть отчета:
– математическая постановка задачи;
– описание метода численной реализации задания;
– описание ручного счета тестового примера предложенным методом;
– разработка алгоритмов решения задачи;
23
– листинг программы;
– результат работы программы
– результат реализации метода с помощью встроенных функций;
– сравнение обоих результатов.
5. Заключение.
Содержит общие выводы и сравнительный анализ результатов,
полученных с помощью ручного счета и на ПК по разработанной
программе.
6. Список использованной литературы.
Список должен содержать сведения об источниках, использованных при составлении пояснительной записки. В список следует
включать все виды использованной литературы: монографии, учебники, справочники, журналы, статьи и т.п. Список следует располагать в порядке появления ссылок на источники в тексте пояснительной записки и нумеровать арабскими цифрами с точкой. В тексте должны быть ссылки на соответствующие пункты списка. При
использовании интернета обязательно указывается имя сайта.
При необходимости перечисленные разделы могут быть дополнены другими разделами,
Образец титульного листа приведен в приложении 1.
Отчет должен быть написан хорошим языком без грамматических и семантических ошибок; текст не должен допускать различных толкований, не следует употреблять для одного и того же понятия различные термины.
24
Список литературы.
1. Иванова Г. С. Основы программирования: Учебник для вузов. М.: Изд-во МГ ТУ им. Н. Э. Баумана, 2001;
2. Бураков М. В. Основы работы в MATLAB: учебное пособие/
М.В. Бураков . ГУАП. СПб., 2006;
3. Васильев Ф. П. Численные методы решения экстремальных
задач. Учебное пособие для студ. ВУЗов М.,НАУКА 1982, 552 с.,
[Шифр 519.6/8,В-19]
4. Волков Е. А. Численные методы: учебное пособие М., Наука,
1982, 254 с.;
5. Самарский А. А. Введение в численные методы. Учебное пособие для Вузов, М., Наука,1987, 288 с.;
6. Мудров А. Е. Численные методы для ПЭВМ на языках Бейсик, Фортран, Паскаль. Томск, МП «Раско»,1992, 406 с.;
7. Дудник В. М., Карпова Т. С., Плющева Л. В. Документирование программного обеспечения. Методические указания для курсового проектирования. Л., ЛИАП, 1986.
8. Бахвалов Н. С., Лапин А. В., Чижонков Е. В. Численные методы в задачах и упражнениях. Учеб. пособие. / Под ред. В. А. Садовничего М.: Высш. шк. 2000. 190 с.
9. Дьяконов, В. П. MATLAB 7.*/R2006/R2007: самоучитель.
М.: ДМК Пресс, 2008. 767 с.
25
Приложение 1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА ИНФОРМАЦИОННО-УПРАВЛЯЮЩИХ СИСТЕМ
ОТЧЕТ О ПРАКТИКЕ
ЗАЩИЩЕН С ОЦЕНКОЙ
РУКОВОДИТЕЛЬ
должность, уч. степень, звание
подпись, дата
инициалы, фамилия
ОТЧЕТ ПО УЧЕБНО-ВЫЧИСЛИТЕЛЬНОЙ ПРАКТИКЕ
РАЗРАБОТКА ПРОГРАММЫ ПО РЕШЕНИЮ НЕЛИНЕЙНЫХ
УРАВНЕНИЙ МЕТОДОМ ИТЕРАЦИЙ
ОТЧЕТ ВЫПОЛНИЛА
СТУДЕНТКА ГР.
подпись, дата
Санкт-Петербург 2014
26
инициалы, фамилия
Содержание
Введение......................................................................... 3
1. Цель учебно-вычислительной практики....................... 3
2. Задание по УВП........................................................ 3
3. Варианты заданий.................................................... 4
4. Порядок выполнения задания.................................... 4
5. Указания по выполнению задания.............................. 5
6. Структура отчета...................................................... 23
Список литературы...................................................... 25
Приложение 1................................................................. 26
27
Документ
Категория
Без категории
Просмотров
1
Размер файла
1 193 Кб
Теги
klucharev, fattahov
1/--страниц
Пожаловаться на содержимое документа