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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2015, 16:56   #1
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
Радость метод парабол.

Помогите, пожалуйста, найти ошибку в коде. Программа должна находить наименьшее значение функции f(x)=(x-3)*(x-3)/(x-2) на промежутке [2.1;5] методом парабол.
Код:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
double a0,a1,a2,xx0,xx1,x1=2.1,x2,x3=5,e,dx;
 
double f(double x) {double f;
    f=(x-3)*(x-3)/(x-2);
    return f;
}
 
double a();
void input();
 
int main()
{input();
return 0;}
 
double a()
{a0=f(x1);
 a1=(f(x2)-f(x1))/(x2-x1);
 a2=((f(x3)-f(x1))/(x3-x1)-a1)/(x3-x2);
return a0,a1,a2;}
 
void input()
{
cout<<"e=";cin>>e;
cout<<"dx=";cin>>dx;
x2=x1+dx;
 
do
{ xx0=(x1+x2-a1/a2)/2;
  if(f(x1)>f(xx0)&&f(xx0)<f(x2)&&x1<xx0&&xx0<x2) {x1=xx0;x2=x2;x3=x3;} else
  if(f(x2)>f(xx0)&&f(xx0)<f(x3)&&x2<xx0&&xx0<x3) {x1=x2;x2=xx0;x3=x3;}
  a();
  xx1=(x1+x2-a1/a2)/2;  
}
while(fabs(xx0-xx1)<e);
 
cout<<"x*="<<xx1<<"; f(x*)="<<f(xx1);
 
getch();
}
krasy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод (Эйлера, парабол, центр прямоугл) trekalka Помощь студентам 2 29.05.2013 17:37
Метод перебора, Метод дихотомии, Метод золотого сечения Delphi !!! OneBri Помощь студентам 0 03.10.2012 08:42
метод парабол Юлия999 Паскаль, Turbo Pascal, PascalABC.NET 1 04.09.2011 16:17
метод парабол(мюллера) Юлия999 Паскаль, Turbo Pascal, PascalABC.NET 0 27.03.2011 19:20