level 7
云淡风轻_2024
楼主
如题,我想求一个分段函数的最大值。分段函数定义如下:
f[x_, y_, k_] :=
Piecewise[{{y (-x^2 y - (x ((3 - 3 y)/(1 - x y))^(k/(-1 + k)))/(
3 k) + ((3 - 3 y)/(1 - x y))^(1/(-1 + k))),
0 <= x < 1 &&
0 <= y <=
1 && -3 x^2 y - (x ((3 - 3 y)/(1 - x y))^(k/(-1 + k)))/(
3 k) + ((3 - 3 y)/(1 - x y))^(1/(-1 + k)) - (
3 (-1 + x)^2 y ((3 - 3 y)/(1 - x y))^((
2 - k)/(-1 + k)))/((-1 + k) (1 - x y)^3) ==
0}, {y ((k - 1)/k*3^(1/(k - 1)) - y), x == 1 && 0 <= y <= 1}}];
然后我想要求出 k 取不同数值时,函数 f[x, y, k] 在 0<=x<=1, 0<=y<=1 的区域内的最大值,我写的代码如下:
NMaximize[{f[x, y, 2], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 3], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 3/2], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 4/5], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
但是发现MMA 始终都是输出 f[1, 1, k] 的值或者直接输出最大值为0,这显然都是错的。但是我不知道问题出在哪儿。请吧里高手指教
正确的
代码,谢谢!
运行结果的截图如下:

2022年10月02日 03点10分
1
f[x_, y_, k_] :=
Piecewise[{{y (-x^2 y - (x ((3 - 3 y)/(1 - x y))^(k/(-1 + k)))/(
3 k) + ((3 - 3 y)/(1 - x y))^(1/(-1 + k))),
0 <= x < 1 &&
0 <= y <=
1 && -3 x^2 y - (x ((3 - 3 y)/(1 - x y))^(k/(-1 + k)))/(
3 k) + ((3 - 3 y)/(1 - x y))^(1/(-1 + k)) - (
3 (-1 + x)^2 y ((3 - 3 y)/(1 - x y))^((
2 - k)/(-1 + k)))/((-1 + k) (1 - x y)^3) ==
0}, {y ((k - 1)/k*3^(1/(k - 1)) - y), x == 1 && 0 <= y <= 1}}];
然后我想要求出 k 取不同数值时,函数 f[x, y, k] 在 0<=x<=1, 0<=y<=1 的区域内的最大值,我写的代码如下:
NMaximize[{f[x, y, 2], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 3], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 3/2], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
NMaximize[{f[x, y, 4/5], 0 <= x <= 1, 0 <= y <= 1}, {x, y}]
但是发现MMA 始终都是输出 f[1, 1, k] 的值或者直接输出最大值为0,这显然都是错的。但是我不知道问题出在哪儿。请吧里高手指教
正确的
代码,谢谢!
运行结果的截图如下:
