Метод удвоения шага и метод бисекции

Общая характеристика теоремы Больцеана-Коши. Знакомство с особенностями метода равномерного поиска и метода бисекции. Анализ основных проблем поиска интервалов, содержащих корень, с заданной степенью точности. Рассмотрение способов локализации отрезков.

Рубрика Математика
Вид лабораторная работа
Язык русский
Дата добавления 02.10.2013
Размер файла 258,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1.Постановка задачи

шаг бисекция равномерный поиск

С заданной точностью найти интервал, на котором находится решение уравнения , используя метод удвоения шага и метод бисекции.

2. Краткие теоретические сведения

Решение уравнения f(x)=0 можно разбить на следующие подзадачи:

1) Определение количества корней данного уравнения;

2) Локализация отрезков, на которых находится по одному корню;

3) Поиск интервалов, содержащих корень, с заданной степенью точности.

Для определения количества корней данного уравнения можно применить теорему Больцеана-Коши.

Теорема Больцеана-Коши: если непрерывная на отрезке [a;b] функция на его концах имеет противоположные знаки (т.е., если f(a)*f(b)<0), то на [a;b] она хотя бы один раз обращается в ноль.

Затем необходимо локализовать отрезки, содержащие корень. На этом шаге можно применить следующую теорему:

Непрерывная строго монотонная функция f(x) на промежутке [a;b] имеет и притом в единственной точке значение 0 тогда и только тогда, когда на его концах она принимает значения разных знаков.

Локализацию отрезков можно проводить следующими способами:

1) Методом равномерного поиска;

2) Методом удвоения шага;

3) Методом половинного деления;

4) Методом хорд;

5) Методом Ньютона;

и другими.

После локализации отрезка необходимо проверить, имеет ли он указанную точность. Эта проверка проводится с помощью сравнения длины локализованного отрезка с наперёд заданной величиной е. Если длина отрезка меньше е, то можно идти на конец соответствующего алгоритма локализации.

3. Алгоритмы. Метод удвоения шага

Пусть некоторое число а задаёт начало поиска, а некоторое (достаточно большое) число b ограничивает число возможных итераций, и некоторое число h задаёт величину шага. Тогда алгоритм будет выглядеть следующим образом:

1) Пусть x0=a. Тогда x1:= x0+h.

2) Проверим неравенство f(xi+1)*f(xi)<0. Если оно верно, то идём к шагу 4). Иначе - к шагу 3);

3) xi+1:=xi+2i*h. Идём к шагу 2);

4) Если |xi+1-xi|<=h, то идём к шагу 5). Иначе x0:=xi, b:=xi+1, x1:= x0+h;

5) Если |xi+1-xi|<=е, то идём на конец алгоритма. Иначе уменьшаем h в нужное число раз и переходим к шагу 4)

4.Метод половинного деления

Пусть f(x) монотонна на промежутке [a;b], f(a)*f(b)<0, тогда:

1) с:=(a+b)/2;

2) Если f(a)*f(с)<0, то b:=с. Переход к шагу 4). Иначе - переход к шагу 3);

3) a:=с. Переходим к шагу 4)

4) Если (b-a)<=е, то идём на конец алгоритма. Иначе переходим к шагу 1).

5. Код программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, XPMan, ComCtrls, StdCtrls;

type

TForm1 = class(TForm)

edt1: TEdit;

edt2: TEdit;

ud1: TUpDown;

ud2: TUpDown;

xpmnfst1: TXPManifest;

lbl1: TLabel;

lbl2: TLabel;

mmo1: TMemo;

edt4: TEdit;

lbl4: TLabel;

ud4: TUpDown;

btn1: TButton;

btn2: TButton;

edt5: TEdit;

lbl5: TLabel;

procedure edt2Change(Sender: TObject);

procedure edt1Change(Sender: TObject);

procedure btn1Click(Sender: TObject);

procedure btn2Click(Sender: TObject);

procedure edt4Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var a,b,i,j:Integer; //нижняя и верхняя границы поиска + вспомогательные переменные

xa,x1,x2,xb,h,eps:Real; //Первоначальный шаг и заданная точность + вспомогательные переменные

Form1: TForm1;

implementation

{$R *.dfm}

function amount (x1, x2: real):real;

//Вычисление произведения значений функции в точках х1 и х2, чтобы потом определить его знак.

var am1, am2: Real;

begin

if x1=0 then x1:=1/eps; //Во избежание ошибки деления на ноль

am1:=Sqrt(1+x1)-(1/x1);

if x2=0 then x2:=1/eps;

am2:=Sqrt(1+x2)-(1/x2);

amount:=am1*am2;

if x1=1/eps then x1:=0;

if x2=1/eps then x2:=0;

end;

function equality (x1,x2,compa:real):Boolean; //compa = compared - сравнимая величина.

//Так как в силу специфики обработки компьютером чисел с плавающей точкой внезапно

var t:Real; //появляются миллиардные доли, мешающие сравнению, пришлось написать специальную функцию сравнения

begin

t:=10*eps;

if abs(x2-x1-compa)<1/t then equality:=true

else equality:=False;

