lin2009 发表于 2011-7-7 18:25:03

推导一元函数最大值点的问题

已知函数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:18:49

本帖最后由 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

lin2009 发表于 2011-7-9 22:18:48

2# maplelab

谢谢!这是用数值优化的方法求解。
实际上,画出f(x)的图形就很容易判断最大值及对应的x值。
不过数值优化或结合图形分析判断的方法,显得不够严谨、不够一般。

能不能用Maple直接进行符号推导出更一般的形式?
1、即不限制N的范围,N为题设的正整数(不包含0);
2、或者进一步不限制x的范围,能否得出最大值对应的x值:
      x=2*k*Pi / N;k = 1,2,3... , N 为正整数。

maplelab 发表于 2011-7-10 08:10:17

我认为是做不到的,这里的目标函数是个超越函数,
extrema用的是K-T方法,对超越函数估计不行.
而Optimization用的数值优化,肯定也是不行的.

feiyuzhen 发表于 2011-7-10 09:00:37

建议试试这个,DirectSearch optimization package, version 2
http://www.maplesoft.com/applications/view.aspx?SID=101333

TBE_Legend 发表于 2011-7-10 20:27:48

5# feiyuzhen
果然很强。

f:=-x^2/10-sin(100*x)+cos(2*x)+cos(5*x);

我试了下这个例子,的确很猛,哈哈, 以后可以替代 global optimization toolbox 了。

就是没有 mathematica 版 啊

maplelab 发表于 2011-7-11 05:56:13

http://forum.simwe.com/viewthread.php?tid=969737&highlight=DirectSearch

TBE_Legend 发表于 2011-7-13 10:18:20

可惜,作者不打算踢写个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]
查看完整版本: 推导一元函数最大值点的问题