Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для Маринчик
1 / 1 / 3
Регистрация: 12.10.2012
Сообщений: 150

ошибочки. как разобраться?найти точки перегиба

25.04.2013, 23:50. Показов 1715. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно найти точки перегиба функции..видела гдето у вас здесь на форуме подобное но сама все равно не могу одолеть.
Дословно не помню,но преподаватель сказала что для поиска лучше искать точки перегиба исходя из значений, при которых поменяется знак производной.

Из школы знаю,что если для функции y = f (x) в некоторой точке xо f² (xo ) = 0 и при переходе через эту точку меняет свой знак на обратный, то точка М(хo,f(xo)) является точкой перегиба функции.

Для второй производной я программу составила, а как правильно поставить условие для точек перегиба не могу понять.. В том что написала в программке для условия по точкам, почему-то значения считает не те которые надо, или вообще не считает.. Объясните что не так, и как правильнее.
То что у меня наработано:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double   f1(double  x)/*vira*enie 1*/
 {return (x*cos(x))/(1+ pow(x,2));}
 
double   f2 (double  x) /*vira*enie 2*/
{return(exp(x)/x);}
 
double  f3 (double  x)/*vira*enie 3*/
{return (1/(3+2*cos(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 */
double  proizv1(double (*f)(double ),double  x)
{ double   h;
h=0.001;
return(( (*f)(x-h)-(*f)(x))/h);      //dlja pervoj proizvodnoj: proizv1(f1) proizv1(f2) proizv1(f3)
}
 
 
/*vtoraja proizvodnaja iz klassi4eskogo opredelenija*/
/* f''(x)=(f'(x))' proizvodnaja ot proizvodnoj*/
double  proizv2( double  (*proizv)(double ),double   x)
{ double  h;
  h=0.001;
//mo*no vizvat' pervyjy proizvodnyjy: ff=proizv1(f1);ff=proizv1(f2);ff=proizv1(f3);//
return(( (*proizv)(x-h)-(*proizv)(x))/h);  //dlja vtoroj proizvodnoj ili return(( (proizv1)(x-h)-(proizv1)(x))/h); 
}
 
void tochki(double  (*t)(double ),double  xn,double   xk,double  dx)    //vizov bydet tochki(proizv2,xn,xk,dx)
{double  x1; int i,z; double  a[20];
 printf(" ____________________________\n");
 printf("|___i___|___x___|_____y______|\n");
 i=0;
  for (x1=xn;x1<=xk;x1+=dx)
   {proizv2(t,x1);
    i++;
    printf("|___%d___|__%.1f__|_%.5f___|\n",i,x1,proizv2(t,x1));
   }
  
  
  
  printf("\ntochka peregiba:");
       for(z=0;z<=i;z++) 
       { for(x1=xn;x1<=xk;x1+=dx)
            { a[z]=proizv2(t,x1);
             } 
        }
 /// zdes' 4toto ne tak
 
   for(z=0;z<=i;z++) /*yslovie syshestvovanija tochki peregiba*/
    { for(x1=xn;x1<=xk;x1+=dx)
          {if ( (a[z]*a[z+1])<0 )printf("\nx=%.1f y=%.5f",x1,a[z+1]);}
     }           //tochka peregiba tam, gde fynkcija menjaet znak:     
                 
           //v f1 tochki peregiba dol*nu but' x= -2 0 3 y=sootvetstvyjyshie
          //f2 tochki peregiba dol*nu but' x=0 y y=sootvetstvyjyshie
        // f3 tochki peregiba dol*nu but' x=0,5 è x=3,5 y=sootvetstvyjyshie
   
     
  
  
  
  
  
printf("\n");  
} 
 
void vibor(  )
{int n;
printf("S 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"); 
  scanf("%d",&n);
   switch(n)
            {case 1: tochki(f1,-4,4,1); break;//dlja pervoj fynkcii na intervale -4 4
             case 2: tochki(f2,-6,1,1); break;//dlja vtoroj fynkcii na intervale -6 1
             case 3: tochki(f3,0,4,1); break;//dlja tret'ej fynkcii na intervale 0 4
             case 0: break;    
             default:printf("Nevernij re*im");  
             }
}          
 int main()
  {vibor();
   system("pause");
   return 0;
   }
Могу изложить свои рассуждения по нахождению точек перегиба.Значения ведь идут последовательно при вычислении производной,значит их можно рассматривать как массив, где можно найти необходимые точки-значения.Если знаки сначала идут +++ ( (+)*(+) или (-)*(-) дают плюс)при произведении, а потом резко появится - при произведении( (+)*(-) или (-)*(+)дают минус), значит там где минус,то есть 1множитель*2множитель<0 нужно искать нужную точку ,второй множитель и будет искомым значением,ведь на нем меняется знак.Даже если потом будет +++ то при новом - будет еще одна точка..по моему логично..или не очень логичные и правильные рассуждения??если верные рассуждения,скажите что не правильно у меня в проге в этой части,или как правильнее записать..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2013, 23:50
Ответы с готовыми решениями:

Найти точки перегиба на графике
Доброго времени суток! У меня есть программа, которая строит график по числам из массива.(пример графика ниже). Мне нужно находить на...

Определить точки перегиба функции на заданном интервале
x*cos(x))/(1+ pow(x,2) на интервале хочу разобраться по порядку понимаю что нужно считать численное значение функции.значит,...

Найти точки эктремума и точки перегиба и интервалы монотонности
y=x^4-2x^2+1 Помогите найти точки эктремума и точки перегиба и интервалы монотонности. Сижу решаю но мне кажется что то не то получается....

2
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
26.04.2013, 10:17
точка перегиба - это когда вторая производная меняет знак. бегите по точкам и проверяйте знак произведения второй производной в текущей точке на вторую производную в предыдущей точке. когда увидите минус или ноль (ну а вдруг) - зафиксирована точка перегиба.
0
 Аватар для Маринчик
1 / 1 / 3
Регистрация: 12.10.2012
Сообщений: 150
26.04.2013, 21:43  [ТС]
vxg, это я понимаю.. я не понимаю как програмно этот момент рассматривать...как в программе записать..перебирать значения второй производной как массив для этого условия или как??я вроде в программе , которую выше написала,поставила условие, но либо не выводятся результаты, либо выводятся все значения для второй производной по х..
что я в программе не так сделала?

Добавлено через 27 минут
как реализовать разобралась, переделала прогу.. но не все значения выводятся..только для второй функции.. а если выбирать первую или треть то нет, почему??
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
73
74
75
76
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double   f1(double  x)/*vira*enie 1*/
 {return (x*cos(x))/(1+ pow(x,2));}
 
double   f2 (double  x) /*vira*enie 2*/
{return(exp(x)/x);}
 
double  f3 (double  x)/*vira*enie 3*/
{return (1/(3+2*cos(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 */
double  proizv1(double (*f)(double ),double  x)
{ double   h;
h=0.001;
return(( (*f)(x-h)-(*f)(x))/h);      //dlja pervoj proizvodnoj: proizv1(f1) proizv1(f2) proizv1(f3)
}
 
 
/*vtoraja proizvodnaja iz klassi4eskogo opredelenija*/
/* f''(x)=(f'(x))' proizvodnaja ot proizvodnoj*/
double  proizv2( double  (*proizv)(double ),double   x)
{ double  h;
  h=0.001;
//mo*no vizvat' pervyjy proizvodnyjy: ff=proizv1(f1);ff=proizv1(f2);ff=proizv1(f3);//
return(( (*proizv)(x-h)-(*proizv)(x))/h);  //dlja vtoroj proizvodnoj ili return(( (proizv1)(x-h)-(proizv1)(x))/h); 
}
 
void tochki(double  (*t)(double ),double  xn,double   xk,double  dx)    //vizov bydet tochki(proizv2,xn,xk,dx)
{double  x1; int i,z; double  a[20];
 printf(" ____________________________\n");
 printf("|___i___|___x___|_____y______|\n");
 i=0;
  for (x1=xn;x1<=xk;x1+=dx)
   {proizv2(t,x1);
    i++;
    printf("|___%d___|__%.1f__|_%.5f___|\n",i,x1,proizv2(t,x1));
   }
  printf("\ntochka peregiba:");
  
  if ((proizv2(t,x1-1))*(proizv2(t,x1))<=0)
         printf("x=%.1f y=%.5f",x1-1,proizv2(t,x1-1));
  
   //tochka peregiba tam, gde fynkcija menjaet znak:     
                 
           //v f1 tochki peregiba dol*nu but' x= -2 0 3 y=sootvetstvyjyshie
          //f2 tochki peregiba dol*nu but' x=0 y y=sootvetstvyjyshie
        // f3 tochki peregiba dol*nu but' x=0,5 è x=3,5 y=sootvetstvyjyshie
 printf("\n");  
} 
 
void vibor(  )
{int n;
printf("S 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"); 
  scanf("%d",&n);
   switch(n)
            {case 1: tochki(f1,-4,4,1); break;//dlja pervoj fynkcii na intervale -4 4
             case 2: tochki(f2,-6,1,1); break;//dlja vtoroj fynkcii na intervale -6 1
             case 3: tochki(f3,0,4,1); break;//dlja tret'ej fynkcii na intervale 0 4
             case 0: break;    
             default:printf("Nevernij re*im");  
             }
}          
 int main()
  {vibor();
   system("pause");
   return 0;
   }
Добавлено через 9 минут
или это не правильно??

Добавлено через 18 минут
разобралась..все работает.. извините дурную за глупые вопросы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2013, 21:43
Помогаю со студенческими работами здесь

Найти точки экстремума и точки перегиба
Помогите пожалуйста. нужно найти точки экстремума и точки перегиба. y=\frac{4x}{4+{x}^{2}} y=\frac{x-1}{{x}^{2}-2x} ...

Найти точки перегиба функции
Помогите найти точки перегиба функции \sqrt{(x^2+4x)^2}

Найти промежутки выпуклости и точки перегиба.
выпуклости и точки перегиба функции

Найти точки перегиба графика функции
Найти точки перегиба графика функции

найти промежутки выпуклости и точки перегиба функции
Помогите решить!Завтра сдать надо! Y(X)=-\frac{1}{3}{x}^{3}+\frac{7}{2}{x}^{2}-6X+2


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru