发新话题
打印

[算法原理] 求最值方法

求最值方法

y=f(x,t),如果我想求当y取得最大值时,所对应的x和t应该怎么弄啊?麻烦高手指教

TOP

回复 楼主 kexin 的帖子

请问LZ想要用C解决此问题,还是其它的?

TOP

找个合适的优化算法做一下就可以了,论坛有很多相关的实例

TOP

对于优化算法,我不太懂这方面的知识。我想实现如图所示:
请问怎么做呢,数学方法倒是容易算,可是编程如何实现呢?请求帮助!
附件: 您所在的用户组无法下载或查看附件

TOP

呵呵,挺简单的最值问题,充要条件如下:

(1)    f'(x0)=0;

(2)    f(x0)>=f(x0-);

(3)    f(x0)>=f(x0+);

即可。

具体程序中,你可以:

(1)首先求出f'(x)的解析式,定义为F(x);

(2)使用牛顿法,求出F(x)==0的解x0;

(3)定义条件语句,检验(2)得到的x0,并最终得出需要的解。

解毕
本帖最近评分记录
  • 风花雪月 威望 +1 2008-8-21 10:25 理由:回复具有一定的启发引导性

TOP

按照LSD意见办理

TOP

h=hanning(255);
[BT,tt,FreqBins]=tfrstft(y1,1:n,2048,h);
FreqBins = FreqBins(1:1024) * fs * 2;
Pyy=abs(BT).^2;
PP=Pyy(:);   %变成一维数组
[Pmax,Ploc]=max(PP);
fprintf('一维数组中最大值的位置: %10d\n',Ploc);
Tm=fix(Ploc/2048)+1;
Fm=mod(Ploc,2048);
fprintf('相应时间位置: %10d   频率位置: %10d\n',Tm,Fm);
fprintf('最大值的时间: %8.5f   频率: %8.5f\n',t(Tm),FreqBins(Fm));
我想求能量衰减到最大能量的1/3时,所对应的频率和时间,应该怎么弄啊?

TOP

很开心,在自己的摸索下终于作出来了,呵呵分享一下
x=[1:500:2.5e+004];
x=x';
pp=max(x);
M=1/3*pp;
N=min(abs(x-M));
[m n]=find(x==max(M+-N));
Tm=fix(m/2048)+1;
Fm=mod(m,2048);
fprintf('相应时间位置: %10d   频率位置: %10d\n',Tm,Fm);
本帖最近评分记录
  • 风花雪月 威望 +1 2008-9-5 10:05 理由:解决问题之后回来分享经验

TOP

发新话题