end;

procedure TForm1.edt2Change(Sender: TObject);

begin

a:=StrToInt(edt1.Text); //Небольшой foolproof во избежание системных ошибок и нулевого числа срабатываний

b:=StrToInt(edt2.Text);

if a>=b then begin

ShowMessage ('Нижняя граница интервала не может быть меньше либо равна верхней!');

b:=a+1;

edt2.Text:=IntToStr(b);

end;

end;

procedure TForm1.edt1Change(Sender: TObject);

begin

a:=StrToInt(edt1.Text);

b:=StrToInt(edt2.Text);

if a>=b then begin

ShowMessage ('Нижняя граница интервала не может быть меньше либо равна верхней!');

//Небольшой foolproof во избежание системных ошибок и нулевого числа срабатываний

a:=b-1;

edt1.Text:=IntToStr(a);

end;

if a<-1 then begin

//А это - на случай, если кому вздумается ввести значение х, находящееся за пределами ОДЗ [-1; +inf)

ShowMessage('При x<(-1) функция не существует!');

a:=-1;

edt1.Text:=IntToStr(a);

end;

end;

procedure TForm1.btn1Click(Sender: TObject);

var found:Boolean; //Нашли ли мы промежуток с корнем?

begin

eps:=0.1;

for i:=0 to strtoint(edt4.Text) do eps:=eps*10;

a:=StrToInt(edt1.Text);

b:=StrToInt(edt2.Text);

h:=1;

if h>(b-a) then h:=(b-a)/2; //Небольшой foolproof на случай, если кому-то вздумается поставить шаг меньше, чем промежуток между a и b

xa:=a;

xb:=b;

j:=1;

x1:=xa;

x2:=xa+h;

while (x2<b) and (((equality(x1,x2,(1/eps)))=False) or (amount(x1,x2)>0)) do begin

//Зачем такое сложное условие? Да чтобы у меня: 1) Выводил "Нет корней", дойдя до верхней границы; 2) Не завершал сразу поиск, как только h=1/eps

if amount(x1,x2)<=0 then begin

found:=True;

if equality(x1,x2,h) then h:=h/10;

//Если разность между х2 и х1 равна h, и при этом х1 и х2 - границы интервала, содержащего корень, то уменьшаем h в десять раз для повышения точности

xa:=x1;

xb:=x2;

x2:=x1;

j:=1;

end;

x1:=x2;

x2:=x1+j*h;

j:=j*2;

if x2>xb then x2:=xb;

end;

if found=True then edt5.Text:='('+FloatToStr(x1)+' ; '+floattostr(x2)+')'

else edt5.Text:='В указанном промежутке нет корней';

end;

procedure TForm1.btn2Click(Sender: TObject);

var found:Boolean;

begin

eps:=0.1;

for i:=0 to strtoint(edt4.Text) do eps:=eps*10;

a:=StrToInt(edt1.Text);

b:=StrToInt(edt2.Text);

h:=(b-a)/2;

xa:=a;

xb:=b;

while (xb-xa)>1/eps do begin

//Тут простое условие, т.к. у нас нет такой величины, как размер шага.

if amount(xa,h)<0 then begin

xb:=h;

h:=(xa+xb)/2;

found:=true;

end

else if amount(h,xb)<0 then begin

xa:=h;

h:=(xa+xb)/2;

found:=true;

end

else begin

found:=False;

Break;

end;

end;

if found=True then edt5.Text:='('+FloatToStr(xa)+' ; '+floattostr(xb)+')'

else edt5.Text:='В указанном промежутке нет корней';

end;

procedure TForm1.edt4Change(Sender: TObject);

begin

if StrToInt(edt4.Text)>10 then begin

ShowMessage('Указанная степень точности слишком велика!');

edt4.Text:='10';

end;

end;

end

6. Тестовый пример

Рисунок 1 - вычисление интервала, содержащего корень, методом удвоения шага

Рисунок 2 - вычисление интервала, содержащего корень, методом бисекции

7. Проверка в MathCad

Рис.

1. Размещено на Allbest.ru

...

