黄金分割法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二.黄金分割法的程序框图
针对例题 3--1 函数 f(x)=x*x+2*x,当给定区间[-3,5]用黄金分割法求极小点
开始
给定值 a=-3,b=5,e=0.001
n=0.618
x1=b-n*(b-a) x2=a+n*(b-a)
f1=f(x1) f2=f(x2)
f1>=f2
a=x1 x1=x2 f1=f2
f2=%5.3f\n",a,b,x1,x2,f1,f2); while(sign==1) { if(f1>=f2) { a=x1; x1=x2; f1=f2; x2=a+n*(b-a); f2=ff(x2);
} else {
b=x2; x2=x1; f2=f1; x1=b-n*(b-a); f1=ff(x1); } printf("第%d 次循环各数值为:\n",i++); printf("a=%5.3f, b=%5.3f, x1=%5.3f, x2=%5.3f, f1=%5.3f, f2=%5.3f\n",a,b,x1,x2,f1,f2); if (fabs((b-a)/b)<e&&fabs((f2-f1)/f2)<e) sign=0;
b=x2 x2=x1 f2=f1
x2=a+n*(b-a) f2=f(x2)
x1=b-n*(b-a) f2=f(x1)


(b-a)/a<e 和 (f2-f1)/f2<e
x=(a+b)/2
结束
三.程序 #include <stdio.h>百度文库#include <math.h> double ff(double x) {
黄 金 分 割 法 实 验 报 告
院系:机电工程学院 专业:机制自动化 班级:10--03 班 姓名: 学号:
黄金分割法实验报告
一.黄金分割法基本思想
黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间[a, b]内适当插入两点 x1,x2,并计算其函数值。x1,x2 将区间分成三段。应用函数 单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后 再在保留下来的区间上作同样的处置,如此迭代下去,是搜索区间无限缩小,从 而得到极小点的数值近似解。
double z; z=x*x+2*x; return (z); } int main()
{
double a,b,e,f1,f2,x1,x2; double n=0.618; int sign=1; int i=1; a=-3.0; b=5.0; e=0.001; x1=b-n*(b-a); f1=ff(x1); x2=a+n*(b-a); f2=ff(x2); printf("a=%5.3f, b=%5.3f, x1=%5.3f, x2=%5.3f, f1=%5.3f,
} if(sign==0)
printf(" 近似解为%10.3f\n",(a+b)/2); return 0; }
四.运行结果
相关文档
最新文档