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

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

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

vk.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

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