如何使用Maxima查找函数的最大值和最小值?

nbr*_*bro 8 maxima

我试图找到一种方法来获得使用Maxima(wxMaxima)的函数的最大值和最小值,但直到现在我还没有找到如何做到这一点.

你能告诉我你会怎么做?

例如,假设我有以下代码:

f(x) := (3*x)/(x^2 - 2*x + 4);
Run Code Online (Sandbox Code Playgroud)

然后我在-10,10范围内绘制此函数,并获得:

在此输入图像描述

我知道最大值是3/2,最小值应该是-1/2.

Rob*_*ier 10

我的建议是以与手工操作相同的方式找到极值:计算导数,求解导数= 0,并将找到的任何值替换回原始函数.例如:

(%i1) f(x) := (3*x)/(x^2 - 2*x + 4);
                                         3 x
(%o1)                        f(x) := ------------
                                      2
                                     x  - 2 x + 4
(%i2) diff (f(x), x);
                             3          3 x (2 x - 2)
(%o2)                   ------------ - ---------------
                         2               2           2
                        x  - 2 x + 4   (x  - 2 x + 4)
(%i3) ratsimp (%);
                                       2
                                    3 x  - 12
(%o3)                   - -----------------------------
                           4      3       2
                          x  - 4 x  + 12 x  - 16 x + 16
(%i4) num (%);
                                           2
(%o4)                              12 - 3 x
(%i5) solve (%, x);
(%o5)                          [x = - 2, x = 2]
(%i6) map (lambda ([e], subst (e, f(x))), %);
                                      1  3
(%o6)                              [- -, -]
                                      2  2
Run Code Online (Sandbox Code Playgroud)

如果我小心,我会证实x = -2和x = 2确实是极值而不仅仅是拐点,我会证实%o3的分母在x = -2且x =非零2在尝试评估这些点的f(x)之前.

  • +1.我特别喜欢`num(%)`步骤.它不是绝对必要的,但它有助于最大限度地不用"解决"步骤扼杀.我记得那个(我常常手工复制分子......傻我 - 谢谢) (3认同)