C语言之基本算法24—黄金切割法求方程近似根

//黄金切割法!
/*
================================================================
题目:用黄金切割法求解3*x*x*x-2*x*x-16=0的根。


================================================================
*/
#include<stdio.h>
#include <math.h>
#define E 1e-8
double hs(double x)
{
return 3*x*x*x-2*x*x-16;
}
double gen(double a,double b)
{
double x,fx,fa,fb,g;
g=(sqrt(5)-1.0)/2;
fa=hs(a);
fb=hs(b);
while(fabs(b-a)>E)
{
x=g*(b-a)+a;
fx=hs(x);
if(fa*fx>0)
{
a=x;
fa=fx;
}
else if(fb*fx>0)
{
b=x;
fb=fx;
}
}
return x;
}
main()
{
double a,b,t,fa,fb;
while(fa*fb>0)
{
printf("输入预计区间:\na=");
scanf("%lf",&a);
printf("输入预计区间:\nb=");
scanf("%lf",&b);
fa=hs(a);
fb=hs(b);
}
t=gen(a,b);
printf("方程:3*x*x*x-2*x*x-16=0\n");
printf("解得:x=%.4lf\n",t);
}


/*
================================================================
评:

黄金切割法效率高,可是对刚開始学习的人来说编敲代码比較麻烦,相比而言穷举法程序编写

简单。但效率低下,只是其适用范围非常广。仅仅要给定区间。就能够穷举!对于简单方程

的求解。穷举法非常easy实现!

在没有办法的情况下,穷举法是能够採取的。

================================================================
*/

转载于:https://www.cnblogs.com/lcchuguo/p/5403194.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值