本题其实是求机器人工作空间的
已知M1 M2 M3均为关于未知数x y z 的十行一列的矩阵,构造一个新的一行三列矩阵P,其三个元素分别为M1 M2 M3 中取出的一个元素,很显然P共有1000种取法,在P取任一种取法时求P的模取最小值时的x y z值,便能求出1000个点(x,y,z),然后将其画在坐标系上
据说是要用lsqnonlin这个函数,可是调试很久也没调试出来
MATLAB的非线性最小值问题
答案:2 悬赏:60 手机版
解决时间 2021-01-26 04:39
- 提问者网友:最美的风景
- 2021-01-25 19:03
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-01-25 19:51
没看明白【在P取任一种取法时求P的模取最小值时的x y z值】,P的模是什么?和xyz什么关系?
全部回答
- 1楼网友:duile
- 2021-01-25 19:57
你好
你的程序中有几处错误,修改如下:
非线性约束这里:
function[c,ceq]=mycon(x)%是ceq,不是p
c(1)=350-163*x(1)^(-2.86)*x(3).^0.86;
c(2)=10-0.4*0.01*x(1).^(-4)*x(2)*x(3).^3;
c(3)=(x(2)+1.5)*x(1)+0.44*0.01*x(1).^(-4)*x(2)*x(3).^3-3.7*x(3);
c(4)=375-0.356*1e6*x(1)*x(2).^(-1)*x(3).^(-2);
c(5)=4-x(3)/x(1);
ceq=[];%主函数:
clear,clc
f=@(x)0.192457*1e-4*(x(2)+2)*x(1).^2*x(3);
a=[-1 0 0; 1 0 0; 0 -1 0; 0 1 0; 0 0 -1; 0 0 1];
b=[-1;4;-4.5;50;-10;30];
x0=[2.0;5.0;25.0];%是小x
lb=zeros(3,1);%改为lb不是1b
options=optimset('algorithm','active-set');
[x,fval,exitflag,output,lambda]=fmincon(f,x0,a,b,[],[],lb,[],@mycon,options);这样就能计算出来结果了。
希望对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