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

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

Войти
Регистрация
Восстановить пароль
 
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 109
#1

определить точки перегиба функции на заданном интервале - C++

13.03.2013, 22:46. Просмотров 697. Ответов 2
Метки нет (Все метки)

x*cos(x))/(1+ pow(x,2) на интервале [-4 4]


хочу разобраться по порядку
понимаю что нужно считать численное значение функции.значит, алгоритм таков, если правильно рассуждаю:

1 нужно найти первую производную..
2 найти вторую производную.
3 вторая производная=0 - те точки заданного интервала, в которых 2производная будет принимать данное значение-условие, и являются точками перегиба


1


из мат.анализа знаю что производная это f'(x) = (f1(x) - f1(x0))/(x - x0) , где

C++
1
2
3
4
float f1(float x)
{
     return((x*cos(x))/(1+ pow(x,2)) ) ;    //f1(x) -dannaja fynkcija dlja zadanija 3
      }
а
C++
1
f1(x0)
по какому значению x0 тогда считается? x0=-4- как первое значение на заданном интервале, или как новое значение какое-то необходимо описать?


и 2

первую производную посчитать не тяжело,зная все необходимые значения.а как правильно посчитать вторую производную???..знаю что f''(x) = (f'(x))' а как расписать для программы незнаю..
а 3 пункт реализуется просто, зная вторую производную.. вот в ней и загвоздочка..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 22:46     определить точки перегиба функции на заданном интервале
Посмотрите здесь:

Построить график функции на заданном интервале C++
Табулирование функции y=x*sin(x) на заданном интервале C++
C++ Вычисление значений функции на заданном интервале
Вычисление значений функции на заданном интервале C++
C++ Табулирование функции на заданном интервале
Найти точки экстремума sin(x) на заданном интервале C++
Вычислить значения функции на заданном интервале C++
Вычислить значения функции на заданном интервале C++
Табулирование функции y=|2x+14| на заданном интервале C++
Табулирование функции на заданном интервале C++
C++ Табулирование значений функции на заданном интервале

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Черный ворон
129 / 123 / 6
Регистрация: 31.01.2012
Сообщений: 435
13.03.2013, 23:17     определить точки перегиба функции на заданном интервале #2
пусть f'(x)=g(x), тогда f"(x)=(g(x)-g(x0))/(x-x0). вот и все
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 109
04.04.2013, 14:12  [ТС]     определить точки перегиба функции на заданном интервале #3
Мое внутреннее я подсказывает, что програмку составила по смыслу правильно.. Но .. выбивает много ошибок.. Есть те, с которыми справиться сама не могу. С функциями тяжело дружу
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
float f1(float x)/*vira*enie 1*/
 {return (x*cos(x))/(1+ pow(x,2));}
 
float f2 (float x) /*vira*enie 2*/
{return(exp(x)/x);}
 
float f3 (float x)/*vira*enie 3*/
{return (1/(3+2*cos(x)));}
 
float proizv1(float *f(float),float x)
/* pervaja proizvodnaja iz klassi4eskogo opredelenija eto f'(x)=(f(x0)-f(x))/(x-x0) */
/* opredelim proizvodnyjy s tochnost'jy h=x-x0=0.001 */
/* znachit x0=x-h */
/*polychaem znachenie dlja proizvodnoj (f(x-h)-f(x)/h */
{ float h;
h=0.001;
return((f(x-h)-f(x)/h);      
}
 
 
float proizv2(float *proizv1(float),float x)
/*vtoraja proizvodnaja iz klassi4eskogo opredelenija*/
/* f''(x)=(f'(x))' proizvodnaja ot proizvodnoj*/
{ float h;
h=0.001;
return(proizv1(x-h)-proizv1(x)/h);      
}
 
void tochki(float *proizv2(float),float xn,float xk,float dx)
{float x1,y; int i;
printf("____________________________\n");
 
printf("|___i____|___x____|____y____|\n");
i=0;
for (x1=xn;x1<=xk;x1+=dx)
{proizv2(x1);
i++;
printf("|___%d____|_%.1f_|_%.5f_|\n",i,x1,proizv2(x1));
}
for (x1=xn;x1<=xk;x1+=dx)
{proizv2(x1);
 if (proizv2(x1==0) printf("tochka peregiba=%.1f\n",x1);
 /*yslovie syshestvovanija tochki peregiba*/
 else printf("net tochek peregiba");
}
 
void vibor(float *tochki(float))
{int n;
printf("Kakoj fynkciej bydem rabotat'?\n");
printf("1.  x*cos(x))/(1+ pow(x,2)\n");
printf("2. exp(x)/x\n");
printf("3. 1/(3+2*cos(x))\n");
printf("0. Vihod\n"); 
   switch(n)
    { case 1: tochki(f1,-4,4,0.5); break;
     case 2: tochki(f2,-6,1,0.5); break;
     case 3: tochki(f3,0,4,0.5); break;
     case 0: exit break;
     default:exit;
    }
}
  int main()
  { vibor(float *tochki(float);
   system("pause");
   return 0;
   }
 
   }


в функциях
C++
1
 proizv1(float *f(float),float x)
и
C++
1
float proizv2(float *proizv1(float),float x)
выбивает одну и туже ошибку invalid operands of types `float*' and `float' to binary `operator/'
что я делаю не так??
Yandex
Объявления
04.04.2013, 14:12     определить точки перегиба функции на заданном интервале
Ответ Создать тему
Опции темы

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