Руководство по УВП (I курс)
.pdfvk.com/club152685050
если f(xt) > у
то х2 := xt
иначе х1 :=xt
все-если
Все.
Таким образом, за шесть шагов мы разработали весь алгоритм,
который выглядит следующим образом.
Программа:
Ввести выражение для функции
Ввести у, n, E
Вывести график функции
%Определить х1:
х1:=Xm
цикл-пока f(xl) > у
х1:=х1/2
все-цикл
%Определить х2:
х2:=0.1
цикл-пока f(x2) < у
х2 := х2*2
все-цикл
%Определить х:
цикл-пока х2-х1 > E xt:=(xl +х2)/2
если f(xt) > у
то х2 := xt
иначе х1 := xt
все-если
vk.com/club152685050
все-цикл
Вывести xt, у.
Конец.
В приведенном тексте строка, начинающаяся с символа «%» -
комментарии, не влияющие на порядок вычислений и необходимые для лучшего понимания текста.
Таким образом, на каждом шаге решается одна достаточно простая задача, что существенно облегчает разработку алгоритма и является основным достоинством метода пошаговой детализации.
При разработке алгоритма методом пошаговой детализации мы использовали псевдокод, но можно было использовать и схемы алгоритма, в
которых решение каждой подзадачи может быть обозначено блоком
«предопределенный процесс», однако это не обязательно.
Общая схема алгоритма приведена на рис.4.
Далее необходимо детализировать выполнение подзадач ввода и вывода.
vk.com/club152685050
Начало
Ввод
формулы
Ввод
входных
данных
Вывод
графика
X1^=Xm
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определить х1 |
|
|
|
|
|
|
|
x1:=x1/2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
Нет |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f(x1)>y |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2:=0.1 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определить х2 |
|||
|
Определить х |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
x2:=x2*2 |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xt:=(xl +х2)/2 |
|
|
|
|
|
|
|
|
|
f(x2)<y |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Нет |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
Нет |
|
|
|
|
|
|
Да |
|
|
|
|
||||||||||||||||||
|
|
f(xt) > у |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вывести |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xt, у |
|
|
||||
х1 :=xt |
|
|
|
|
|
|
|
|
|
х2 := xt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Конец
Рис.4. Схема алгоритма
vk.com/club152685050
5.3.7 Примеры программ, реализующих рассмотренный алгоритм
Разработку программы целесообразно начать с простого модуля решения задачи. Ниже приведен пример программы для рассмотренного выше примера, в комментариях приведены соответствующие фрагменты псевдокода. Этот пример можно скопировать в среду MatLab и выполнить.
%пример для методички 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; |
% х1:=Xm |
while(f(n,x1)>y) |
% цикл-пока f(xl) > у |
x1=x1/2; |
% х1:=х1/2 |
end |
%все-цикл |
%Определить х2:
x2=0.1; |
% х2:=0.1 |
while(f(n,x2)<y) |
%цикл-пока f(x2) < у |
x2=x2*2; |
%х2 := х2*2 |
end |
%все-цикл |
%Определить х:
while(x2-x1>E) |
% цикл-пока х2-х1 > E |
vk.com/club152685050 |
|
xt=(x1+x2)/2; |
% xt:=(xl +х2)/2 |
if f(n,xt)>y |
% если f(xt) > у |
x2=xt; |
% то х2 := xt |
else |
%иначе х1 := xt |
x1=xt; |
|
end |
% все-если |
end |
% все-цикл |
at=f(n,x1); |
%результат |
Пример программы с простым диалогом
%пример для методички %с простым диалогом без проверки данных 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
vk.com/club152685050
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()
%ввод исходных данных 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
vk.com/club152685050
6. Структура отчета
Отчет должен содержать следующие разделы:
1.Титульный лист.
Форма титульного листа приведена в приложении.
2.Содержание.
Содержание должно включать наименование всех разделов отчета с указанием номера страниц, на которых помещаются начала данных разделов.
3.Основная часть отчета:
математическая постановка задачи;
описание метода численной реализации задания;
описание ручного счета тестового примера предложенным методом;
разработка алгоритмов решения задачи;
листинг программы;
результат работы программы
результат реализации метода с помощью встроенных функций;
сравнение обоих результатов.
5.Заключение.
Содержит общие выводы и сравнительный анализ результатов, полученных с помощью ручного счета и на ПК по разработанной программе.
6.Список использованной литературы.
Список должен содержать сведения об источниках, использованных при составлении пояснительной записки. В список следует включать все виды использованной литературы: монографии, учебники,
справочники, журналы, статьи и т.п. Список следует располагать в порядке появления ссылок на источники в тексте пояснительной записки и нумеровать арабскими цифрами с точкой. В тексте должны быть ссылки на соответствующие пункты списка. При использовании интернета обязательно указывается имя сайта.
При необходимости перечисленные разделы могут быть дополнены
другими разделами,
vk.com/club152685050
Образец титульного листа приведен в приложении 1.
Отчет должен быть написан хорошим языком без грамматических и семантических ошибок; текст не должен допускать различных толкований,
не следует употреблять для одного и того же понятия различные термины.
vk.com/club152685050
Список литературы.
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 с.
vk.com/club152685050
Приложение 1.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА КОМПЬЮТЕРНОЙ МАТЕМАТИКИ И ПРОГРАММИРОВАНИЯ
ОТЧЕТ О ПРАКТИКЕ ЗАЩИЩЕН С ОЦЕНКОЙ
РУКОВОДИТЕЛЬ
Доцент, к.ф.-м.н., доцент |
|
|
|
М. В. Фаттахова |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ ПО УЧЕБНО-ВЫЧИСЛИТЕЛЬНОЙ ПРАКТИКЕ
РАЗРАБОТКА ПРОГРАММЫ ПО РЕШЕНИЮ НЕЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ ИТЕРАЦИЙ
ОТЧЕТ ВЫПОЛНИЛА |
|
|
|
|
|
|
СТУДЕНТКА ГР. |
4233 |
|
|
|
А.В. Иванова |
|
|
|
|
|
|
||
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2013