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

📄 gongetd.c

📁 优化设计常用程序
💻 C
字号:
#include"stdio.h"
#include"conio.h"
#include"math.h"
#include"f:\sq.h"
#include"f:\golden.h"
#define  N 5
gongetd(float,int);
tidu();
float f(float);
float d[10],x0[10],x1[10],g0[10],g1[10];
int n;
main()
{
  float E;
  int i;
  clrscr();
  printf("\nPlease input weishu n and the E:\n");
  scanf("%d%f",&n,&E);
  printf("\nPlease input the first point:\n");
  for(i=0;i<n;i++)   scanf("%f",&x0[i]);
  gongetd(E,n);
  getch();
}
gongetd(float E,int n)
{
  float A,B;
  double a,b,EE=0.0;
  int i,j=1;
  int k;
  k=0;  tidu();  printf("\ng1[0]=%f,g1[1]=%f",g1[0],g1[1]);
  for(i=0;i<n;i++) {d[i]=-g1[i];EE=EE+g1[i]*g1[i];}
		 printf("\nd[0]=%f,d[1]=%f",d[0],d[1]);
  do{
       EE=0.0;
       sq(&a,&b,j);
       j=j+5;
       if(j>1000) j=1000;
       A=golden(a,b,E);
       if(A<0.0)  goto EXIT;
       for(i=0;i<n;i++)
	  { x1[i]=x0[i]+A*d[i];
	    EE=EE+g1[i]*g1[i];
	    g0[i]=g1[i];
	    x0[i]=x1[i];
	  }
      for(i=0;i<n;i++)
	 printf("\nX%d=%f",i,x1[i]);
      if(k==n){k=0; tidu();for(i=0;i<n;i++) d[i]=g1[i];}
      else {  tidu();B=EE;EE=0;for(i=0;i<n;i++) EE=EE+g1[i]*g1[i];
	      B=EE/B;
	      for(i=0;i<n;i++) d[i]=-g1[i]+B*d[i];
	      k=k+1;
	    }

      EE=fabs(EE);
     }while(EE>E);
EXIT:  for(i=0;i<n;i++)
    printf("\nX%d=%f",i,x1[i]);
}
 float f(float a)
 {
   float f=0;
     f=pow(x0[0]+a*d[0],2)+2*pow(x0[1]+a*d[1],2)-4*(x0[0]+a*d[0])-2*(x0[0]+a*d[0])*(x0[1]+a*d[1]);
   return(f);
 }
 tidu()
  {
    g1[0]=2*x0[0]-4-2*x0[1];
    g1[1]=4*x0[1]-2*x0[0];
  }

⌨️ 快捷键说明

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