资源简介
压缩吧中包含现代设计中函数单峰区间的求解代码,黄金分割法的代码和二次插值的代码,比较全面。
代码片段和文件信息
#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\n“);
printf(“请输入alpha0和步长h和精度precision:\n“);
scanf(“%lf %lf %lf“ &alpha0 &h &precision);
searchregion(alpha0 h &a &b);
printf(“%0.4lf %0.4lf \n“ a b);
goldensection(a b precision &star_x &star_f);
printf(“极小值点和极小值:\nX=%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\n“
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\n“
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 - 副本\.vs\golden section method\
目录 0 2018-10-21 22:24 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\.vs\golden section method\v14\
文件 36352 2018-10-23 10:32 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\.vs\golden section method\v14\.suo
目录 0 2018-10-23 10:40 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\Debug\
文件 38912 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\Debug\golden section method.exe
文件 311388 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\Debug\golden section method.ilk
文件 741376 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\Debug\golden 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 method\Debug\
目录 0 2018-10-23 10:40 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\
文件 4292 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\CL.command.1.tlog
文件 9298 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\CL.read.1.tlog
文件 980 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\CL.write.1.tlog
文件 238 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\golden section method.lastbuildstate
文件 6218 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\li
文件 3032 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\li
文件 904 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden s.71CEC3B8.tlog\li
文件 2838 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden section method.log
文件 14119 2018-10-21 19:52 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\golden section method.obj
文件 52224 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\vc140.idb
文件 77824 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\vc140.pdb
文件 15665 2018-10-23 10:30 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\(作业1大题(1)小题)golden section method.obj
文件 14923 2018-10-21 20:04 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\Debug\(作业1大题(2)小题)golden section method.obj
文件 7437 2018-10-21 20:11 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\golden section method.vcxproj
文件 992 2018-10-21 20:11 黄金分割法,二次插值法求极小值例子\(作业1大题(1)小题)golden section method - 副本\golden section method\golden section method.vcxproj.filters
............此处省略235个文件信息
评论
共有 条评论