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

📄 江海州1.c

📁 主要用于优化算法
💻 C
字号:
#include<stdio.h>
#include <math.h>
float x[2],y[2];
void main()
{float g,z;
void jt(float c[10],float d[10]);
float hj(float j);
printf("请输入初始点'a1'和初始步长'h0'\n");
scanf("%f%f",&x[0],&y[0]);
jt(x,y);
printf("%f,%f\n",x[0],y[0]);
printf("请输入收敛精度's'\n");
scanf("%f",&g);
z=hj(g);
printf("最小值是%f\n",z); 
}



void jt(float c[2],float d[2])
{
float a1,h0,h,y1,a2,y2,a3,y3,temp,a,b;
a1=c[0];h0=d[0];
h=h0;
y1=a1*a1+2*a1;
a2=a1+h;
y2=a2*a2+2*a2;
if(y1>y2)
{h=2*h;
a3=a2+h;
y3=a3*a3+2*a3;}
if(y1<y2)
{h=-h0;
temp=a1;a1=a2;a2=temp;
temp=y1;y1=y2;y2=temp;
a3=a2+h;
y3=a3*a3+2*a3;}
while(y2>y3)
{h=2*h;
a1=a2;a2=a3;
y1=y2;
y2=y3;
a3=a2+h;
y3=a3*a3+2*a3;}
if(a1>a3){a=a3;b=a1;}
if(a1<a3){a=a1;b=a3;}
c[0]=a;d[0]=b;
}



float hj(float j)
{float a,b,s,lmd,a1,a2,f1,f2,m,fl;
a=x[0];b=y[0];s=j;lmd=0.618;
a1=a+(1-lmd)*(b-a);
a2=a+lmd*(b-a);
f1=a1*a1+2*a1;
f2=a2*a2+2*a2;
do
{if(f1<f2) 
	{b=a2;a2=a1;f2=f1;
      a1=a+0.382*(b-a);
       f1=a1*a1+2*a1;}
else  {a=a1;a1=a2;f1=f2;
       a2=a+0.618*(b-a);
	   f2=a2*a2+2*a2;}  
}while(fabs(a-b)>s);
m=0.5*(a+b);
fl=m*m+2*m;
return(fl);
}

⌨️ 快捷键说明

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