0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 11
1

Метод золотого сечения.исправьте ошибку пожалуйста

14.12.2013, 16:47. Показов 1216. Ответов 4
Метки нет (Все метки)

Задача "Провести оптимизацию полученных полиномов на всем заданном интервале по методу золотого сечения"
вот что я закодил:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
float f(float x) {return 0.996515 * x*x - 0.016035 * x - 0.018121;}
int main(void) {
    int i = 0;
    float a, b, g=0.618, x1, x2,xm;
    float eps;
    setlocale(LC_ALL, "Russian");
    printf("Ввод отрезка [a, b] и точности eps:\n");
    scanf("%f%f%f",&a,&b,&eps);
    x1=b-(b-a)/g;
    x2=a+(b-a)/g;
    while (abs (a-b) > eps) {
    if (f (x1) < f (x2)) b=x2;
    else a=x1;
    x1=b-(b-a)/g;
    x2=a+(b-a)/g;   
    xm=x2-(x2-x1)/2;}
    printf("Минимум функции: (%f, %f), вычислено за %d итераций", xm, f(xm), i);
    getch();
    return 0;
}
но прога зацикливается(( интервал (-3;3) точность 0.001
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2013, 16:47
Ответы с готовыми решениями:

Метод золотого сечения
Ребята помогите нужно методом золотого сечения найти функцию(смотрел как это решали другие на вашем...

Метод золотого сечения
Пожалуйста , скиньте код Золотого сечения на С++ и объясните строчки именно с алгоритмом , очень...

Метод золотого сечения.
Народ, подскажите пожалуйста как будет выглядеть задача на С++ по методу Золотого сечения, при...

Метод золотого сечения
Доброго времения суток. Помогите пжлст исправить или добавь формулу(методы Золотого сечения). Там...

4
2 / 9 / 7
Регистрация: 12.10.2013
Сообщений: 43
14.12.2013, 17:08 2
Почему же прога зацикливается? Давайте считать: a=-3; b=3; eps=0.001;
Смотрим условие в while, где сказано: пока |-3-3|>0.001, выполняем следующие действия.
Скажи, 6>0.001?
0
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 11
14.12.2013, 17:10  [ТС] 3
6>0.001.а как сделать по другому?
0
2 / 9 / 7
Регистрация: 12.10.2013
Сообщений: 43
14.12.2013, 17:16 4
sanekjo, просто поискать в интернете)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <math.h>
#include <iostream>
#define M_E 2.71828182845904523536 
using namespace std;
 
double f(double x)
{return  pow(M_E,x)*sin(x*x-2*x+11);} //Здесь ваша формула
 
//---------------------------------------------------------------------------
double ab(double i)
{if(i<0)return -i;else return i;}   //это модуль
 
void main()
{
    double a, b, g, h, fu1, fu2,eps=0.000001;
 
 
    for(int i=-1;i<=1;i+=2)//Сначало ищем минимум, затем максимум
    {
 
        cin>>a>>b; //Вводим начальную координату и конечную
 
        g = a+(b-a)*(0.38);
        h = b-0.38*(b-a);
        fu1 = i*f(g);
        fu2 = i*f(h);
 
        do{
 
            if( fu1<=fu2 )
            {
                b = h;
                h = g;
                fu2 = fu1;
                g = a+(b-a)*(0.38);  //Основная формула
                fu1 = i*f(g);
            }
            else
            {
                a = g;
                g = h;
                fu1 = fu2;
                h = b-0.38*(b-a);  //Основная формула
                fu2 = i*f(h);
            }
        }
        while(ab(a-b)>eps); //Условие выхода
        i==-1? cout<<"Minimum ":cout<<"Maximum ";
        cout<<"OTBET "<<(fu1-fu2)/2+fu2<<" v tochke "<<h<<endl;
 
    }
 
    system ("PAUSE"); //Консольная команда паузы проги
 
 
}
1
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 11
14.12.2013, 17:28  [ТС] 5
а мою прогу можно исправить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2013, 17:28
Помогаю со студенческими работами здесь

Метод Золотого Сечения
Помогите пожалуйста прокомментировать данную программу, а то не до конца пойму все действия. ...

Метод золотого сечения
Народ, подскажите пожалуйста как будет выглядеть задача на С++ по методу Золотого сечения, найти...

Метод золотого сечения или Метод дихотомии
Подскажите пожалуйста. Нужно реализовать алгоритм поиска интервала, содержащего минимум функции. ...

Метод золотого сечения считается неправильно
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; #include &quot;math.h&quot; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru