一维搜索黄金分割法c语言,机械优化设计黄金分割法.doc

#includedouble hanshu (double x);

void main()

{

int k;

double a,a1,a2,b,y1,y2,c,e,i,j;

e=0.618,k=0;

printf("a=");

scanf("%lf",&a);

printf("b=");

scanf("%lf",&b);

printf("c=");

scanf("%lf",&c);

a1=b-e*(b-a);

y1=hanshu(a1);

a2=a+e*(b-a);

y2=hanshu(a2);

printf("输出次数=%d\n a=%lf, a1=%lf, a2=%lf, b=%lf, y1=%lf, y2=%lf\n",k,a, a1,a2,b,y1,y2);

i=(b-a)/b;

j=(y2-y2)/y2;

while(fabs(i)>=c||fabs(j>=c))

{

k++;

if(y1>=y2)

{

a=a1,a1=a2,y1=y2,a2=a+e*(b-a),y2=hanshu(a2);

}

else{b=a2,a2=a1,y2=y1,a1=b-e*(b-a),y1=hanshu(a1);

}

printf("输出次数=%d\n a=%lf, a1=%lf, a2=%lf, b=%lf, y1=%lf, y2=%lf\n",k,a,a1,a2,b,y1,y2);

i=(b-a)/b;

j=(y2-y1)/y2;

}

printf("k=%lf\n",0.5*(a+b));

}

double hanshu (double x)

{

double m;

m = x*x+2*x;

return m;

}实验结果(要求附上程序运行结果截图)

5、 手算过程

如以下表格:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值