基于c语言黄金分割法优化设计

基于c语言黄金分割法优化设计

【摘 要】 机械优化设计是适应生产现代化要求发展起来的一门崭新的学科。它是在现代机械设计理论的基础上提出的一种更科学的设计方法,它可使机械产品的设计质量达到更高的要求。基于黄金分割法提出的利用C语言程序求解全局最优解的方法,是一种相当简单而有效的方法。??

【关键词】 C语言;黄金分割法;优化设计?オ?

机械优化设计是应用数学方法寻求机械设计的最佳方案,首先要根据实际机械设计问题建立相应的数学模型,即用数学形式来描述实际机械设计问题。在建立数学模型时,需要应用专业知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。数学模型一旦建立,机械优化设计问题就变成一个数学求解。应用数学规划方法的理论,根据数学模型的特点,可以选择适当的方法,以计算机作为工具,求得最佳设计参数。??

非线性问题的求解一直是优化问题中的热点和难点,由于它是解决许多工程问题特别是控制问题的有效方法,所以受到人们极大的关注,并因此构造出许多求解约束和无约束优化问题的算法,如共轭方向法、二次插值法、进退法以及牛顿法等。这些经典算法在各种实际问题中起到了非常重要的作用并显示出其独特的优点。虽然已经有了不少很好的计算优化问题的方法,但好的方法总是不厌其多。该文根据一维搜索中的黄金分割法提出一种利用C语言程序求解全局最优解的方法,这是一种相当简单而有效的方法。??

一、黄金分割法及其基本原理??

黄金分割法是用于一元函数f(x)在确定的初始区间[a,b]内搜索极小点a??*的一种方法。它是优化计算中的经典算法,以算法简单、效果明显而著称,是许多优化算法的基础。但它只适用于一维区间上的凸函数。其基本思想是:依照“去坏留好”原则、对称原则、以及等比收缩原则来逐步缩小搜索范围。具体地说,就是在区间[a,b]中取点??x??1=a+0.382(b-a),x??2=a+0.618(b-a),如果f(x??1)>f(x??2), 令a=x??1;如果f(x??1)≤f(x??2),令b=x??2,重新开始。这样每次可将搜索区间缩小0.382倍或0.618倍,直至缩为一点。黄金分割法原理如图1所示,其中K=0.618,区间长度为L。该算法为收敛速度很快的一维搜索方法。受这一算法的启发,作为尝试,我们将这一方法推广到二维空间,并取得了成功。????

二、C语言程序的概念及作用??

C语言程序是函数的集合体,每个函数都具有相对独立的单一功能。其中有且只有一个函数称为主函数,程序的执行总是从主函数开始,程序中主函数之外的其他函数,是在执行主函数时通过函数调用的方式得以执行。被调函数可以是用户自定义函数也可以是由系统提供的标准函数。C语言程序的函数结构十分有利于把整体程序分割成若干相对独立的功能模块,并且为程序模块间的相互调用以及数据传递提供了便捷的途径。??

下面应用C语言程序利用黄金分割法求一元函数f(X)=X??2-7X+10的最优解。已知初始区间为[2,8],取迭代精度e=0.35。??

C语言程序如下:??

#include″math.h″??

#include″stdio.h″??

#define f(x)x*x-7*x+10 //一元函数f(X)=X??2-7X+10??

//函数功能是用黄金分割法实现求一元函数f(X)=X??2-7X+10的最优解??

double hj(double *a,double *b,double e,int *n)??

{ double x1,x2,s;??

if(fabs(*b-*a)<=e)??

s=f((*b+*a)/2);??

else??

{x1=*a+0.382*(*b-*a);??

x2=*a+0.618*(*b-*a);??

if(f(x1)>f(x2))??

*a=x1;??

else??

*b=x2;??

*n=*n+1;??

s=hj(a,b,e,n);??

}??

return s;??

}??

??

main()??

{ double s,a,b,e;??

int n=0;??

scanf(″%lf%lf%lf″,&a,&b,&e);// 输入区间[a,b]和精度e的值??

s=hj(&a,&b,e,&n);//调用hj函数,其中n代表迭代次数??

printf(″a=%lf,b=%lf,s=%lf,n=%d\n″,a,b,s,n);??

}??

输入:2 8 0.35??

结果输出:a=3.

