标题:关于黄金分割法求极小值问题,运行出了很多错,求大神知道
只看楼主
veesonsan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-8
 问题点数:0 回复次数:2 
关于黄金分割法求极小值问题,运行出了很多错,求大神知道
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define beita 0.618
#define e 0.00001
int main()
{
    float x,a=0,b=10,t1,t2,f0,f1,f2;
     t2=a+beita*(b-a);
    f2=t2*t2-10*t2+36;
    t1=a+b-t2;
    f1=t1*t1-10*t1+36;
    while (abs(t1-t2)>e)
    {
    if (f1<=f2)
    b=t2;
    t2=t1;
    f2=f1;
    t1=a+b-t2;
    f1=t1*t1-10*t1+36;
    else
    a=t1;
    t1=t2;
    f1=f2;
    t2=a+beita*(b-a;
     f2=t2*t2-10*t2+36;
     }
     t0=0.5*(t1+t2);
     f=t0*t0-10*t0+36;
        printf("The answer is %f\n",f);
   
    system("pause");
}
搜索更多相关主题的帖子: 黄金分割 include 
2011-12-07 21:53
veesonsan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-8
得分:0 
彩笔习惯了matlab代码的风格,忽转C代码,虽问题简单却出了很多问题,还望大婶们不要见笑
2011-12-07 21:56
veesonsan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-8
得分:0 
改好了

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define beita 0.618
#define e 0.00001
int main()
{
    float x,a=0,b=10,t0,t1,t2,f0,f1,f2,k;
     t2=a+beita*(b-a);
    f2=t2*t2-10*t2+36;
    t1=a+b-t2;
    f1=t1*t1-10*t1+36;
    k=fabs(t1-t2);
    while (k>e)
    {
    if (f1<=f2)
    {b=t2;
    t2=t1;
    f2=f1;
    t1=a+b-t2;
    f1=t1*t1-10*t1+36;
    }
    else
    {
    a=t1;
    t1=t2;
    f1=f2;
    t2=a+beita*(b-a);
     f2=t2*t2-10*t2+36;
    }
     }
     t0=0.5*(t1+t2);
     f0=t0*t0-10*t0+36;
        printf("The answer is %f\n",f0);
   
    system("pause");
}
2011-12-07 22:05



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




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

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