Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Grsiha Tsarev
4 / 4 / 0
Регистрация: 09.11.2009
Сообщений: 11
#1

Функции. Язык C. - C++

09.11.2009, 21:32. Просмотров 1588. Ответов 6
Метки нет (Все метки)

Найти минимум функции х (в квадрате) - sinх методом золотого сечения!

f(x)= x^2-sin(x)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2009, 21:32     Функции. Язык C.
Посмотрите здесь:

Программа на тему указатели, функции, строки. (язык Си) C++
C++ Язык С++ Функции for, while
Задержка и язык. C++
C++ ”Классы. Язык С++”
Язык С C++
русский язык C++
C++ Язык
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
11.11.2009, 21:21     Функции. Язык C. #2
дай ссылку, что это за метод такой.. разберусь - напишу код))
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.11.2009, 12:16     Функции. Язык C. #3
дай ссылку, что это за метод такой..
http://ru.wikipedia.org/wiki/Метод_золотого_сечения
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
12.11.2009, 19:14     Функции. Язык C. #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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <cmath>
 
#define ld double
#define abs(a) ( ((a) < 0) ? (-(a)) : (a) )
#define min(a,b) ( ((a) > (b)) ? (a) : (b) )
 
using namespace std;
 
ld const e = 0.001*0.001*0.001,
         f = ( sqrt((ld)5) + 1 ) / 2;
ld x = -0.1,
   y = 1.0;
 
ld R(ld a, ld b)
{
    ld x1 = b - (b-a)/f,
       x2 = a + (b-a)/f,
       y1 = x1*x1 - sin(x1),
       y2 = x2*x2 - sin(x2);
 
    if ( abs(b-a) < e ) return min(y1,y2);
 
    if (y1 <= y2)
    {
        b = x2;
        R(a,b);
    }
    else
    {
        a = x1;
        R(a,b);
    }
}
 
int main()
{
    ld w = R(x, y);
 
    cout << w;
 
    return 0;
}
пашет, но не пашет, в том смысе что вернуть значение, которое вычисляет функция мне не удалось, но если руками продебажить, то можно узнать))
Grsiha Tsarev
4 / 4 / 0
Регистрация: 09.11.2009
Сообщений: 11
14.11.2009, 21:04  [ТС]     Функции. Язык C. #5
ммм.... Мне вообщето нужно не в СИ++, а в СИ
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
14.11.2009, 22:54     Функции. Язык C. #6
это проблема? замени
это
C++
1
2
3
4
#include <iostream>
#include <cmath>
//--------------
 cout << w;
на
это
C++
1
2
3
4
#include //тут библиотеку ввода-вывода
#include <cmath>
//--------------
printf("%f",w)
. Я то думал не сложно найти аналог функций си, когда есть готовый код на си++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2009, 05:12     Функции. Язык C.
Еще ссылки по теме:

Язык программирования С++ C++
C++ русский язык
Задача (язык С + +). Вывести таблицу значений функции y = 2х2 +3 х-5 на промежутке [-2, 2] с шагом 0,1 C++
C++ Перевести на язык С++
C++ Нужно вывести на экран график функции, какой язык использовать?

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

Или воспользуйтесь поиском по форуму:
TikoPatiko
3 / 3 / 0
Регистрация: 24.10.2009
Сообщений: 17
15.11.2009, 05:12     Функции. Язык C. #7
Аналог кода в С (Си)

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
#include <stdio.h>
#include <math.h>
 
#define ld double
#define abs(a) ( ((a) < 0) ? (-(a)) : (a) )
#define min(a,b) ( ((a) > (b)) ? (a) : (b) )
 
ld const e = 0.001*0.001*0.001,
                 f = ( sqrt((ld)5) + 1 ) / 2;
ld x = -0.1,
   y = 1.0;
 
ld R(ld a, ld b)
{
        ld x1 = b - (b-a)/f,
           x2 = a + (b-a)/f,
           y1 = x1*x1 - sin(x1),
           y2 = x2*x2 - sin(x2);
 
        if ( abs(b-a) < e ) return min(y1,y2);
 
        if (y1 <= y2)
        {
                b = x2;
                R(a,b);
        }
        else
        {
                a = x1;
                R(a,b);
        }
}
 
int main()
{
        ld w = R(x, y);
 
        printf("%f",w);
 
        return 0;
}
Yandex
Объявления
15.11.2009, 05:12     Функции. Язык C.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru