Лаба 6 MDP [Вариант 1]
.doc
Условие задачи:
Текст программы:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
double X;
int a,b;
double f(double x)
{
return x-7*pow(sin(x),2);
}
double MDP(double A,double B,double h)
{
double e=0.0001,x1,x2,x3,y1,y2,y3,v,X;
x1=A;
x2=B;
y1=f(x1);
do
{
x3=(x1+x2)/2;
y3=f(x3);
v=y1*y3;
if(v>0)
{
x1=x3;
y1=y3;
}
else
{
x2=x3;
y2=y3;
}
} while ((x2-x1)>e);
X=(x1+x2)/2;
return X;
}
int main()
{
double h,m,z[100],y,u;
int i;
cout<<"Vvedite m=";
cin>>m;
cout<<"Vvedite a=";
cin>>a;
cout<<"Vvedite b=";
cin>>b;
h=(b-a)/m;
X=a;
printf("Znaenia Funkcii \n");
printf("X\t\tY\n");
y=f(X);
printf("%5.4f\t\t%5.4f\n",X,y);
X+=h;
u=y;
for(i=1;X<b;)
{
y=f(X);
printf("%5.4f\t\t%5.4f\n",X,y);
if((u>0 && y<0) || (u<0 && y>0))
{
z[i]=MDP(X-h,X,h);
i++;
}
X+=h;
u=y;
}
u=i-1;
for(i=1;i<=u;i++) cout<<endl<<"X"<<i<<"="<<z[i]<<endl;
return 0;
}
Результат работы программы:
Вывод: В данной лабараторной работе я разобрался в методах нахождения локального минимума любой функции средствами Си.