Скачиваний:
13
Добавлен:
01.05.2014
Размер:
1.95 Кб
Скачать
/* ‹ Ў®а в®а­ п а Ў®в  ь4.ѓа ¤ЁҐ­в­лҐ ¬Ґв®¤л.
   ЊҐв®¤ ѓ гбб -‡Ґ©¤Ґ«п
   Џа®Ја ¬¬  б дг­ЄжЁп¬Ё Їа®Ё§ў®¤­ле Ё ­®а¬л.
*/

#include <iostream.h>
#include<conio.h>
#include<math.h>

double p[3]={0,0,1}, x[3]={4,-1,2};
double l=1,ym=0.0,E=1e-4;
int k=0;

double  Fx1(double x1)
      { return(2*x1-2); }
double  Fx2(double x2)
     { return(2*x2-6); }
double  Fx3(double x3)
     { return(8*x3+40); }
double norm(double a, double b,double c); //Їа®в®вЁЇ дг­ЄжЁЁ

void main()
{
clrscr();
cout<<"\n ”г­ЄжЁп F(x1,x2,x3)=(x1-1)*(x1-1)+(x2-3)*(x2-3)+4*(x3+5)*(x3+5)";
cout<<"\n Ќ з «м­ п в®зЄ  е0=["<<x[0]<<"; "<<x[1]<<"; "<<x[2]<<"]";
cout<<"\n Ќ Їа ў«пойЁ© ўҐЄв®а p=["<<p[0]<<"; "<<p[1]<<"; "<<p[2]<<"]";
cout<<"\n ’®з­®бвм Ї®ЁбЄ  E="<<E<<endl;
getch();


do
     {
      for(int i=0; i<3;i++)
	 {
	 if(p[0]!=0) { p[0]=0; p[1]=Fx2(x[1]); break ;}
	 if(p[1]!=0) { p[1]=0; p[2]=Fx3(x[2]); break ;}
	 if(p[2]!=0) { p[2]=0; p[0]=Fx1(x[0]); break;}
	 }
  //    cout<<"\np=["<<p[0]<<";  "<<p[1]<<";  "<<p[2]<<"]";
 //     cout<<"\nFx1=["<<Fx1(x[0])<<";  "<<Fx2(x[1])<<";  "<<Fx3(x[2])<<"]";
     l=(-2*x[0]*p[0]+2*p[0]-2*x[1]*p[1]+6*p[1]-8*x[2]*p[2]-40*p[2])/(2*p[0]*p[0]+2*p[1]*p[1]+8*p[2]*p[2]);
     x[0]=x[0]+l*p[0];
     x[1]=x[1]+l*p[1];
     x[2]=x[2]+l*p[2];
     ym=norm(x[0],x[1],x[2]);



     cout<<"\n\nЂ«мд  l="<<l;
     cout<<"\nЌ®а¬  Ја ¤ЁҐ­в  ym="<<ym;
     cout<<"\nЌ Їа ў«пойЁ© ўҐЄв®а   p=["<<p[0]<<";  "<<p[1]<<";  "<<p[2]<<"]";
     cout<<"\nђҐ§г«мв в ­  ¤ ­­®¬ и ЈҐ  x=["<<x[0]<<";  "<<x[1]<<";  "<<x[2]<<"]";
     getch();
     k++;
     }
while(ym>E);
cout<<"\n\n\n —Ёб«® и Ј®ў "<<k;
cout<<"\n Ћ’‚…’ x*=["<<x[0]<<";  "<<x[1]<<";  "<<x[2]<<"]";
getch();
}
double norm(double a,double b,double c)   //ЋЎкпў«Ґ­ЁҐ дг­ЄжЁЁ
      {
      double gy1=0.0,gy2=0.0,gy3=0.0;
      gy1=Fx1(a);
      gy2=Fx2(b);
      gy3=Fx3(c);
      return sqrt(gy1*gy1+gy2*gy2+gy3*gy3);

      }
Соседние файлы в папке all