永发信息网

MATLAB的非线性最小值问题

答案:2  悬赏:60  手机版
解决时间 2021-01-26 04:39
  • 提问者网友:最美的风景
  • 2021-01-25 19:03
本题其实是求机器人工作空间的
已知M1 M2 M3均为关于未知数x y z 的十行一列的矩阵,构造一个新的一行三列矩阵P,其三个元素分别为M1 M2 M3 中取出的一个元素,很显然P共有1000种取法,在P取任一种取法时求P的模取最小值时的x y z值,便能求出1000个点(x,y,z),然后将其画在坐标系上
据说是要用lsqnonlin这个函数,可是调试很久也没调试出来
最佳答案
  • 五星知识达人网友:不想翻身的咸鱼
  • 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);这样就能计算出来结果了。 希望对你有帮助
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