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

📄 zhao.cpp

📁 剃度法机械优化设计 上课老师要求写的饿..............................
💻 CPP
字号:
#include<stdio.h>
#include <math.h>
double a1,a2,a3;
double f(double x[])
{double y;
y=x[1]*x[1]+2*x[2]*x[2]-4*x[1]-2*x[1]*x[2];
return y;
}
void df(double dy[],double x0[])
{dy[1]=2*x0[1]-4-2*x0[2];
dy[2]=4*x0[2]-2*x0[1];
}
double f1(double x[],double dy[],double a)
{int i;double y;double x0[2];
for(i=1;i<=2;i++)
x0[i]=x[1]-a*dy[i];
y=x0[1]*x0[1]+2*x0[2]*x0[2]-4*x0[1]-2*x0[1]*x0[2];
return y;
}
double bch(double x0[],double dy[])
{double a1=0.0,h=1.0,y1,y2,y3,a2,a3,r,a,b,a0,t=0.618,n=0.01;

y1=f1(x0,dy,a1);
a2=a1+h;
y2=f1(x0,dy,a2);

if(y1<=y2)
{h=-h;
r=a1;
a1=a2;
a2=r;
r=y1;y1=y2;
y2=r;}


a3=a2+h;
y3=f1(x0,dy,a3);

while(y2>y1)
{h=2*h;
a1=a2;a2=a3;
a3=a2+h;
y3=f1(x0,dy,a3);}
if(a1<a3){a=a1;b=a3;}
else {a=a3;b=a1;}
a1=a+(1-t)*(b-a);
a2=a+t*(b-a);
while(fabs(a-b>n))
{y1=f1(x0,dy,a1);
a2=a+t*(b-a);
if(y1<y2)
{b=a2;a2=a1;y2=y1; a1=a+(1-t)*(b-a); y1=f1(x0,dy,a1);}
else {a=a1;a1=a2;y1=y2; a2=a+t*(b-a); a2=a+t*(b-a);}
}
a0=0.5*(a+b);
return a0;
}

void main()
{int i;
double x0[2],dy[2],x1[2],y,e=0.001,a;
for (i=1;i<=2;i++)
x0[1]=1;
x0[2]=1;
df(dy,x0);
a=bch(x0,dy);
for(i=1;i<=2;i++)
x1[i]=x0[i]-a*dy[i];
while(fabs(x1[1]-x0[1])>e&&fabs(x1[2]-x0[2])>e)
{df(dy,x1);
a=bch(x1,dy);
for(i=1;i<=2;i++)
{x0[i]=x1[i];
x1[i]=x0[i]-a*dy[i];}
}

y=f(x1);
for(i=1;i<=2;i++)printf("%.2f\n",x1[i]);
printf("\n%.2f",y);
}

⌨️ 快捷键说明

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