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

原创 2015年07月10日 11:23:35
//黄金分割法!
/*
================================================================
题目:用黄金分割法求解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);
}


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

黄金分割法效率高,但是对初学者来说编写程序比较麻烦,相比而言穷举法程序编写

简单,但效率低下,不过其适用范围很广,只要给定区间,就可以穷举!对于简单方程

的求解,穷举法很容易实现!在没有办法的情况下,穷举法是可以采取的!

================================================================
*/
版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。

相关文章推荐

二分法与黄金分割法求函数方程最小值

二分法与黄金分割法求函数方程最小值程序设计语言:C++ 输入:线性搜索模型(目标函数系数,搜索区间,误差限等) 输出:最优解及对应目标函数值 实验数据 区间[0.3,1],误差ε=1e-...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

c语言弦截法求方程的根

  • 2013年01月08日 11:16
  • 646B
  • 下载

牛顿迭代法求近似根与二分法求根

牛顿迭代法设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f’(x0)(x-x0),求出L与x轴交点的横坐标...

牛顿法求方程根

  • 2015年04月13日 17:29
  • 452B
  • 下载

delphi版牛顿法求方程的根

  • 2011年04月11日 14:11
  • 165KB
  • 下载

C代码:二分法求三次方程近似根

二分法C代码
  • Setoge
  • Setoge
  • 2016年07月19日 22:45
  • 248

已知三点坐标求外接圆方程和RANSAC算法的介绍,用C语言实现,其使用随机抽样一致性算法来求最合适圆时使用

已知三点坐标 (x1,y1)(x2,y2)(x3,y3) 求外接圆方程,圆的表达式是: (x-a)^2+(y-b)^2=r^2 把三个点带入去,则可以进行化简,最后通过程序实现则为: void min...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言之基本算法24—黄金分割法求方程近似根
举报原因:
原因补充:

(最多只允许输入30个字)