Министерство образования и науки РФ
Государственное образовательное учреждение
высшего профессионального образования
САМАРСКИЙ ГОСУДАРСТВЕННЫЙ
АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ
имени академика С.П. КОРОЛЕВА
(научный исследовательский университет)
СГАУ
Факультет летательных аппаратов
Кафедра летательных аппаратов
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к профессионально-ознакомительной практике
Решение уравнений с одним неизвестным. Дихотомия и метод простых итераций.
Выполнила студент группы 1208
Нестерова Н. А.
Проверил___________________
Оценка_____________________
Самара 2012
ЗАДАНИЕ
Разработать вычислительный алгоритм метода «Решение уравнений с одним неизвестным. Дихотомия и метод простых итераций.
Разработать программный модуль в среде DELPHI, реализующий данный алгоритм с графической иллюстрацией.
Разработать интерфейс пользователя (внутри модуля) и подробное описание работы с ним.
Провести тестовый расчёт.
Записать программный продукт на CD.
Оформить пояснительную записку проекта в соответствии с СТП СГАУ.
РЕФЕРАТ
Пояснительная записка 27 с, 9 рисунков, 3 источника, 1 приложение.
DELPHI, ДИХОТОМИЯ, ИТЕРАЦИЯ, ТОЧНОСТЬ, НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ.
В данной работе составлена программа для реализации метода дихотомии и простых итераций для решения уравнений с одним неизвестным, проведён тестовый расчёт, подтверждающий правильность работы программы.
Содержание
Y
ВВЕДЕНИЕ 5
1 Математическая постановка задачи 6
1.1 Метод дихотомии 6
1.2 Метод простых итераций 8
2 Практическая реализация 9
2.1 Метод дихотомии 9
2.2 Метод простых итераций 10
Функция задаётся как отдельная функция в модуле Unit1; 10
, где . 10
3 Алгоритм моделирования 12
3.1 Метод дихотомии 12
3.2 Метод простых итераций 13
4 Тестовый расчёт 14
5 Руководство пользователя 15
5.1 Назначение программы 15
5.2 Минимальные системные требования 15
5.3 Сообщение пользователю 15
ЗАКЛЮЧЕНИЕ 19
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 20
ПРИЛОЖЕНИЕ А 21
ВВЕДЕНИЕ
Целью данной работы является разработка программы, реализующей метод дихотомии и простых итераций для нахождения корня уравнения с одним неизвестным.
Приведено математическое описание задачи, разработана блок-схема программы с описанием, приведен текст программы, дана инструкция пользователю.
1 Математическая постановка задачи
Метод дихотомии
Пусть задана непрерывная функция , промежуток , на котором функция имеет корень и точность вычисления .
Рисунок 1 – Постановка задачи
Метод дихотомии заключается в следующем:
Убедившись, что , поделим отрезок пополам и получим точку и два отрезка и .
Если , то корень найден c заданной точностью; иначе из полученных отрезков надо выбрать один такой, что , то есть
, если или ,если .
Новый отрезок делим пополам и получаем новую точку и выполняем те же действия до тех пор, пока не будет достигнута заданная точность.
Метод простых итераций
Пусть имеется функция , требуется найти корень этой функции, при котором . Заменим исходное уравнение на эквивалентное и составим итерации по следующему правилу:
Задавая начальное приближение х0, мы получаем последовательность , которая при стремлении к бесконечности имеет корень , который является корнем уравнения. Итерации продолжаются до тех пор, пока
.
Практическая реализация
Данная программа рассчитывает корень уравнения для функции
;
Исследуемая функция задаётся в модуле Unit1 в строчке №94:
function TForm1.Func(x: real): real;
begin
func:=x*x*x-x-3;
end;
Процедура graphic рисует график заданной функции на компонентах TImage.
Метод дихотомии
Метод дихотомии реализуется в следующей подпрограмме модуля Unit1 в строчке №230:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
img1.Canvas.Pen.Width:=4;
img1.Canvas.Pen.color:=clblue;
x3:=o1+(o2-o1)/2;
img1.Canvas.Ellipse({X1}round( (x3-x1)*img1.Width/abs(x2-x1) ), img1.Height div 2 - round(func(x3)*img1.Height/(2*max)) ,{x2}round((x3-x1)*img1.Width/abs(x2-x1) ) +2, img1.Height div 2 - round(func(x3)*(img1.Height/(2*max)))+2 );
if func(x3)*func(o1)>0 then o1:=x3 else o2:=x3;
i:=i+1;
a[i]:=x3;
if (abs(o1-o2)<=E) or (i>99) then
begin
timer1.enabled:=false;
with mem do
begin
lines.Add('Метод дихотомии. Количество итераций:') ;
lines.Add(floattostr(i));
lines.Add(‘Корень уравнения x= '+ floattostr(x3)) ;
text;
end;
end;
end;
Метод простых итераций
Функция задаётся как отдельная функция в модуле Unit1;
, где .
Метод непосредственно реализуется в последующей процедуре модуля unit1 в строчке №300:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
img2.Canvas.Pen.Width:=4;
img2.Canvas.Pen.color:=clblue;
img2.Canvas.Ellipse({X1}round( (x4-x1)*img1.Width/abs(x2-x1) ), img1.Height div 2 - round(func(x4)*img1.Height/(2*max)) ,{x2}round((x4-x1)*img1.Width/abs(x2-x1) ) +2, img1.Height div 2 - round(func(x4)*(img1.Height/(2*max)))+2 );
K:=k+1;
y:=func1(x4) ;
d:=abs(y-x4);
x4:=y;
if (d<=e) or (x4>=x2) then
begin
timer2.Enabled:=false;
with mem do
begin
lines.Add('Метод простых итераций. Количество итераций:') ;
lines.Add(floattostr(k));
lines.Add('Корень уравнения x= '+ floattostr(x4)) ;
text;
end;
end;
end;
3 Алгоритм моделирования
3.1 Метод дихотомии
Начало
f(a)*f(b)<0
Ввод начальных данных: a, b, e
Задайте другой интервал
нет
да
да нет
Вывод корня, х1
да нет
Конец
Рисунок 2 – Алгоритм метода дихотомии
3.2 Метод простых итераций
Начало
y:= (x0)
d:=|y-x0|
x0:=y
a, b, , x0
Вывод корня, х0
Конец
нет
да
Рисунок 3 – Алгоритм метода простых итераций
Тестовый расчёт
С помощью программы MathCad был проведён тестовый расчёт для функции , который показывает правильность работы программы.
Рисунок 4 – График функции в Mathcad
На рисунке отчётливо видно, что корень находится на промежутке ;
Решив уравнение аналитически получаем корень 1,6716, что соответствует числу, полученному программой.
5 Руководство пользователя
5.1 Назначение программы
Данная программа предназначена для моделирования отыскания корня уравнения с одним неизвестным с помощью метода дихотомии и простых итераций.
5.2 Минимальные системные требования
Для запуска программы требуется:
- Операционная система: Microsoft Windows 95/98/Me/XP/Vista/Seven;
- Процессор: Pentium 400 GHz;
- Оперативная память: 16 Mb.
5.3 Сообщение пользователю
При запуске программы появляется окно, показанное на рисунке 5.
Рисунок 5 – Главное окно программы
Первый шаг – введение начальных данных: отрезка, точности расчёта и начального приближения.
Рисунок 6 – Введение начальных данных
Следующий – построение графика. Для этого пользователю необходимо нажать на кнопку «Нарисовать график». После этого в правой части программы появляются два одинаковых графика, соответственно один для метода простых итераций, другой для дихотомии. График функции можно увидеть на рисунке 7.
Рисунок 7 – График функции
В программе так же имеются четыре кнопки: «Старт», «Сброс», «Пауза», «Выход».
После нажатия на кнопку «Старт» программа начинает свою работу. На графиках справа появляются точки, соответствующие итерационным значениям аргументов. Данный процесс можно увидеть на рисунке 8.
Рисунок 8 – Итерационный процесс
При этом в окне вывода появляется информация о количестве итераций и корень уравнения (рисунок 9).
Рисунок 9 – Окно вывода
При нажатии на кнопку «Сброс» окно вывода очищается, а график перерисовывается заново.
При нажатии на кнопку «Пауза» программа прекращает свою работу.
При нажатии кнопки «Выход» главное окно закрывается.