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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Министерство образования и науки, молодежи и спорта Украины
Украинский государственный университет финансов и международной торговли
Кафедра информационных технологий
Лабораторная работа №1
на тему: «Метод половинного деления»
выполнил: студент
факультета международной
экономики и менеджмента
группы БД КН 3-1
Москаленко П.С.
Проверила: Волосенко Т. А
Киев-2012.
Цель работы: ознакомиться с методами решения уравнений с одной переменной, рассмотреть реализацию этих методов среде «Паскаль».
Текст работы:
Важную роль прикладного анализа представляет решение функциональных уравнений с одной переменной, в общем виде функциональное уравнение записывается в виде:
F(x)=0
В нашей программе находиться коринь именно такого уравнения, где F(x) непрерывная на промежутке {a;b} функция, которая удовлетворяет условию
F(a)*F(b)<0
Для нахождения корня отрезок {a;b} делиться пополам и выбирается тот полуинтервал, на концах которого знаки F(x) разные. Потом процесс распределения продолжается до тех пор, пока длинна интервала не станет меньшей E.
В программе используются переменные: a,b граници интервала; Е точность значения корня; x,g аргумент и значение функции; S=False, если F(a)*F(b)>0 и s=True в противоположном случае.
Практическая часть:
Для интервала {0;2} найдено корень 1.4619322
Программа:
Program halfdiv;
Const
a=0;
b=2;
e=0.00001;
Var
a1,b1,x,g,g1,g2:Real;
s:Boolean;
FUNCTION ff(x:Real) : Real;
BEGIN ff:=Exp(x)-x-2 END;
BEGIN s:=True;
a1:=a;
b1:=b;
x:=a1;g:=ff(x); g1:=g;
IF g=0 Then Exit;
IF g*g1>0 THEN
BEGIN
S:=False; Exit
END;
WHILE Abs(a1-b1)>e do
BEGIN
X:=(a1+b1)/2; g:=ff(x);
IF g*g2>0 THEN BEGIN b1:=x; g2:=g END
ELSE BEGIN a1:=x; g1:=g END;
END;
writeln(x) ;
END.
Отделение корней во многих случаях можно произвести графически, "учитывая что действительные корни уравнения F(x)=0 (1) - это есть точки пересечения графика функции y=F(x) с осью абсцисс y=0, нужно построить график функции y=F(x) на оси OX отметить отрезки, содержащие по одному корню. Но часто для упрощения построения графика функции y=F(x) исходное уравнение (1) заменяют равносильным ему уравнением f1(x)=f2(x) (2). Далее строятся графики функций y1=f1(x) и y2=f2(x) , а затем по оси OX отмечаются отрезки, локализующие абсциссы точек пересечения двух графиков".
На практике данный способ реализуется следующим образом: например, требуется отделить корни уравнения cos(2x)+x-5=0 графически на отрезке [-10;10]
Преобразуем уравнение cos(2x)+x-5=0 к следующему виду: cos(2x)=5-x. Затем следует каждую часть уравнения рассмотреть как отдельную функцию. Т. е. f(x)=cos(2x) и p(x)=5-x.
Для решения этой задачи в Mathcad необходимо выполнить следующие действия:
В итоге получаем:
Анализируя полученный результат, можно сказать, что точка пересечения двух графиков попадает на отрезок изоляции [5;6]
По методу «Хорд»
Решим уравнение методом хорд. Зададимся точностью ε=0.001 и возьмём в качестве начальных приближений и концы отрезка, на котором отделён корень: и , числовые значения и выбраны произвольно. Вычисления ведутся до тех пор, пока не выполнится неравенство .
Итерационная формула метода хорд имеет вид:
.
В нашем примере, в значение , подставляется , а в значение подставляется . Значение это будет числовое значение полученное по этой формуле. В дальнейшем подставляем в формулу в значение , а в значение .
По этой формуле последовательно получаем (подчёркнуты верные значащие цифры):
Первый случай
;
;
;
;
;
;
;
;
;
;
Проверим, что метод работает и в том случае, если и выбраны по одну и ту же сторону от корня (то есть, если корень не отделён на отрезке между начальными приближениями). Возьмём для того же уравнения и . Тогда:
Второй случай
;
;
;
;
;
;
;
;
Мы получили то же значение корня, причём за то же число итераций.
По методу простой итерации:
В основе метода заложено понятие сжимающего отображения. Определим терминологию:
Говорят, что функция осуществляет сжимающее отображение на , если
Тогда основная теорема будет выглядеть так:
Теорема Банаха (принцип сжимающих отображений).
|
Поясним смысл параметра . Согласно теореме Лагранжа имеем:
Отсюда следует, что . Таким образом, для сходимости метода достаточно, чтобы
.........
и так далее, пока
Выводы: в данной работе я реализовал метод половинного деления в среде Паскаль и проверил его работу на примере решения конкретного уравнения. Функциональные уравнения делятся на: алгебраические, а также трансцендентные. Здесь я решал алгебраическое уравнение. После алгебраических изменений с любого алгебраического уравнения можно получить уравнение в канонической форме, а затем, в большенстве случаев, этот этап проводят графически, однако в Паскале построить график практически не возможно, на этом этапе у меня и возникли трудности… к счастью построение графика не есть обязательным, что дало мне возможность обойти его стороной. Однако в Маткаде я таки построили график. Сложности встречаются когда не только на первом этапе при выделении промежутков, которые вмещают в себе корни уравнений, а и при следущем решении уравнения расчеты проводят не по основной функции, а по приближенной к ней: F2(x). В нашем случае расчеты проводились не по приближенной функции.
Я показал как правильно отеделять корни методом половинного деления, методом хорд и методом простой итерации.