@Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 309
|
|
|
02.11.2012, 06:40. Просмотров 2223. Ответов 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
| double func(double x)
{
double y;
y=(x-131)/(x-1)+5* fabs(x-6);
return y;
}
int main(int argc, char* argv[])
{
const int N=26;
int i, imin;
double a=2.0,b=7.0, xPmin, yPmin;
double x1, x2, y1, y2, x[N+2], y[N+2];
printf ("Method passivnogo poiska:\n");
const double d=0.1;
x[0]=a;
x[27]=b;
for (int j=1; j<=N; j++)
{
if ((j%2)==0)
x[j]=a+(((b-a)*(j/2))/(k+1));
else
x[j]=x[j+1]-d;
}
for (int i=1; i<=N; i++)
y[i]=func(x[i]);
yPmin=y[1];
for (i=1; i<=N; i++)
{
if (y[i]<=yPmin)
{
yPmin=y[i];
imin=i;
}
}
xPmin=(x[imin-1]+x[imin+1])/2;
printf("Tochka minimuma: %f\nNaim. znacheniye f: %f\n", xPmin,func(xPmin));
getch();
return 0;
} |
|
Добавлено через 13 часов 23 минуты
Я забыла переменную k объявить. Вот так запускается, но неправильно находит наименьшее значение.
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
| double func(double x)
{
double y;
y=(x-131)/(x-1)+5* fabs(x-6);
return y;
}
int main(int argc, char* argv[])
{
const int N=26;
const int k=13;
int i, imin;
double a=2.0,b=7.0, xPmin, yPmin;
double x1, x2, y1, y2, x[N+2], y[N+2];
printf ("Method passivnogo poiska:\n");
const double d=0.1;
x[0]=a;
x[27]=b;
for (int j=1; j<=N; j++)
{
if ((j%2)==0)
x[j]=a+(((b-a)*(j/2))/(k+1));
else
x[j]=x[j+1]-d;
}
for (int i=1; i<=N; i++)
y[i]=func(x[i]);
yPmin=y[1];
for (i=1; i<=N; i++)
{
if (y[i]<=yPmin)
{
yPmin=y[i];
imin=i;
}
}
xPmin=(x[imin-1]+x[imin+1])/2;
printf("Tochka minimuma: %f\nNaim. znacheniye f: %f\n", xPmin,func(xPmin));
getch();
return 0;
} |
|
0
|