用c程序写出黄金分割法缩短探索区间求最小值解法
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/14 21:32:39
![用c程序写出黄金分割法缩短探索区间求最小值解法](/uploads/image/z/3763283-59-3.jpg?t=%E7%94%A8c%E7%A8%8B%E5%BA%8F%E5%86%99%E5%87%BA%E9%BB%84%E9%87%91%E5%88%86%E5%89%B2%E6%B3%95%E7%BC%A9%E7%9F%AD%E6%8E%A2%E7%B4%A2%E5%8C%BA%E9%97%B4%E6%B1%82%E6%9C%80%E5%B0%8F%E5%80%BC%E8%A7%A3%E6%B3%95)
用c程序写出黄金分割法缩短探索区间求最小值解法
用c程序写出黄金分割法缩短探索区间求最小值解法
用c程序写出黄金分割法缩短探索区间求最小值解法
#include
#include
/*黄金分割法求最小值的C++程序,部分变量及函数书写并不规范*/
//δ为题给精度
int n = (lnδ/ln0.618 + 1) + 1;
int i;
float f(float ai,float bi)
{
a(i + 1) = ai + 0.618(bi - ai);
return ai + 1;
}
float g(float ai,float bi)
{
b(i + 1) = ai + 0.382(bi - ai);
return b(i + 1);
}
float F(float ai,float bi)
{
//题给的f(x)函数式;
return ;
}
float A(float ai,float bi)
{
int i = 1;
float result;
L:do
{
a(i + 1) = f(float ai,float bi);
b(i + 1) = g(float ai,float bi);
float F1 = F(float ai,float bi);
float F2 = F(float a(i + 1),float b(i + 1));
ai = ai,bi = b(i + 1);
i ++;
}while(i = F2)
if(i < n)
{
B(float ai,float bi);
}
else
result = F2;
return result;
}
float B(float ai,float bi)
{
do
{
a(i + 1) = f(float ai,float bi);
b(i + 1) = g(float ai,float bi);
float F1 = F(float ai,float bi);
float F2 = F(float a(i + 1),float b(i + 1));
ai = a(i + 1),bi = bi;
i ++;
}while(i