2、如需要更长的连接距离,请加装输入输出变压器并按定压方式连接。调整机内音量微调电位器至80%,其他音量根据前端设置自动跟踪。
黄金分割法其实也是Fibonacci法吧!!!因为对于Fibonacci数列,有f(n)/f(n-1)-→0.618......这题解法我是参考http://hi.baidu.com/shyyooeren/blog/item/d74f42104e8ef9f9c2ce7902.html,
只是改差轮了多项式和Fibonacci数列用黄金分割数来求而已(需嫌者要改的还有x的范围(a,b))!
#include<stdio.h>
#include
<math.h>
const
int
fi[10]={1,1,2,3,5,8,13,21,34,55}
double
f(double
x)
//多虚者信项式
{
return
(x-3)*(x-3)
}
double
F(int
tn)//计算Fibonacci数
{
if(tn<10)
return
fi[tn]
return
pow(1.618,tn-9)*fi[9]
}
void
main(void)
{
double
r,u,a,b,fr,fu,q
int
k,n
//步骤1,初始化
a=0.0
b=3.0
k=0
q=0.00001
n=0
while(F(n)<((b-a)/q))n++
//计算次数n
r=a+(F(n-k-1)/F(n-k+1))*(b-a)
u=a+(F(n-k)/F(n-k+1))*(b-a)
fr=f(r)
fu=f(u)
while(k<n)
{
if(fr>fu)
{
if(b-r<=q)
{
printf("%d:%f",k,u)
break
}
else
{
a=r
b=b
r=u
fr=fu
u=a+(F(n-k)/F(n-k+1))*(b-a)
fu=f(u)
k++
}
}
else
{
if(u-a<=q)
{
printf("%d:%f",k,r)
break
}
else
{
a=a
b=u
u=r
fu=fr
r=a+(F(n-k-1)/F(n-k+1))*(b-a)
fr=f(r)
k++
}
}
}
getchar()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)