@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日

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