📄 新建 文本文档.txt
字号:
#include<iostream.h>
#include<math.h>
/*黄金分割法求最小值的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 <= n && F1 >= 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 <= n && F1 <= F2)
if(i < n)
{
goto L;
}
else
result = F1;
return result;
}
void main()
{
int i = 1;
float A(float ai, float bi);
cout<<"最小值为:"<<result<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -