Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  в
Language: C/C++
Code:
procedure TForm1.FormCreate(Sender: TObject);
var
   a, b, eps, x, x1, x2, k: real;
   vars, n: integer;
begin
     a := 0;
     b := 2;
     eps := 0.001;

     x := a;
     while (x < b) do
       begin
         Series1.AddXY(x, f(x));
         x := x + 0.01;
       end;

     vars := round((b-a)/eps);
     n := get_iteration(vars) + 1;
     
     x1 := a+(fibonachi(n-2)/fibonachi(n))*(b-a);
     x2 := a+(fibonachi(n-1)/fibonachi(n))*(b-a);

     k := 0;
     repeat
       if (f(x1)>=f(x2)) then
         begin
           b := x2;
           x2 := x1;
           x1 := a + (fibonachi(n-k-3)/fibonachi(n-k-1))*(b-a);
         end
       else
         begin
           a := x1;
           x1 := x2;
           x2 := a + (fibonachi(n-k-2)/fibonachi(n-k-1))*(b-a);
         end;
       k := k + 1;
     until((b-a)<eps);
     StatusBar1.Panels[0].Text := 'Відповідь: ' + FloatToStr((a + b)/2);
end;

function TForm1.fibonachi(n: real): real;
var
   k, i, j, c: integer;
begin
     i:=1; j:=i; c := 1;
     while (c < n) do
       begin
         k:=i;
         i:=j;
         j:=k+i;
         c := c + 1;
       end;
     fibonachi := i;
end;

function TForm1.get_iteration(vars: integer): integer;
var
   k, i, j, c: integer;
begin
     i:=1; j:=i; c := 0;
     while (i <= vars) do
       begin
         k:=i;
         i:=j;
         j:=k+i;
         c := c + 1;
       end;
     get_iteration := c;
end;

          
Comments: