Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Метод бисекции

Читайте также:
  1. A) Метод обучения.
  2. A) Новый метод мониторинга доказал свою надежность.
  3. A) определение спроса на товар, оценка издержек производства, выбор метода ценообразования, установление окончательной цены
  4. A. метод абсорбции
  5. B. Основные приложения метода координат на плоскости.
  6. C) Методы исследования
  7. C.) К специфическим задачам, которые используются в ходе реализации частично-поисковых методов на уроке технологии, относятся
  8. D)практических методов.
  9. Hs-СРБ – высокочувствительный метод измерения концентрации СРБ.
  10. I. Назначение методических рекомендаций

Лабораторная работа №3

Решение нелинейных уравнений

 

Теория

 

Метод бисекции

Пусть необходимо решить уравнение , где непрерывна на отрезке [a;b] и корень заключен в том же интервале т.е.

Разделим отрезок [a;b] пополам, т.е. найдем и вычислим значение функции в этой точке.

Если окажется, что , то х–корень уравнения. Если же , то выбираем ту половину отрезка [a;х] или [х;b], на концах которой функция имеет противоположные знаки. Это отрезок [х;b]. Половина участка, не содержащая корня ([a;х]), отбрасывается, и левая граница интервала перемещается в точку деления пополам (а = х).

При повторном делении производятся те же самые операции: новый отрезок [a;b] делится пополам, вычисляется значение функции в точке деления и определяется отрезок, содержащий истинный корень

Процесс деления продолжают до тех пор пока длина отрезка [a;b], содержащего корень, не будет меньше некоторого наперед заданного е. И пока значение функции в точке деления превышает по абсолютной величине е.

 

Метод касательных

Пусть уравнение имеет один корень на отрезке [a;b], а его первая и вторая производные определены, непрерывны и сохраняют постоянные знаки в этом интервале.

Геометрически, метод Ньютона эквивалентен замене небольшой дуги кривой касательной в некоторой точке кривой.

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

Через точку с координатами проведем касательную к кривой . В качестве второго приближения корня возьмем абсциссу точки пересечения этой касательной с осью Ох. Через точку снова проведем касательную, абсцисса точки пересечения которой даст нам следующее приближение корня и т.д.

Уравнение касательной, проходящей через точку , имеет вид:

Полагая у=0, а х= , найдем абсциссу точки пересечения касательной с осью Ох:

Следующее приближение находим по формуле:

Применяя формулы уточнения значения корня многократно, получим в общем виде:

Процесс вычислений заканчивают обычно по условию

Разность между соседними приближениями должна быть меньше заданной степени точности е.

 

Задание:

Решить уравнение методом бисекции и касательных

 

(вар. 11)

 

Программный код:

unit lab6;

 

interface

 

uses

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

Dialogs, StdCtrls, jpeg, ExtCtrls, Grids;

 

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

Image1: TImage;

GroupBox2: TGroupBox;

Button1: TButton;

Button2: TButton;

Button3: TButton;

GroupBox3: TGroupBox;

x1: TEdit;

x2: TEdit;

eps: TEdit;

GroupBox4: TGroupBox;

result: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

epsilon: real;

 

implementation

 

{$R *.dfm}

 

procedure inicial(); //заполнение

begin

form1.x1.Text:='1,2';

form1.x2.text:='1,5';

form1.eps.text:='0,001';

form1.result.cells[0,0]:='Метод';

form1.result.cells[1,0]:='x';

form1.result.cells[0,1]:='Бисекции';

form1.result.cells[0,2]:='Касательных';

form1.result.cells[2,0]:='Проверка';

form1.result.cells[2,1]:='не проверено';

form1.result.cells[2,2]:='не проверено';

end;

 

function fx(x:extended):extended; // F(x)

begin

fx:=(sqr(x)*x)+2*x-7;

end;

 

function f1x(x:extended):extended; // F`(x)

begin

f1x:=(3*sqr(x))+2;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

inicial();

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var

l_kr, p_kr: extended; //левый и правый края итераций

res: extended; //x

fox: extended; //F(x)

begin

epsilon:=strtofloat(eps.text);

l_kr:=strtofloat(x1.Text);

p_kr:=strtofloat(x2.Text);

res:=(l_kr+p_kr)/2;

fox:=fx(res);

while fox>=epsilon do

begin

res:=(l_kr+p_kr)/2;

fox:=fx(res);

if fox>0 then

begin

p_kr:=res;

end

else

begin

l_kr:=res;

end;

end;

form1.result.cells[1,1]:=floattostr(res);

if fox<epsilon then

form1.result.cells[2,1]:='проверено';

end;

 

procedure TForm1.Button3Click(Sender: TObject);

var

xn, xnp1:extended;

xnt, xnp1t:extended;

begin

epsilon:=strtofloat(eps.text);

xn:=strtofloat(x2.Text);

xnp1:=xn-(fx(xn)/f1x(xn));

while abs(xnp1-xn)>=epsilon do

begin

xn:=xnp1;

xnp1:=xn-(fx(xn)/f1x(xn));

end;

form1.result.cells[1,2]:=floattostr(xnp1);

if abs(xnp1-xn)<epsilon then

form1.result.cells[2,2]:='проверено';

end;

end.




Дата добавления: 2015-04-11; просмотров: 28 | Поможем написать вашу работу | Нарушение авторских прав

<== 1 ==> | 2 | 3 | 4 |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.014 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав