当前位置:文档之家› 黄金分割法实验报告

黄金分割法实验报告

二.黄金分割法的程序框图
针对例题 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;
} if(sign==0)
tf(" 近似解为%10.3f\n",(a+b)/2); return 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) {
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,
黄 金 分 割 法 实 验 报 告
院系:机电工程学院 专业:机制自动化 班级:10--03 班 姓名: 学号:
黄金分割法实验报告
一.黄金分割法基本思想
黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间[a, b]内适当插入两点 x1,x2,并计算其函数值。x1,x2 将区间分成三段。应用函数 单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间得以缩短。然后 再在保留下来的区间上作同样的处置,如此迭代下去,是搜索区间无限缩小,从 而得到极小点的数值近似解。
相关主题