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

📄 best.cpp

📁 另带完整程序实验说明
💻 CPP
字号:
#include <stdio.h>
#include <math.h>
#define n 5

FILE *fp1,*fp2;

float min(float a,float b)
      { if(a>b) return b; else return a; }
void eq(float A[],float B[])                                  //A[i]<--B[i]
      { int i; for(i=0;i<n;i++) A[i]=B[i];}
void uni_eq(float C[],float D[])                              //C[i]<--D[i]
      { int i; for(i=0;i<n;i++) C[i]=(-1)*D[i];}
float product(float E[],float L[])                            //return E[]*L[]
      { float j=0;int i;
	for(i=0;i<n;i++) j=j+E[i]*L[i]; return j; }
void  add(float c1,float M[],float c2,float N[],float R[])    //R[]=c1*M[]+c2*N[]
      { int i; for(i=0;i<n;i++)  R[i]=c1*M[i]+c2*N[i] ;    }
float F(float xc[])                                           //f(x)
      { return pow(xc[0],2)*pow(xc[1],2)+pow(xc[0],2)+pow(xc[1],2)+pow(xc[2],2)+pow(xc[3],2)+pow(xc[4]-10,2); }
void DF(float G[],float X[])                                  //G[]=gradient(x[])
      { G[0]=2*X[0]*pow(X[1],2)+2*X[0];G[1]=2*X[1];G[2]=2*X[2];G[3]=2*X[3];G[4]=2*pow((X[4]-10),1); }
void ls(float MX[],float NP[],float RX[])                     //RX[]=ls(MX[],NP[])
      { float p=0.1,B=2,v=0.4,a=0,b=1e+8,t=1,f1,f2,g1=0,g2=0,gg[n];
	int i,k=0;
	f1=F(MX);
	DF(gg,MX);  g1=product(gg,NP);
	for(k=0;k<100;k++)
	   { 
		 
		
		add(1,MX,t,NP,RX);                               //MX has been changed
	     f2=F(RX); DF(gg,RX);                             //g=DF(x)
	     g2=product(gg,NP);
   fp1=fopen("ls","a");
       for(i=0;i<n;i++)    fprintf(fp1,"x%-d=%-17.5e",i,RX[i]);
	     fprintf(fp1,"\nF(RX)=%f\n",F(RX));
   fclose(fp1);
	     if(g2<v*g1)  { a=t;t=min(0.5*(a+b),2*a);continue;}
	     else  if(f1-f2<(-1)*p*t*g1)
		   {b=t;t=0.5*(a+b);continue; }
	     break;      }


	}
  void main()
{  int i=0,j=0,H=0,I=1,J=1,k,row,colum;
   float f,f0,t,sum=0,max,p[n],p0[n],g[n],g0[n],h1,h2,h3,rfa;
   char C;
   float x0[n]={1000,2000,3000,4000,5000},x[n],e1,e2,e3,e=1e-8;
   FILE *fp1,*fp2;
   fp1=fopen("ls","w+");
       fprintf(fp1,"START=========================================================================WRITE\n",I++);
   fclose(fp1); ++I;

   eq(x,x0);
   f=F(x0);
   DF(g,x0);
   j=0;
   uni_eq(p0,g);
       
       eq(x0,x);
	   f0=f;
	   eq(g0,g);
	   ls(x0,p0,x);	          //x0 has been put into x
	   

   }

⌨️ 快捷键说明

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