Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лаб1вариант4 / 1
.CPP
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
double func(double x)
{
return x*x*x*x-14*x*x*x+60*x*x-70*x;
}
double x0=2, e=0.01, h, x1, x2, a, b;
void svenn(void)
{
h=e*fabs(x0);
x1=x0;
x2=x1+h;
if (func(x1) < func(x2))
h = -h;
x1=x0;
x2=x1+h;
do
{ h=h*2;
x1=x2;
x2=x1+h;
}
while( func(x2) < func(x1));
a = x2-3*h/2;
b = x2;
double r;
if(a < b)
cout<<"a:"<<a<<endl<<"b:"<<b<<endl;
else
{ r=b;
b=a;
a=r;
cout<<"a:"<<a<<endl<<"b:"<<b<<endl;
}
}
void fib_2()
{
double Ln=0.00001, Fn, L1, n, xf1, xf2, ef=0.0001,xmin;
L1=fabs(b-a);
cout<<"L1: "<<L1<<endl;
Fn= L1/Ln;
cout<<"Fn: "<<Fn<<endl;
n= log(Fn*sqrt(5))/log(1.618);
cout<<"n: "<<n<<endl;
xf1=a+0.382*L1;
int k=1;
if(k==n)
{ xmin=xf1;
cout<<"xmin1:"<<xmin<<endl;
}
do
{ if( func(xf1) < func(xf2) )
{ if(xf1 < xf2)
{ b=xf2;
xf2=b-xf1+a;
}
else
{ a=xf2;
xf2=b-(xf1-a);
}
}
if( func(xf1) > func(xf2))
{ if( xf1 < xf2)
{ a=xf1;
xf1=b-(xf2-a);
}
else
{ b=xf1;
xf1=b-xf2+a;
}
}
k=k+1;
}
while(k < n);
cout<<endl<<endl<<"xmin:"<<xf2<<endl;
getch();
}
void main()
{
clrscr();
printf("Method Swann: \n\r\n\r");
svenn();
printf("Method Fibonacci: \n\r\n\r");
fib_2();
getch();
getch();
}
Соседние файлы в папке Лаб1вариант4