1、#include #include #define m 10 /*数组长度 m = 维数 n */ float f(float x); void mjtf(int n,float x0,float h,float s,float a,float b); void mhjfgf(int n,float a,float b,float flag,float x); void zblhf(int n,float x0,float h,float flag1,float flag2,float a,float b,floatx); /*目标函数(n 维)*/ /*入口参数: x :n 维数组,自变量
2、*/ /*返回值 :函数值 */ float f(float x) float result; result=60-10*(x0)-4*(x1)+(x0*x0)+(x1*x1)-(x0*x1); return result; /*多维进退法子程序*/ /*入口参数: n :优化模型维数 x0 :n 维数组,初始点坐标 h :初始搜索步长 s :n 维数组,搜索方向 */ /*出口参数: a :n 维数组,搜索区间下限 b :n 维数组,搜索区间上限*/ void mjtf(int n,float x0,float h,float s,float a,float b) int i; float
3、x1m,x2m,x3m,f1,f2,f3; for(i=0;i=f1) /*判断搜索方向*/ /*搜索方向为反向,转身*/ h=(-1)*h; for(i=0;i0) /if(x1iflag); /*判断是否未达到精度要求,若未达到则返回继续缩小区间*/ for(i=0;in“); printf(“请输入维数:n“); scanf(“%d“, printf(“请输入初始点:“); for(i=0;in;i+) printf(“nx0%d=“,i); scanf(“%f“, printf(“n请输入初始步长:n“); scanf(“%f“, printf(“n请输入黄金分割法迭代精度:n“); scanf(“%f“, printf(“n请输入坐标轮换法迭代精度:n“); scanf(“%f“, zblhf(n,x0,h,flag1,flag2,a,b,x); printf(“n极小点坐标为:n“); for(i=0;in;i+) printf(“x%d=%fn“,i,xi); printf(“n极小值为:n%fn“,f(x);