我用了y1=diff(y)求导,然后用solve(y1==0)得出来的是Empty sym: 0-by-1,然后不会做了
求一元函数的极值常用的方法是求导数,并在导数为零的点处求函数的取值。对于这个问题,您已经成功地求得了 y 关于 x 的一阶导数:
y1 = diff(y)
但是您可以在 y1==0 的代码行中使用 solve
函数来解决这个问题。可是在此之前,您需要对导数进行简化:
y1_simplified = simplify(y1)
现在,您可以使用 solve
函数来解方程 y1_simplified == 0,以找到极值点的 x 值:
x = solve(y1_simplified == 0)
这应该会告诉您 y 的导数为零的点。最后,您可以使用 x 值来得到 y 值,如下所示:
y_at_x = subs(y, x)
这将给出 x 值的 y 值。几乎总是需要检查计算的极值点是否确实是函数的最大值或最小值。
要求一个函数的极值,通常需要求出其导数为0的点,然后判断这些点是否是极值点(极大值或极小值)。因此,你的方法是正确的。不过,要注意一些细节。
首先,需要定义x和y:
syms x y;
y = 1 - (x-2)^(2/3);
然后,可以使用diff函数对y求导:
y1 = diff(y);
接下来,可以通过solve函数来解方程y1=0:
sol = solve(y1==0, x);
这里需要注意的是,solve函数返回的是一个解向量,因此可以使用sol(1)来获取第一个解。此外,还需要判断解是否为实数,因为在一些情况下,求解的结果可能包含虚数。可以使用isreal函数来判断一个解是否为实数:
if isreal(sol(1))
x_min = sol(1);
y_min = subs(y, x, x_min);
fprintf('The minimum point is (%.4f, %.4f).\n', x_min, y_min);
end
完整的代码如下所示
syms x y;
y = 1 - (x-2)^(2/3);
y1 = diff(y);
sol = solve(y1==0, x);
if isreal(sol(1))
x_min = sol(1);
y_min = subs(y, x, x_min);
fprintf('The minimum point is (%.4f, %.4f).\n', x_min, y_min);
end
望采纳,谢谢
求导公式是什么
求导,得到所有0的点,然后找到最大的那个