Смекни!
smekni.com

Метод золотого перерізу для пошуку екстремумів функцій (стр. 4 из 4)

Зауваження 1'. Іноді на практиці комбінують обидва методи: перші кроки роблять по методу золотого перерізу, а коли оптимум достатньо близький, обраховують число m і переходять до методу Фібоначі.

3. Текст програми

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Menus, TeEngine, Series, ExtCtrls, TeeProcs, Chart;

type

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Edit4: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Memo1: TMemo;

Label5: TLabel;

Chart1: TChart;

Series1: TLineSeries;

procedure Button1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

eps:real;

a,b,ao,bo:real;

alpha:real;

x1,x2:real;

f1,f2:real;

x_opt:real;

implementation

{$R *.dfm}

function f(x:real):extended;

begin

f:=sin(x+1); //zadannja potribnoji fynkchiji !!!

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

Memo1.Lines.Clear;

Memo1.Lines.Add('F(x)= sin(x+1)');

end;

procedure TForm1.Button1Click(Sender: TObject);

var h:real;xx:real; i:integer;

begin

eps:=StrToFloat(Edit1.Text);

ao:=StrToFloat(Edit2.Text);

bo:=StrToFloat(Edit3.Text);

a:=ao; b:=bo;

alpha:=(sqrt(5)-1)/2;

x1:=bo-alpha*(bo-ao);

x2:=ao+alpha*(bo-ao);

f1:=f(x1);

f2:=f(x2);

while abs(a-b)>eps do

BEGIN

if f1>{<}f2 then

begin

b:=x2;

x2:=x1;

f2:=f1;

x1:=b-alpha*(b-a);

f1:=f(x1);

end ELSE

begin

a:=x1;

x1:=x2;

f1:=f2;

x2:=a+alpha*(b-a);

f2:=f(x2);

end;

END;

x_opt:=(a+b)/2;

Edit4.Text:=FloatToStr(x_opt);

{--------------------------------}

xx:=ao;

h:=(bo-ao)/20;

for i:=1 to 20 do

begin

Series1.AddXY(xx,f(xx),'',clblue);

xx:=xx+h;

end;

end;

end.


4. Результат роботи програми

Рис. 1

Розв’язок вручну:

Розв’язок рівняння в роботі Розв’язок прикладу 2


Отже максимум = -1 при х = ±1, у = 4 – т. мінімума

а мінімум = 0,57 при х = ±2, у =13 – т. максимума


Висновок

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


Список використаної літератури

1. Сторнгин Р.Г. Численные методы в многоэкстремальных задачах (Информационно-статистические алгоритмы). – М.: Наука, 1978. –240 с.

2. Бейко И.В., Бублик Б.Н., Зинько П.Н. Методы и алгоритмы решения задач оптимизации. – К.: Вища школа, 1983. –512 с.

3. Стахов О.П. За принципом золотої пропорції: перспективний шлях розвитку обчислювальної техніки. Журнал "Вісник Академії наук Української РСР", №1-2, 1990 г.

4. Ю.В. Васильков, Н.Н. Василькова. «Компютерные технологии вычислений в математическом моделирование» Москва, «финансы и статистика» 2002. – 249 с.