⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 for_lagrange_vector.cpp

📁 在优化等式约束的多项式的向量变量应用中
💻 CPP
字号:
#include<iostream.h>
//#include<math.h>
void main()
{const int l=8;
 const int c=100;
 double kk=0,ww;
 double nn,w1,w2,b,b1;
 double e=0.001;
 double x[10][2];
 int y[10];
 double a[10];
 double ee[10];


  x[1][1]=0.3858;
  x[1][2]=0.4687;
  y[1]=1;
   x[2][1]=0.4871;
  x[2][2]=0.611;
  y[2]=-1;
   x[3][1]=0.9218;
  x[3][2]=0.4103;
  y[3]=-1;
   x[4][1]=0.7382;
  x[4][2]=0.8936;
  y[4]=-1;
   x[5][1]=0.1736;
  x[5][2]=0.0579;
  y[5]=1;
   x[6][1]=0.4057;
  x[6][2]=0.3529;
  y[6]=1;
   x[7][1]=0.9355;
  x[7][2]=0.8132;
  y[7]=-1;
   x[8][1]=0.2146;
  x[8][2]=0.0099;
  y[8]=1;


 for(int i=1;i<=l;i++)
 {a[i]=0;}
 
  cout<<"output the date:"<<endl;
  cout<<"x[i][1]"<<"  "<<"x[i][2]"<<"  "<<"y[i]"<<"  "<<"a[i]"<<endl;
  for(i=1;i<=l;i++)
  {cout<<x[i][1]<<"    "<<x[i][2]<<"    "<<y[i]<<"    "<<a[i]<<endl;}

  loop:for(i=1;i<=l;i++)
	   { 
	     for(int j=1;j<=l;j++)
		 {kk=kk+a[j]*y[j]*(x[i][1]*x[j][1]+x[i][2]*x[j][2]);}
          nn=1/(x[i][1]*x[i][1]+x[i][2]*x[i][2]);
  	      //nn=pow(nn,l);
	     a[i]=a[i]+nn*(1-y[i]*kk);
	     if(a[i]<0){a[i]=0;}
	   }
       w1=0;
	   w2=0;
       for(i=1;i<=l;i++)
	   {w1=w1+a[i]*y[i]*x[i][1];
	    w2=w2+a[i]*y[i]*x[i][2];
	   }
       for(i=1;i<=l;i++)
	   {if(y[i]==-1)b=w1*x[i][1]+w2*x[i][2];break;}
	   for(i=1;i<=l;i++)
	   {if(y[i]==1)b1=w1*x[i][1]+w2*x[i][2];break;}
       for(i=1;i<=l;i++)
	   {if(y[i]==-1){kk=w1*x[i][1]+w2*x[i][2];
	                 if(kk>b)b=kk;}
	    if(y[i]==1){kk=w1*x[i][1]+w2*x[i][2];
	                 if(kk<b1)b1=kk;}
	   }
	   b=-0.5*(b+b1);
      for(i=1;i<=l;i++)
	  {kk=0;
	    for(int j=1;j<=l;j++)
		{kk=kk+y[j]*a[j]*(x[i][1]*x[j][1]+x[i][2]*x[j][2]);
		 kk=1-y[i]*(kk+b);
		 if(kk<0)ee[i]=0;
		 else ee[i]=kk;
		}
	  }
       kk=0;
       for(i=1;i<=l;i++)
	   {kk=kk+a[i];}
	   nn=0;
	   for(i=1;i<=l;i++)
	   {nn=nn+ee[i];}
	   ww=0;
	   for(i=1;i<=l;i++)
		   for(int j=1;j<=l;j++)
		   {ww=ww+a[i]*a[j]*y[i]*y[j]*(x[i][1]*x[j][1]+x[i][2]*x[j][2]);}
		ww=kk-0.5*ww;
		ww=(kk-2*ww+c*nn)/(kk-ww+c*nn+1);
		if(ww>e)goto loop;

  cout<<"output the end date:"<<endl;
  cout<<"x[i][1]"<<"  "<<"x[i][2]"<<"  "<<"y[i]"<<"  "<<"a[i]"<<endl;
  for(i=1;i<=l;i++)
  {cout<<x[i][1]<<"    "<<x[i][2]<<"    "<<y[i]<<"    "<<a[i]<<endl;}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -