fmincon提示要返回标量,以及公式不知道哪里出错了。卡了一天了,麻烦大家看看哪里出错了
根据你提供的代码,有几个问题需要注意。
首先,你在定义 xe
和 A
的时候使用了变量 e
,但是没有给出 e
的值。请确保在使用这些变量之前为它们赋值。
其次,你在定义 b
的时候使用了 5e
,我假设你想表示 5 × 10^e
的形式,但是 e
的值也没有给出。请确认并提供正确的值。
另外,你在定义 lb
的时候使用了 l
,我不确定这是否是你想使用的变量,因为你并没有给出它的定义。请确认并提供正确的值。
最后,你调用 fmincon
函数时,第一个参数是字符串 'fun1 '
,它后面可能有一个额外的空格字符。请删除该空格字符以避免引起错误。
在你提供的约束函数 'mycon'
的代码中,我注意到了一些错误。
首先,在计算 ceq
的时候,你使用了 ×
符号,但是应该使用乘号 *
。请将 ×
修改为 *
。
其次,在计算 ceq
时,你使用了 x(3) * (×(1) + x * ×(2) - 50)
,但是在这个表达式中,x
似乎是一个向量而不是单独的元素。请修改 ceq
的计算方式,确保它返回一个标量值。
最后,请确保你提供的约束函数返回两个向量 c
和 ceq
,即使它们为空也需要返回空向量。你可以使用 c = []
来表示空向量。
下面是修正后的 'mycon'
函数的代码:
function [c, ceq] = mycon(x)
c = [];
ceq = x(3) * (x(1) + x(2) - 50);
end
请将以上修正后的代码替换你原来的 'mycon'
函数的代码,并重新运行你的程序。
如果还有其他问题或错误,请提供完整的代码和错误信息,我将尽力帮助你解决。
80*x
那里是不是应该是80*x(3)
,你写错了,因为传递到fun1里面的x是一个1×3的向量,直接80*x
返回的也是向量,如果是80*x(3)
的话就是返回标量了。码字不易,有用希望采纳