现代优化设计黄金分割法和二次插值法求极小值的c语言源代码


压缩吧中包含现代设计中函数单峰区间的求解代码,黄金分割法的代码和二次插值的代码,比较全面。
资源截图
代码片段和文件信息
#include “stdio.h“
void searchregion(double double double* double*);
void goldensection(double double doubledouble* double*);
int main()
{
double alpha0 alpha1 a b h;
double precision star_x star_f;
printf(“(作业1大题(1)小题)golden section method
“);
printf(“请输入alpha0和步长h和精度precision:
“);
scanf(“%lf %lf %lf“ &alpha0 &h &precision);
searchregion(alpha0 h &a &b);
printf(“%0.4lf %0.4lf 
“ a b);
goldensection(a b precision &star_x &star_f);
printf(“极小值点和极小值:
X=%0.4lf F(X)=%0.4lf “ star_x star_f);
return 0;
}

//确定搜索区间
void searchregion(double alpha0 double h double *alpha01 double *alpha02)
{
double alpha1 alpha2;
double f1 f2;
alpha1 = alpha0;
alpha2 = alpha0 + h;
f1 = (alpha1*alpha1*alpha1) - 6 * alpha1;
f2 = (alpha2*alpha2*alpha2) - 6 * alpha2;
if (f2 < f1)
{
do {
h = 2 * h;
alpha2 = alpha2 + h;
f1 = f2;
f2 = (alpha2*alpha2*alpha2) - 6 * alpha2;
if (f2 > f1)
break;
else
alpha1 = alpha2 - h;
} while (!(f1 == f2));
*alpha01 = alpha1;
*alpha02 = alpha2;
}
else
{
if (f2 == f1)
{
*alpha01 = alpha1;
*alpha02 = alpha2;
}
else
{
h = -h / 4;
do {
alpha1 = alpha1 + h;
f2 = f1;
f1 = (alpha1*alpha1*alpha1) - 6 * alpha1;
if (f2 < f1)
break;
else
alpha2 = alpha1 - h;
h = 2 * h;
} while (!(f2 == f1));
*alpha01 = alpha1;
*alpha02 = alpha2;
}
}
}

//黄金分割法
void goldensection(double a double b double precision double *star_x double *star_f)
{
double alpha1 alpha2;
double f1 f2;
int i = 1;
alpha1 = a + 0.382*(b - a);
f1= (alpha1*alpha1*alpha1) - 6 * alpha1;
alpha2 = a + 0.618*(b - a);
f2= (alpha2*alpha2*alpha2) - 6 * alpha2;
printf(“迭代次数为%d   a=%0.4lf   b=%0.4lf   alpha1=%0.4lf   alpha2=%0.4lf   f1=%0.4lf   f2=%0.4lf   b-a=%0.4lf

i a b alpha1 alpha2 f1 f2 b - a);
do {
if (f1 < f2)
{
b = alpha2;
alpha2 = alpha1;
f2 = f1;
alpha1 = a + 0.382*(b - a);
f1= (alpha1*alpha1*alpha1) - 6 * alpha1;
}
else
{
a = alpha1;
alpha1 = alpha2;
f1 = f2;
alpha2 = a + 0.618*(b - a);
f2= f2 = (alpha2*alpha2*alpha2) - 6 * alpha2;
}
i++;
printf(“迭代次数为%d   a=%0.4lf   b=%0.4lf   alpha1=%0.4lf   alpha2=%0.4lf   f1=%0.4lf   f2=%0.4lf   b-a=%0.4lf

i a b alpha1 alpha2 f1 f2 b - a);
} while (!(b - a <= precision));
*star_x = 0.5*(b + a);
*star_f= ((*star_x)* (*star_x)* (*star_x)) - 6 * (*star_x);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本
     目录           0  2018-10-21 22:24  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本.vs
     目录           0  2018-10-21 22:24  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本.vsgolden section method
     目录           0  2018-10-21 22:24  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本.vsgolden section methodv14
     文件       36352  2018-10-23 10:32  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本.vsgolden section methodv14.suo
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本Debug
     文件       38912  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本Debuggolden section method.exe
     文件      311388  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本Debuggolden section method.ilk
     文件      741376  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本Debuggolden section method.pdb
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section method
     文件     2097152  2018-10-23 10:32  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section method.sdf
     文件        1345  2018-10-21 19:17  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section method.sln
     文件     1507328  2018-10-22 00:03  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section method.VC.db
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebug
     目录           0  2018-10-23 10:40  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tlog
     文件        4292  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tlogCL.command.1.tlog
     文件        9298  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tlogCL.read.1.tlog
     文件         980  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tlogCL.write.1.tlog
     文件         238  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tloggolden section method.lastbuildstate
     文件        6218  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tloglink.command.1.tlog
     文件        3032  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tloglink.read.1.tlog
     文件         904  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden s.71CEC3B8.tloglink.write.1.tlog
     文件        2838  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden section method.log
     文件       14119  2018-10-21 19:52  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebuggolden section method.obj
     文件       52224  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebugvc140.idb
     文件       77824  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebugvc140.pdb
     文件       15665  2018-10-23 10:30  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebug(作业1大题(1)小题)golden section method.obj
     文件       14923  2018-10-21 20:04  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodDebug(作业1大题(2)小题)golden section method.obj
     文件        7437  2018-10-21 20:11  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodgolden section method.vcxproj
     文件         992  2018-10-21 20:11  黄金分割法,二次插值法求极小值例子(作业1大题(1)小题)golden section method - 副本golden section methodgolden section method.vcxproj.filters
............此处省略235个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)