最近在解这样一个方程组,如图片所示:
限制条件是J个肉的和等于一个定值(就是数据中的一个变量sh(1)),每个肉都大于零,图片中橘黄色的是未知数,因为有很多方程组,每个的方程个数都不一样,我暂时只用了J等于2的一个方程组(数据就是n7.mat,只有两条观测值)编程,因为其他的方程组的J是不一样的,所以为了以后方便做,我没有直接写2,而用了s来代替,看能不能用fmincon做出来,我做的程序如下:
目标函数:
function f=myfun(x,phi_fht,a1,b1)
load n7.mat
s=size(n7,1)
phi_fht=n7(:,106)
a=n7(:,108)
a1=a(1,1)
b=n7(:,107)
b1=b(1,1)
phi_ft=x(1,1)*ones(s,1)
rou=x(2:s+1,1)
D=rou*rou'
d=diag(D)
y=phi_fht-phi_ft-a1*rou-b1*d
f=y'*y
其他的:
sh=n7(:,111)
Aeq=[0,ones(1,s)]
Beq=sh(1,1)
lb=zeros(s+1,1)
x0=0.5*ones(s+1,1)
x= fmincon(@myfun,x0,[],[],Aeq,Beq,lb)
结果matlab报错:
有没有大神能帮我看看这是怎么回事??是向量之间不能减吗,还是这个fmincon不能这么做?
万分感谢!!不好意思,我是菜鸟,并没有积蓄可以给予奖励,但求好心人帮帮忙!