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

C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 21:32     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #1
учусь с++ в вузе. после 2 лекции надо сделать 2-ую лабу. написал код.как требовалось, в три файла. всё нормально компилируется, программа запускается, ошибок не выдаёт. но после ввода и считывания a,b,y ничего не происходит
в условии дана система
f= min{a-cos(x-1), a/(b+y),sin^2(y)} x<y
{ max{a^3,ln(x^2+y^2)} y<=x<y+5 }
a+cos^3(x-y) x>y+5
min и max, как я понял - найти наименьшее/наибольшее значение из указанного в скобках. требуется найти максимальное значение функции на отрезке [a,b] и значение x.
первый файл
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
57
#include<math.h>
 
float sravnenie(float a,float b)
{
    float min;
        do 
            min=a; while(a<b);
        do
            min=b; while(a>b);
        return min;
}
 
 
float math(float a, float x, float b, float y)
{ float f;
  float min=sravnenie(x,y);
    do
       {
         float min2=sravnenie(a-cos(x-1),a/(b+y));
         min2=sravnenie(min2,pow(cos(y),2));
         f=min2;
        }
    while (min==x);
 
  min=sravnenie(x,y+5);
 
    do
        f=a+pow(cos(x-y),3);
    while(min==y+5);
 
    do
    {
     float  min3=sravnenie(x,y);
 
      do 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      while(min3==y);  
 
      do 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      while(x=y);
    }
    while(min==x);
 
 
  return f;
}
второй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<math.h>
float math(float, float, float, float);
float sravnenie(float a,float b);
extern float m1;
float srav(float a, float b, float y)
{ float minim=sravnenie(a,b);
   float max=b;
  do  max=a; while (b==sravnenie(a,b));float i=minim,k, m=math(minim,i,max,y);
    float h=fabs((a-b)/2);
    do
    { 
        if (sravnenie(m,math(minim,i+h,max,y) )==m)
            {m=math(minim,i+h,max,y);k=i+h;
        }
        i=i+h; m1=m;
    } while(i<=max);
    return k;
}
и третий
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
float a,b,y,k,m1;
void main (void)
{    float srav(float, float, float);
    
    cout<<"Input a"; cin>>a;
    cout<<"Input b"; cin>>b;
    cout<<"Input y"; cin>>y;
    k=srav(a,b,y);
    cout<<k<<m1;
    
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 21:32     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x
Посмотрите здесь:

найти максимальное и минимальное значение функции на отрезке C++
C++ си++ вычислить значение функции на отрезке
Вычислить значение функции на отрезке. C++
Найти максимальное значение функции C++
C++ [С++]Найти максимальное и минимальное значение функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MAnton
 Аватар для MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
03.10.2013, 21:43     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #2
непонятно зачем функция sravnenie если есть функция min() и max(). И в любом случае в функции sravnenie циклы не нужны
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
03.10.2013, 21:46     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #3
Цитата Сообщение от Морфей Посмотреть сообщение
float sravnenie(float a,float b) { float min; do min=a; while(a<b); do min=b; while(a>b); return min; }
Здесь программа циклится.
Т.к.
C++
1
2
3
do 
    min=a; 
while(a<b);
При a<b всегда истина.
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 21:46     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #4
Морфей, в первый файл ты не подключил остальные два(#include <имя файла.cpp>), наверное поэтому)
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 21:50  [ТС]     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #5
в методичке указана необходимость этой функции. ну я её и использовал.

Добавлено через 2 минуты
Цитата Сообщение от WilFred Посмотреть сообщение
Морфей, в первый файл ты не подключил остальные два(#include <имя файла.cpp>), наверное поэтому)
разве обязательно подключать? они в одном проекте. да и в первой лабе так же делал, без подключения других файлов.
MAnton
 Аватар для MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
03.10.2013, 21:51     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #6
ну тогда
C++
1
2
3
4
float min(float a,float b){
if(a<b) return a;
else return b;
}
WilFred
 Аватар для WilFred
31 / 26 / 3
Регистрация: 11.03.2012
Сообщений: 71
03.10.2013, 21:51     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #7
Морфей, сори это я тупанул)
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 21:57  [ТС]     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #8
поменял тело фун-ции sravnenie на
C++
1
2
3
if (a<b) return a;
    else 
        return b;
безрезультатно.
MAnton
 Аватар для MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
03.10.2013, 22:02     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #9
и во втором файле в строке 8 если условие в while истинно то из цикла программа не выйдет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 22:24     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x
Еще ссылки по теме:

C++ Оброботка одномерных массивов (Вычислить m значений функции f(x) на отрезке [a, b], найти элементы, среднее значение)
C++ Вычислить значение функции f (x) на отрезке [a, b]
C++ Найти наибольшее значение функции на отрезке

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

Или воспользуйтесь поиском по форуму:
Морфей
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 6
03.10.2013, 22:24  [ТС]     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x #10
№1
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
#include<math.h>
 
float sravnenie(float a,float b)
{
    
    if (a<b) return a;
    else 
        return b;
}
 
 
float math(float a, float x, float b, float y)
{ float f;
  float min=sravnenie(x,y);
    if (min==x);
       {
         float min2=sravnenie(a-cos(x-1),a/(b+y));
         min2=sravnenie(min2,pow(cos(y),2));
         f=min2;
        }
    
 
  min=sravnenie(x,y+5);
 
    if (min==y+5);
        f=a+pow(cos(x-y),3);
 
 
    if (min==x)
    {
     float  min3=sravnenie(x,y);
 
      if (min3==y);  
 
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      
 
      if (x=y)
       { 
         if (sravnenie(a*a*a,log(x*x+y*y))==a*a*a)
             f=log(x*x+y*y);
         else
             f=a*a*a;
         }
      
    }
    
 
  return f;
}
№2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<math.h>
float math(float, float, float, float);
float sravnenie(float a,float b);
extern float m1;
float srav(float a, float b, float y)
{ float max, minim=sravnenie(a,b);
    if(b==sravnenie(a,b))  max=a; else max=b; float i=minim,k=0, m=math(minim,i,max,y);
    float h=fabs((a-b)/2);
    do
    { 
        if (sravnenie(m,math(minim,i+h,max,y) )==m)
            {m=math(minim,i+h,max,y);k=i+h;
        }
        i=i+h; m1=m;
    } while(i<=max);
    return k;
}
№3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <conio.h>
using namespace std;
float a,b,y,k,m1;
void main (void)
{    float srav(float, float, float);
    
    cout<<"Input a"; cin>>a;
    cout<<"Input b"; cin>>b;
    cout<<"Input y"; cin>>y;
    k=srav(a,b,y);
    cout<<k<<endl<<m1;
    
    getch();
}
вроде работает. правильно считает или нет - не знаю. но лучше неправильно, чем никак. спасибо всем.
Yandex
Объявления
03.10.2013, 22:24     C++ циклы. Требуется найти максимальное значение функции на отрезке [a,b] и значение x
Ответ Создать тему
Опции темы

Текущее время: 04:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru