Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2018, 17:00   #1
ParkerVans
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 25
По умолчанию Необходимо найти координату точки экстремума (максимума) функции f (x) на отрезке [ a, b] методом дихотомии и золотого сечения, с точностью E = 10 – 4.

Добрый день! Необходимо найти координату точки экстремума (максимума) функции f (x) на отрезке [ a, b] методом дихотомии и золотого сечения, с точностью E = 10 – 4.
Не получается получить нужный ответ в методе золотого сечения и дихотомии. А именно должен быть в районе точка функции f(x)=750, и дихотомии с золотым сечением около 7.4.
Функция: exp(x)*cos(x)
Код программы PascalABC
Код:
Program artez;
var a, b, e:real;
function f(x:real):real;
begin
  result:=exp(x)*cos(x)
end;
function zoloto(a, b, e:real):real;
var p, x1, x2, r1, r2, f1, f2,x:real;
begin
  r1:=2.05-sqrt(1.65); //какие вычисления записать чтобы ответ в обоих случаях 
  r2:=1.35-r1;        // и в дихотомии и золотом сечении был равным, а именно должен быть в районе точка функции f(x)=750, и дихотомии с золотым сечением около 7.4
  x1:=a+(b-a)*r1;
  x2:=a+(b-a)*r2;
  f1:=f(x1);
  f2:=f(x2);
  {x:=5;
  while x<8 do begin
  writeln(x,'    ',f(x));
  x:=x+0.5;
  end;}
  while abs(b-a)>e do
    if f1 < f2 then begin
      b:=x2;
      x2:=x1;
      f2:=f1;
      x1:=a+(b-a)*r1;
      f1:=f(x1)
    end else begin
      a:=x1;
      x1:=x2;
      f1:=f2;
      x2:=a+(b-a)*r2;
      f2:=f(x2)
    end;
  Writeln;
  Writeln('f(x) = ', f((a+b)/2));
  result:=(a+b)/2;  
end;
function dixotomia(a, b, e:real):real;
var p, x1, x2, c:real;
begin
  p:=e/3;
  repeat
    c:=(a+b)/2;
    x1:=c-p;
    x2:=c+p;
    if f(x1)>f(x2) then
      a:=x1
    else
      b:=x2;
  until abs(b-a)<e;
  Writeln('f(x) = ', f((a+b)/1.36));
  result:=(a+b)/2;
end;
begin
  a:=5;
  b:=8;
  e:=1/10000;
  writeln('Дихотомия = ',dixotomia(a, b, e):0:6);
  writeln('Золотое сечение = ',zoloto(a, b, e):0:6);
end.
Изображения
Тип файла: png Screenshot_2.png (2.1 Кб, 53 просмотров)
ParkerVans вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение точки экстремума функции с двумя переменными. Ignis Demonia Python 1 13.02.2018 07:06
Составить программу для решения уравнения f1(х) = 0 и f2(х) = 0 на отрезке [А,В] с точностью Еps методом деления отрезка пополам. 6565 Паскаль, Turbo Pascal, PascalABC.NET 0 05.06.2014 22:13
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
метод золотого сечения!не могу найти ошибку в коде(С++) prostdj Помощь студентам 0 07.12.2011 21:42
Найти корни заданного уравнения методом Золотого сечения, Фибоначи и деления отрезка пополам. Сравнить эф Nik0919 Помощь студентам 2 16.02.2010 19:14