黄金分割法程序

黄金分割法

黄金分割法是通过不断缩短搜索区间的长度来寻求一维函数的极小点,这种方法的基本原理是:在搜索区间[a,b]内按如下规则对称地取两点a1和a2

a1=a+0.382(b-a); a2=a+0.618(b-a);

黄金分割法的搜索过程是:

给出初始搜索区间 [a,b] 及收敛精度 e ,将 赋以0.618

计算a1 和 a2,并计算起对应的函数值 f(a1),f(a2); ,

根据期间消去法原理缩短搜索区间,为了能用原来的坐标点计算公式,需进行区间名城的代换,并在保留区间中计算一个新的试验点及其函数值。

检查区间是否缩短到足够小和函数值收敛到足够近,如果条件不满足则返回到步骤2。

如果条件满足,则取最后两试验点的平均值作为极小点的数值近似解。

黄金分割法的流程图及程序清单

需要说明的是搜索区间[a,b]不需要给定,只需输入搜索精度e;

程序由四个子程序构成;

(1):输入输出子程序io();

(2):float fc (float x)求输入函数在某一点的值;

(3)void findqujian(float a[3],float f[3])确定搜索区间;

(4):float xunyou(float *value)寻找最小值

黄金分割法程序运行截图

#include "iostream.h"

#include "math.h"

#include "stdio.h"

#include "conio.h"

#define steplength 0.01

#define n 5

float e;float a,b,c,d,g;

float q[5];

void io()

{

cout<

cout<

cout<

printf("a=");

scanf("%f",&a);q[4]=a;

printf("b=");

scanf("%f",&b);q[3]=b;

printf("c=");

scanf("%f",&c);q[2]=c;

printf("d=");

scanf("%f",&d);q[1]=d;

printf("g=");scanf("%f",&g);q[0]=g;

cout<

cout<

scanf("%f",&e);

cout<

}

float fc(float x)

{int i;

float u=q[n-1];

for(i=n-2;i>=0;i--)

u=u*x+q[i];

return u;

}

void findqujian(float a[3],float f[3])

