這里是求目標(biāo)函數(shù)的極小值對(duì)應(yīng)的x值吧?理論分析可知,x = 2√5 ≈ 4.472136 。直接看代碼:
郴州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
#include stdio.h
#include conio.h
double x618(double x1,double x2){ //求x1,x2之間靠近x1的黃金分割點(diǎn)
return x1*0.618+x2*0.382;
}
double f(double x){ //目標(biāo)函數(shù)
return x+20.0/x;
}
int main(){
double x1=2.0,x2=10.0,xt1,xt2,ft1,ft2,x;
int cnt=0;
xt1=x618(x1,x2);
xt2=x618(x2,x1);//得到初始試探點(diǎn),xt1靠近x1,xt2靠近x2
while(x2-x11e-6){//這里假設(shè)精度達(dá)到0.001即退出
++cnt;//統(tǒng)計(jì)迭代次數(shù)
ft1=f(xt1);
ft2=f(xt2);
if(ft1ft2){//這里要找極小值,所以要保留小的,如果要找極大值,只需把""改成""
x2=xt2; xt2=xt1; xt1=x618(x1,x2);
}else{
x1=xt1; xt1=xt2; xt2=x618(x2,x1);
}
}
x=(x1+x2)/2;
printf("x=%lg, f(x)=%lg, count=%d",x,f(x),cnt);
printf("\nFinished!\n");
getch();
return 0;
}
程序運(yùn)行結(jié)果與理論解相符。
#includestdio.h
int result[100][6];
int data[100000][2];
int main()
{
int i,j,T,f,temp,rlen=0,dlen,swap;
scanf("%d",T);
while(T--0)
{
for(dlen=0;1;dlen++)
{
scanf("%d %d",data[dlen][0],data[dlen][1]);
if(0==data[dlen][0] 0==data[dlen][1])
break;
}
scanf("%d",f);
for(i=0;idlen-1;i++)
{
for(j=0;jdlen-i-1;j++)
{
swap=0;
if(0==f)
{
if(data[j][0]data[j+1][0] || (data[j][0]==data[j+1][0] data[j][1]data[j+1][1]))
{
swap=1;
}
}
else if(1==f)
{
if(data[j][1]data[j+1][1] || (data[j][1]==data[j+1][1] data[j][0]data[j+1][0]))
{
swap=1;
}
}
if(1==swap)
{
temp=data[j][0];
data[j][0]=data[j+1][0];
data[j+1][0]=temp;
temp=data[j][1];
data[j][1]=data[j+1][1];
data[j+1][1]=temp;
}
}
}
if(dlen=3)
{
for(i=0;i3;i++)
{
result[rlen][2*i]=data[i][0];
result[rlen][2*i+1]=data[i][1];
}
rlen++;
}
}
for(i=0;irlen;i++)
{
printf("Case #%d:\n",i+1);
for(j=0;j3;j++)
printf("%d %d\n",result[i][2*j],result[i][2*j+1]);
}
return 0;
}
#includestdio.h
void?gcd(int?m,?int?n)?{
int?temp?=?m,?i,?max;
if(temp??n)?{
temp?=?n;
}
max?=?temp;
for(i=temp;?i=1;?i--)?{
if(m%max==0??n%max==0)?{
printf("The?result?is?[%d]",?max);
return;
}
max--;
}
}
int?main()?{
int?M,?N;
scanf("[%d],[%d]",?M,?N);
gcd(M,?N);
return?0;
}
#include?stdio.h
void?main()
{
double?V;
printf_s("請(qǐng)輸入V:\n");
scanf_s("%lf",?V);
int?m,?n,?p;
int?M,?N,?P;
double?delta?=?10000.0;
for(m?=?0;?m?=?16;?m++)
{
for(n?=?0;?n?=?256;?n++)
{
for(p?=?1;?p?=?4096;?p++)
{
double?d?=?m*n/(double)p?-?V;
if(d??0)
d?=?-d;
if(d??delta)
{
delta?=?d;
M?=?m;
N?=?n;
P?=?p;
}
}
}
}
printf_s("最優(yōu)解:M?=?%d,?N?=?%d,?P?=?%d\n",?M,?N,?P);
}