推导一元函数最大值点的问题
已知函数f(x)的表达式如下:f := x -> sin((1/2) * n * x) / (n * sin((1/2) * x))
n 为正整数;
求f(x)的最大值.
用画图判断的方法可知, 在当分子分母趋向0时, f(x)有最大值, 最大值为1.
若限制在 -pi..Pi的范围, 则最大值对应的点为 x = 0;
但是, 用maple的extrema或Maximize等却很难推导出来正确的答案.
with(Optimization);
Maximize(f(x), x = -pi .. 2*pi)assuming n : : posint;
是否还有其它的方法? 本帖最后由 maplelab 于 2011-7-8 00:25 编辑
既然已经把x的范围锁定了,不如把n的范围也锁定.restart;
f:=(x,n)->sin((1.0/2) * n * x) / (n * sin((1/2.0) * x)):
(n->Optimization(f(x,n), x=-Pi..Pi))~(Vector([$1..10]));
plots((n->plot(f(x,n),x=-Pi..Pi,legend=(N=n)))~(Array([[$1..5],[$6..10]])));
N=1 x=0.000000 max_f(x)=1
N=2 x=-0.000000 max_f(x)=1
N=3 x=-0.000000 max_f(x)=1
N=4 x=-0.000000 max_f(x)=1
N=5 x=0.000000 max_f(x)=1
N=6 x=0.000000 max_f(x)=1
N=7 x=0.000000 max_f(x)=1
N=8 x=0.000000 max_f(x)=1
N=9 x=0.000000 max_f(x)=1
N=10 x=0.000000 max_f(x)=1 2# maplelab
谢谢!这是用数值优化的方法求解。
实际上,画出f(x)的图形就很容易判断最大值及对应的x值。
不过数值优化或结合图形分析判断的方法,显得不够严谨、不够一般。
能不能用Maple直接进行符号推导出更一般的形式?
1、即不限制N的范围,N为题设的正整数(不包含0);
2、或者进一步不限制x的范围,能否得出最大值对应的x值:
x=2*k*Pi / N;k = 1,2,3... , N 为正整数。 我认为是做不到的,这里的目标函数是个超越函数,
extrema用的是K-T方法,对超越函数估计不行.
而Optimization用的数值优化,肯定也是不行的. 建议试试这个,DirectSearch optimization package, version 2
http://www.maplesoft.com/applications/view.aspx?SID=101333 5# feiyuzhen
果然很强。
f:=-x^2/10-sin(100*x)+cos(2*x)+cos(5*x);
我试了下这个例子,的确很猛,哈哈, 以后可以替代 global optimization toolbox 了。
就是没有 mathematica 版 啊 http://forum.simwe.com/viewthread.php?tid=969737&highlight=DirectSearch 可惜,作者不打算踢写个mmtc版的direct search。
I do not plan to create Mathematica version DirectSearch package. But version 2 of DirectSearch package (see http://www.maplesoft.com/applications/view.aspx?SID=101333) include detailed description of optimization algorithm. So you can recode package on any language of programming.
页:
[1]