我试图找到一种方法来获得使用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)之前.