Подобные документы

  • Общая постановка задачи. Отделение корня. Уточнение корня. Метод половинного деления (бисекции). Метод хорд (секущих). Метод касательных (Ньютона). Комбинированный метод хорд и касательных. Задания для расчётных работ.

    творческая работа [157,4 K], добавлен 18.07.2007

  • Описание метода сведения краевой задачи к задаче Коши. Решение системы из двух уравнений с четырьмя неизвестными. Метод Рунге-Кутта. Расчет максимальной погрешности и выполнение проверки точности. Метод конечных разностей. Описание полученных результатов.

    курсовая работа [245,2 K], добавлен 10.07.2012

  • Структура и принципы решения линейных уравнений. Метод Крамера и Гаусса, Ньютона, половинного деления, секущих. Отличительные особенности и условия применения графического метода. Содержание теоремы Штурма. Принципы и основные этапы поиска интервалов.

    реферат [948,7 K], добавлен 30.03.2019

  • Ознакомление с историей появления метода золотого сечения. Рассмотрение основных понятий и алгоритма выполнения расчетов. Изучение метода чисел Фибоначчи и его особенностей. Описание примеров реализации метода золотого сечения в программировании.

    курсовая работа [416,0 K], добавлен 09.08.2015

  • Сущность и графическое представление методов решения нелинейных уравнений вида F(x)=0. Особенности метода хорд, бисекции, простой итерации, касательных и секущих. Проверка результатов с помощью встроенных функций и оценка точности полученных значений.

    контрольная работа [316,1 K], добавлен 09.11.2010

  • Исторический процесс развития взглядов на существо математики как науки, основные этапы формирования аксиоматического метода. Теории групп, множеств, отображений и конгруэнтности (равенства) отрезков. Основные аксиоматические теоремы и их доказательства.

    курсовая работа [26,2 K], добавлен 24.05.2009

  • Математические модели явлений или процессов. Сходимость метода простой итерации. Апостериорная оценка погрешности. Метод вращений линейных систем. Контроль точности и приближенного решения в рамках прямого метода. Метод релаксации и метод Гаусса.

    курсовая работа [96,7 K], добавлен 13.04.2011

  • Задачи Коши и методы их решения. Общие понятия, сходимость явных способов типа Рунге-Кутты, практическая оценка погрешности приближенного решения. Автоматический выбор шага интегрирования, анализ брюсселятора и метод Зонневельда для его расчета.

    курсовая работа [1,7 M], добавлен 03.11.2011

  • Формулировки и доказательства китайской теоремы об остатках. Доказательство с помощью метода математической индукции. Конструктивный метод доказательства. Основные алгоритмы поиска решения. Применение китайской теоремы об остатках к открытию сейфа.

    курсовая работа [1,0 M], добавлен 08.01.2022

  • Развитие численных линейных методов решения задач линейного программирования. Знакомство с методами поиска целевой функции: равномерный симплекс, методы Коши, Ньютона, сопряжённого градиенты, квазиньютоновский метод. Алгоритмы нахождения экстремума.

    курсовая работа [716,1 K], добавлен 12.07.2012

  • Контрольный пример к алгоритму метода хорд. Вычисление и уточнение корня методом хорд и касательных. Нахождение второй производной заданной функции. Уточненное значение корня решаемого уравнения на заданном интервале. Код программы данного примера.

    лабораторная работа [276,9 K], добавлен 02.12.2014

  • Геометрическая интерпретация методов Ньютона, итерации и спуска. Определение корня уравнения с заданной степенью точности. Решение систем нелинейных алгебраических уравнений. Нахождение эквивалентного преобразования для выполнения условия сходимости.

    курсовая работа [371,6 K], добавлен 14.01.2015

  • Вероятностное обоснование метода наименьших квадратов как наилучшей оценки. Прямая и обратная регрессии. Общая линейная модель. Многофакторные модели. Доверительные интервалы для оценок метода наименьших квадратов. Определение минимума невязки.

    реферат [383,7 K], добавлен 19.08.2015

  • Общая характеристика распространенных проблем поиска величины максимального потока в сети при помощи алгоритма Форда-Фалкерсона. Знакомство с задачами по дискретной математике. Рассмотрение особенностей и этапов постройки дерева кратчайших расстояний.

    контрольная работа [740,3 K], добавлен 09.03.2015

  • Смысл метода Ньютона для решения нелинейных уравнений. Доказательства его модификаций: секущих, хорд, ложного положения, Стеффенсена, уточненного для случая кратного корня, для системы двух уравнений. Оценка качества метода по числу необходимых итераций.

    реферат [99,0 K], добавлен 07.04.2015

  • Классификация методов кластеризации и их характеристика. Метод горной кластеризации в Matlab. Возможная область применения кластеризации в различных предметных областях. Математическое описание метода. Пример использования метода на реальных данных.

    реферат [187,0 K], добавлен 28.10.2010

  • Теоретическое обоснование расчетных формул. Задача Коши для дифференциального уравнения первого порядка. Метод Рунге-Кутта. Ломаная Эйлера. Построение схем различного порядка точности. Выбор шага. Апостериорная оценка погрешности. Правило Рунге.

    курсовая работа [111,1 K], добавлен 13.11.2011

  • Применение метода дополнительного аргумента к решению характеристической системы. Доказательство существования решения задачи Коши. Постановка задачи численного расчёта. Дискретизация исходной задачи и её решение итерациями. Программа и её описание.

    дипломная работа [5,7 M], добавлен 25.05.2014

  • Знакомство с уравнениями линейной регрессии, рассмотрение распространенных способов решения. Общая характеристика метода наименьших квадратов. Особенности оценки статистической значимости парной линейной регрессии. Анализ транспонированной матрицы.

    контрольная работа [380,9 K], добавлен 05.04.2015

  • Общая схема методов спуска. Метод покоординатного спуска. Минимизация целевой функции по выбранным переменным. Алгоритм метода Гаусса-Зейделя. Понятие градиента функции. Суть метода наискорейшего спуска. Программа решения задачи дискретной оптимизации.

    курсовая работа [90,8 K], добавлен 30.04.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.