У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Дослідження функцій
4
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Лабораторна робота №

«Дослідження функцій»

Постановка задачі:

Дослідити функцію на мінімум та оптимальне значення на відрізку [-10;10], за допомогою методів:

Покрокового методу;

Методом Золотого перерізу;

Пошуковим методом.

Написати програму визначення мінімуму та оптимального значення.

Покроковий метод:

Програма:

# include <stdlib.h>

# include <stdio.h>

main()

{float min,y,a=-10,b=10,h,x=a,xopt;

int i,n=20;float f(float);

min=f(a);h=(b-a)/n;

for(i=1;i<=n;i++)

{y=f(x);

if(y<min){min=y;xopt=x;}

x+=h;}

printf("xopt=%.2f min=%.2f\n",xopt,min);

getchar();}

float f(float x)

{return(x*x+4*x+5);}

Блок-схема:

Результат:

xopt=-2.00 min=1.00

Метод Золотого перерізу:

Програма

# include <stdlib.h>

# include <stdio.h>

# include <math.h>

main()

{float a=-10,b=10,c,d,eps=1e-4;

int i;float f(float);

while(fabs(b-a)>eps)

{d=b-0.38*(b-a);c=a+0.38*(b-a);

if(f(c)<f(d))b=d;else a=c;

}

printf("xopt=%.2f min=%.2f\n",c,f(c));

getchar();}

float f(float x)

{return(x*x+4*x+5);}

Блок-схема:

Результат:

xopt=-2.00 min=1.00

Пошуковий метод:

Програма

# include <stdlib.h>

# include <stdio.h>

main()

{float min,y,a=-10,b=10,x,xopt;

int i,n=20;float f(float);

min=f(a);randomize();

for(i=1;i<=n;i++)

{x=a+(b-a)*random(n)/n;

y=f(x);

if(y<min){min=y;xopt=x;}

}

printf("xopt=%.2f min=%.2f\n",xopt,min);

getchar();}

float f(float x)

{return(x*x+4*x+5);}

Блок-схема:

Результат:

xopt=-2.00 min=1.00