{

float t=float(steplength), a1,f1,ia;

a[0]=0;

f[0]=fc(a[0]);

for(int i=0;;i++)

{

a[1]=a[0]+t;f[1]=fc(a[1]);

if(f[1]

if(fabs(f[1]-f[0])>=e)

{t=-t;a[0]=a[1];f[0]=f[1];}

else{ if(ia==1)return;

t=t/2;ia=1;}

}

for(i=0;;i++)

{a[2]=a[1]+t;f[2]=fc(a[2]);

if(f[2]>f[1]) break;

t=2*t;

a[0]=a[1]; f[0]=f[1];

a[1]=a[2]; f[1]=f[2];

}

if(a[0]>a[2])

{a1=a[0];f1=f[0];

a[0]=a[2];f[0]=f[2];

a[2]=a1; f[2]=f1;

}

return;

}

float xunyou(float *value)

{float a1[3],f1[3],a[4],f[4];

float aa;

findqujian(a1,f1);

a[0]=a1[0];f[0]=f1[0];

a[3]=a1[2];f[3]=f1[2];

a[1]=a[0]+float(0.382)*(a[3]-a[0]);a[2]=a[0]+float(0.618)*(a[3]-a[0]);

f[1]=fc(a[1]);f[2]=fc(a[2]);

for(int i=0;;i++)

{if(f[1]>=f[2])

{a[0]=a[1];f[0]=f[1];

黄金分割Android程序,黄金分割法程序.doc相关推荐

  1. Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)

    上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,仅仅看到了一位博友在以下留言期待下一篇文章的发表,为了这小小的唯一支持.我决定继续把后面的8个要点介绍一下,自己也潜心反 ...

  2. Android实用应用程序源码

    andriod闹钟源代码 http://www.apkbus.com/android-20974-1-1.html android源码分享之指南针程序 http://www.apkbus.com/an ...

  3. android系统应用程序,Android系统应用程序基本概念解读

    经常关注我们51CTO的朋友们应该知道,在以前的文章中我们对Android这一手机系统有一个详细的跟踪介绍,方便大家学习应用这一新的功能强大的开源手机系统,比如对Android源码的编译的解析的解析等 ...

  4. 博文视点大讲堂35期-It's Android Time:程序员创富有道! 圆满结束

    博文视点大讲堂35期 It's Android Time:程序员创富有道! 暨<Google Android创赢路线与产品开发实战>读者见面会圆满结束 PPT下载 面向移动终端的应用开发作 ...

  5. android unity 关闭应用_在后台运行的Android Unity应用程序

    我有一个在Android上运行的Unity应用程序.它也会在应用程序放入后台时继续运行.它不使用服务在后台运行.相反,这个应用程序会创建一个新线程,并且该线程在应用程序处于后台时继续运行.在后台运行的 ...

  6. Android API Demo程序框架

    前言 android API Demo程序主要演示了Android常见API的使用方法, 本文将该程序的框架提取出来, 以作为自己研究和学习Android编程的一个示例收集框架,即将所有自己研究过的例 ...

  7. android应用程序开发_Kotlin与Flutter:Android跨平台应用程序开发,到底选择哪个?...

    移动互联时代--应用为王 移动互联网时代,很难想象没有应用程序的生活.从我们睁眼醒来的那一刻到我们真正睡觉的那一刻,无数的应用程序围绕着我们.根据统计,国人平均在移动设备上花费4个小时以上! 而这其中 ...

  8. Android蓝牙串口程序开发

    本文主要介绍了针对android的蓝牙串口上位机开发. 程序下载地址:点击打开链接 一.帧定义 androidclient依照一定的数据帧格式通过蓝牙串口发送数据到连接到MCU的蓝牙从机.MCU接收到 ...

  9. android 启动第三方程序的代码(利用ComponentName)

    转自:http://blog.csdn.net/vrix/article/details/6851557  在Intent中可以直接使用Intent.setClass() 也可以使用组件Compone ...

  10. android 基础应用程序,android应用程序基本实现(基础篇).ppt

    <android应用程序基本实现(基础篇).ppt>由会员分享,可在线阅读,更多相关<android应用程序基本实现(基础篇).ppt(22页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. django创建项目案例1详细介绍方法01
  2. 美国国防部黑客大比武 “白帽黑客”受邀请
  3. java 令牌解析_Java编程guava RateLimiter实例解析
  4. 2017计算机三级哪个好考,快速突破2017年计算机三级考试的几大复习阶段
  5. 三个数差的平方公式推导过程_万有引力常量反复测量不“常”咋回事?新常量公式诠释引力本质...
  6. ajax中加html,向DIV中写入HTML(AJAX高手赐教)
  7. 我的Android进阶之旅------Android如何去除GridView的按下或点击选中后的背景效果...
  8. 给所有准备考网络工程师的考生的一点点建议
  9. 目前主流的数据库有哪些?
  10. Cybertec PostgreSQL透明加密解析
  11. 华为奋力前行,以灵活多变的方式突围,成效显著
  12. 【MQ-3 酒精检测器与 Arduino检测酒精】
  13. TDA4开发板开发学习
  14. 对List集合中每个对象元素按时间顺序排序
  15. 时序建模:时间戳与时序特征衍生思路汇总
  16. 什么是阻抗匹配以及为什么要阻抗匹配
  17. 实际开发中,是否会在数据库表中设置外键?
  18. 我的世界服务器物品栏mod,[娱乐|机械]Item Lore Stats —— 自定义物品[附带强化][1.7-1.10]...
  19. excel切片器_数据透视表真的是Excel中最强大的功能么?
  20. 绘图杂记【10】echarts 圆环图+图片

热门文章

  1. 2020年你还不会做绿幕特效?这4步基础技巧要点了解一下!
  2. MT6573_android_LCD_backlight_Driver
  3. 路由器与交换机的作用及区别
  4. paypal php 退款,PayPal的Restful-API方式退款、WEB支付、回调
  5. 集尘室行业调研报告 - 市场现状分析与发展前景预测(2021 - 2027)
  6. 什么是rpm -ivh
  7. 华为手机备份的通讯录是什么文件_华为手机的联系人在哪个文件夹里?
  8. markdown编辑器Typora的使用方法(保姆级教程)
  9. OpenSSL 生成CA证书及终端用户证书
  10. Ubuntu 查看ISO文件