实用标准文案
黄金分割法的优化设计
实验报告
精彩文档
实用标准文案
学院:机电工程
机制自动化 11-03 班
学号: 541102010326
:点点
1 ,黄金分割法的程序流程图
精彩文档
实用标准文案
2 ,对应流程图的 C 语言程序
下面应用 C 语言程序利用黄金分割法求一元函数 F=x^2+2*x 的最优解,已知初始区间为
[-3,5] , 取收敛精度 e=10 -4 。
C 语言程序如下:
精彩文档
实用标准文案
#include
#include
#define f(x) pow(x,2)+2*x
#define M 0.618
void main()
{
double y1,y2,x1,x2,x,a,b,e;
int n;
n=1;
printf(" 请输入收敛精度 e=");
scanf("%lf",&e);
printf(" 请输入区间左值 a=");
scanf("%lf",&a);
printf(" 请输入区间右值 b=");
scanf("%lf",&b);
printf("n a b x1 x2 y1 y2\n");
x1=b-M*(b-a);
x2=a+M*(b-a);
y1=f(x1);
y2=f(x2);
printf("%d %.4lf %.4lf %.4lf %.4lf %.4lf %.4lf\n",n,a,b,x1,x2,y1,y2);
n=n++;
精彩文档
实用标准文案
do
{
if(y1
{
b=x2;
x2=x1;
y2=y1;
x1=b-M*(b-a);
y1=f(x1);
printf("%d %.4lf %.4lf %.4lf %.4lf %.4lf %.4lf\n",n,a,b,x1,x2,y1,y2);
n=n++;
}
else
{
a=x1;
x1=x2;
y1=y2;
x2=a+M*(b-a);
y2=f(x2);
printf("%d %.4lf %.4lf %.4lf %.4lf %.4lf %.4lf\n",n,a,b,x1,x2,y1,y2);