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

关于目的是求解各分量偏导数的最值,用的matlab遇到了以下的问题!
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注
我可以通过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)}))]);
最后,我得到了偏导数的最大值和最小值,展示在屏幕上。
解决 无用评论 打赏 举报