一维搜索进退法c语言程序,基于c语言黄金分割法优化设计.doc相关推荐

  1. 步进电机循环脉冲c语言程序,基于C语言的步进电机调速.doc

    课 程 设 计 (论文) 题目 基于C语言的步进电机调速 目 录 0. 前言3 1.基本理论4 2. 方案设计4 2.1 步进电机5 2.2 8255芯片5 3. 硬件电路的工作原理5 3.1 步进电 ...

  2. 两小灯同亮同灭c语言程序,基于C语言与Proteus联合仿真的单片机技术最新章节_何波,丘利丽著_掌阅小说网...

    前言 随着嵌入式技术的飞速发展,嵌入式系统产品正不断渗透到各行各业,如智能家居.车载电子设备等.因此,单片机技术作为嵌入式计算机控制系统的重要技术,已经越来越受到各个应用领域的重视,尤其对于直接面向企 ...

  3. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  4. c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc

    C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...

  5. 万年历定时关机c语言代码,C语言程序设计能力教程电子万年历设计.doc

    C语言程序设计能力教程电子万年历设计.doc 电子科技大学成都学院课程设计报告电子科技大学成都学院电子工程系课程设计报告课 程 名 称 C语言程序设计能力教程 设 计 题 目 万 年 历 指 导 教师 ...

  6. 职工工资程序c语言doc,C语言程序课程设计---职工工资单系统.doc

    C语言程序课程设计---职工工资单系统.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水 ...

  7. 液位系统c语言程序,基于STM32的液位控制系统设计

    程训明 董婷婷 摘 要:本文设计一种基于STM32的液位控制系统,该控制系统采用STM32作为控制核心,使用压力传感器采集水箱内的液位,通过串口触摸屏进行液位显示和给定,对水位进行有效的闭环控制.系统 ...

  8. c语言万年历流程图加程序,基于C语言的万年历(内附程序).pdf

    基于C语言的万年历(内附程序) 课程设计 课程名称 C语言程序课程设计 题目名称 编写万年历系统 学生学院 专业班级 学 号 学生姓名 指导教师 2009 年 06 月 04 日 广东工业大学课程设计 ...

  9. 共阳极数码时钟c语言程序,基于51单片机C语言数字钟程序.doc

    基于51单片机C语言数字钟程序 基于51单片机C语言数字钟程序 数字电子钟的设计 一. 绪论 (一)引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地 ...

  10. 太阳能路灯c语言程序,基于单片机的智能太阳能路灯控制系统的设计方案

    摘要:随着世界能源危机日益严重,利用太阳能成为解决能源问题的一大途径,在此背景下开发智能太阳能路灯意义重大.本文介绍了智能太阳能路灯系统的组成及工作原理,采用LPC935 单片机作为主控制器,结合密封 ...

最新文章

  1. Linux必学的系统管理命令
  2. python教程:闭包函数
  3. caffe模型weightsfeatureMap 可视化(c++)
  4. 深入了解计算机网络参考模型
  5. 基于php的选课系统设计(含源文件)
  6. 任正非:不向美国人民学习他们的伟大,就永远战胜不了美国
  7. Java之BIO NIO AIO区别联系
  8. 生成core文件的步骤
  9. java 创建进程_Linux下创建进程简介
  10. 机器学习入门框架scikit-learn
  11. java spring 加载bean,Spring多种加载Bean方式解析
  12. nginx: [emerg] bind() to 0.0.0.0:66 failed (98: Address already in use)
  13. 计算机硬盘权限,磁盘权限设置
  14. CSAPP 大作业 程序人生
  15. 惩罚函数将有约束优化转化为无约束优化问题
  16. lattice若干bug
  17. 《王二丫的甜品店》用户隐私政策
  18. Android WiFi热点监听
  19. 通过top查看程序cpu使用率为什么会超过100%
  20. scrapy 爬取大型图片网站(http://5442.com/)

热门文章

  1. SecureCRT连接不成功彻底解决方案
  2. access 命令不符 等级考试_全国计算机等级考试二级笔试样卷Access数据库程序设计...
  3. c语言的pow函数运用
  4. 微信开放平台开发第三方授权登陆(一):开发前期准备
  5. 拆解 米家扫地机器人_1699元!小米米家扫地机器人拆解:真复杂
  6. 如何在没有手机号的情况下注册Yahoo邮箱
  7. 从六个方面讲解抢购软件需要具备的条件
  8. 阿里云mysql导出表,导出mysql表数据库
  9. 我收藏的thinkphp扩展插件
  10. FFmpeg将音频、无音频的视频合并为视频