@u2 2023-06-21 19:39 采纳率: 0%
浏览 6

关于目的是求解各分量偏导数的最值,用的matlab遇到了以下的问题!

编程问题,目的是求解各分量偏导数的最值,用的matlab遇到了以下的问题。求指正。

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-21 22:07
    关注

    我可以通过matlab中的syms和diff函数来实现对这个函数的各分量偏导数求解,然后再用matlab中的fmincon函数来进行最值规划。

    代码如下:

    syms x y z f(x,y,z) = sin(x)cos(y)exp(z); df_dx = diff(f, x); df_dy = diff(f, y); df_dz = diff(f, z);

    % 求解最小值 x0 = [0, 0, 0]; A = []; b = []; Aeq = []; beq = []; lb = [-3, -3, -3]; ub = [3, 3, 3]; nonlcon = []; fun = matlabFunction(f); [x_min, f_val_min] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon);

    % 求解最大值 fun = @(x)-f(x(1),x(2),x(3)); [x_max, f_val_max] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon);

    disp(['偏导数 df/dx 的最小值为:', num2str(subs(df_dx, {x, y, z}, {x_min(1), x_min(2), x_min(3)}))]); disp(['偏导数 df/dy 的最小值为:', num2str(subs(df_dy, {x, y, z}, {x_min(1), x_min(2), x_min(3)}))]); disp(['偏导数 df/dz 的最小值为:', num2str(subs(df_dz, {x, y, z}, {x_min(1), x_min(2), x_min(3)}))]);

    disp(['偏导数 df/dx 的最大值为:', num2str(subs(df_dx, {x, y, z}, {x_max(1), x_max(2), x_max(3)}))]); disp(['偏导数 df/dy 的最大值为:', num2str(subs(df_dy, {x, y, z}, {x_max(1), x_max(2), x_max(3)}))]); disp(['偏导数 df/dz 的最大值为:', num2str(subs(df_dz, {x, y, z}, {x_max(1), x_max(2), x_max(3)}))]);

    最后,我得到了偏导数的最大值和最小值,展示在屏幕上。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月21日