① 黄金函数有谁懂
若对函数y=f(x)定义域内的每一个值x1,都存在唯一的值x2,使得f(x1)f(x2)=1成立,则称此函数为“黄金函数”
② C语言 用黄金分割法求函数的最小值和取最小值时的x
给,已经编译运行确认: #include"math.h" #include"stdio.h" #definef(x)x*x+2*x+1//一元函数,这里按照你的要求写的是:x2+2x+1 //函数功能是用黄金分割法实现求一元函数的最优解 doublehj(double*a,double*b,doublee,int*n) {doublex1,x2,s;<br>if(fabs(*b-*a)<=e)<br>s=f((*b+*a)/2);<br>else<br>{x1=*a+0.382*(*b-*a);<br>x2=*a+0.618*(*b-*a);<br>if(f(x1)>f(x2))<br>*a=x1;<br>else<br>*b=x2;<br>*n=*n+1;<br>s=hj(a,b,e,n);<br>} returns; } main() {doubles,a,b,e;<br>intn=0;<br>scanf("%lf%lf%lf",&a,&b,&e);//输入区间[a,b]和精度e的值<br>s=hj(&a,&b,e,&n);//调用hj函数,其中n代表迭代次数<br>printf("a=%lf,b=%lf,s=%lf,n=%d ",a,b,s,n);<br>} 运行时: 输入:0.60.50.1 输出结果为: 0.60.50.1 a=0.600000,b=0.500000,s=2.402500,n=0
③ 三角函数中黄金公式是怎么回事
你所说的应该就是万能公式
就是弦化切的思想,分式的分子分母同除以余弦,如下内:
2tan(α/2)
sinα=——容————
1+tan2(α/2)
1-tan2(α/2)
cosα=——————
1+tan2(α/2)
2tan(α/2)
tanα=——————
1-tan2(α/2)
④ 黄金三角函数比例是多少
黄金分割比例等于(√5-1)/2≈0.618
⑤ 在新古典增长模型中,总量函数为YT=F(K,L)=K^1/3*L^2/3求出黄金律相对应的储蓄率
三分之一,,,在柯布道格拉斯函数里,与黄金律对应的储蓄率就是资本产出弹性
⑥ 黄金函数有那些实际应用……
自己想`
⑦ 特殊三角函数值的黄金三角
α=18°(π/10) sinα=(√5-1)/4 cosα=√内(10+2√5)/4 tαnα=√(25-10√5)/5
cscα=√5+1 secα=√(50-10√5)/5 cotα=√(5+2√5)
α=36°(π容/5) sinα=√(10-2√5)/4 cosα=(√5+1)/4 tαnα=√(5-2√5)
cscα=√(50+10√5)/5 secα=√5-1 cotα=√(25+10√5)/5
α=54°(3π/10) sinα=(√5+1)/4 cosα=√(10-2√5)/4 tαnα=√(25+10√5)/5
cscα=√5-1 secα=√(50+10√5)/5 cotα=√(5-2√5)
α=72°(2π/5) sinα=√(10+2√5)/4 cosα=(√5-1)/4 tαnα=√(5+2√5)
cscα=√(50-10√5)/5 secα=√5+1 cotα=√(25-10√5)/5
通过比较可发现与黄金三角形相关的三角函数值有很强的对称性
这些数值的证明可以借助黄金三角形中的比例
⑧ 用黄金分割法求函数f(X)=X*X-6X+9的最优解,初始区间[1,7],收敛精度ε=0.4
收敛精度是什么意思啊
好吧,我按我的理解来了结果是15.3745不知道对不,我用的C++,主要部回分和C一样
#include"math.h"
#include"iostream"
usingnamespacestd;
int_tmain(intargc,_TCHAR*argv[])
{
floata=1,b=7,ch,ah,bh,cj,aj,bj;
floatjing=0.4;
while(1)
{
答ch=(b-a)*0.618+a;
ah=(ch-a)*0.618+a;
bh=(b-ch)*0.618+ch;
cj=ch*ch-6*ch+9;
aj=ah*ah-6*ah+9;
bj=bh*bh-6*bh+9;
if(abs(cj-bj)<0.4)
{
cout<<aj<<endl;
break;
}
if(aj>bj)
{
a=a;
b=ch;
}
else
{
a=ch;
b=b;
}
}
return0;
}
⑨ 用黄金分割法求目标函数 f(x)=x*x-5*x+2 的最优解(C++)
试试我的程序吧,直接贴到某个地方就能用,百度的代码显示看起来不美观,凑合看吧,建议贴到程序里看方便一些,已经调试通过:
#include<iostream>
using namespace std;
const float EPS=0.000001;//定义常量
float f(float);
//定义函数f
float f(float x)
{
return x*x-5*x+2;
}
void main()
{
float a,b,x1,x2,f1,f2,t,eps;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"eps=";cin>>eps;
x1=a+0.382*(b-a);x2=a+0.618*(b-a);
f1=f(x1);f2=f(x2);
while (b-a>eps)//搜索精度循环节
{
t=f1-f2;
if (t>EPS) {a=x1;x1=x2;f1=f2;x2=a+0.618*(b-a);f2=f(x2);}
else if (t>=-EPS && t<=EPS) {a=x1;b=x2;x1=a+0.382*(b-a);x2=a+0.618*(b-a);f1=f(x1);f2=f(x2);}//函数值相等,两边区间均舍去
else {b=x2;x2=x1;f2=f1;x1=a+0.382*(b-a);f1=f(x1);}
}
cout<<"x*="<<(a+b)/2;
system ("pause");
}
⑩ 大神给看看用VB编程,黄金分割法 满足对于任意一个Y=f(X)的函数,均能找出给定区间(a,b)上最小值。
'主程序段写:
dim a as single
dim b as single
dim e as single
dim q as single
dim x1 as single
dim x2 as single
dim y1 as single
dim y2 as single
a=val(form1.text1.text) '从text1获取a的值
b=val(form1.text2.text) '从text2获取b的值
e=val(form1.text3.text) '从text3获取e的值
q=0.618
x1=a+(1-q)*(b-a)
x2=a+q*(b-a)
y1=f(x1)
y2=f(x2)
do
if y1<=y2 then
b=x2
x2=x1
y2=y1
x1=a+(1-q)*(b-a)
y1=f(x1)
else
a=x1
x1=x2
y1=y2
x2=a+q*(b-a)
y2=f(x2)
end if
loop while b-a<=e
x=0.5*(a+b)
y=f(x)
form1.text4.text=y
'主程序结束
'自行编写任意函数关系y=f(x)的子函数代码