标题:求教高手帮忙,黄金分割法求最优解,这程序有什么错误?
只看楼主
r857019146
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-4-10
结帖率:0
已结贴  问题点数:10 回复次数:1 
求教高手帮忙,黄金分割法求最优解,这程序有什么错误?
#include<stdio.h>
#include<math.h>
#define qq 0.61833988
void main()
{
    float a,b,c,d,x1,x2,x3,x4,f1,f2,f3,f4,t;
    printf("xishu:\n");
    scanf("%f%f%f%f",&a,&b,&c,&d);
    printf("fanwei and jingdu:\n");
    scanf("%f%f%f",&x1,&x2,&t);
    f1=a*x1*x1*x1+b*x1*x1+c*x1+d;
    f2=a*x2*x2*x2+b*x2*x2+c*x2+d;
    while(float ((fabs((f2-f1)/f1))<t))
    {
    x3=x1+qq*(x2-x1);
    x4=x1+(1-qq)*(x2-x1);
    f3=a*x3*x3*x3+b*x3*x3+c*x3+d;
    f4=a*x4*x4*x4+b*x4*x4+c*x4+d;
    if(f3>f4)
    {
        x2=x3;f2=f3;x3=x4;f3=f4;
    }
    else
    {
        x1=x4;f1=f4;x2=x3;f2=f3;
    }
    x4=x1+qq*(x1-x2);
    }
    printf("jie come:%f,%f\n",x3,f3);
}


在线等啊,谢谢了!!
搜索更多相关主题的帖子: 黄金分割 
2010-04-10 13:58
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
得分:10 
//程序内容没有看,但将其中的错误修改了,至少编译通过了,都不是什么大问题,希望你能更耐心些
#include<stdio.h>
#include<math.h>
#define qq 0.61833988f  //实常数都是默认作为双精度的,
//如果不加f的话,也可以也可以将你下面定义的数据类型改为double
void main()
{
    float a,b,c,d,x1,x2,x3,x4,f1,f2,f3,f4,t;
    printf("xishu:\n");
    scanf("%f%f%f%f",&a,&b,&c,&d);
    printf("fanwei and jingdu:\n");
    scanf("%f%f%f",&x1,&x2,&t);
    f1=a*x1*x1*x1+b*x1*x1+c*x1+d;
    f2=a*x2*x2*x2+b*x2*x2+c*x2+d;
    printf("lalsdi");
    while((float)(fabs((f2-f1)/f1))<t) //强制类型转换的错误,还有就是括号太多的时候,一定要看它们是否匹配
    {
    x3=x1+qq*(x2-x1);
    x4=x1+(1-qq)*(x2-x1);
    f3=a*x3*x3*x3+b*x3*x3+c*x3+d;
    f4=a*x4*x4*x4+b*x4*x4+c*x4+d;
    if(f3>f4)
    {
        x2=x3;f2=f3;x3=x4;f3=f4;
    }
    else
    {
        x1=x4;f1=f4;x2=x3;f2=f3;
    }
    x4=x1+qq*(x1-x2);
    }
    printf("jie come:%f,%f\n",x3,f3);
}
2010-04-10 17:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-302415-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052307 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved