hbq110 发表于 2007-5-22 21:42

莫名其妙的问题

紧急求助:莫名其妙的问题

我刚开始学matlab,写了个迭代算法如下:
syms x1 x2 u
A=[-1 -1;-1 0;0 -1];
B=[-3;-2;-2];
fun=(4-x2)*(x1-3)^2;
a=0.512;
b=2;
%d=;
s=jacobian(fun);
for k=1:2
sx=subs(s,{x1,x2},{a,b});
i=1;
l=1;
for j=1:3
    if A(j,:)*==B(j,:)
      C(i,:)=A(j,:);
      F(i,:)=B(j,:);
      i=i+1;
    else
      E(l,:)=A(j,:);
      G(l,:)=B(j,:);
      l=l+1;
    end
end
if i==1
    d=-sx;
    d=d';
else
    i=i-1;
    %g=sx*d;
    lb=[-1 -1];
    ub=;
    D=zeros(size(F));
    d=linprog(sx,-C,D,[],[],lb,ub);
end
if abs(sx*d)==eps
    break
end
for m=1:l-1
H(m,1)=-(E(m,:)*-G(m,:))/(E(m,:)*d);
end
M=sort(H);
clear H;

fun1=inline((4-(b+u*d(2,1)))*((a+u*d(1,1))-3)^2);
v=fminbnd(fun1,0,M(1,1));
a=a+v*d(1,1);
b=b+v*d(2,1);
a
b
d
end


当初始值 a=0.512,b=2 的时候迭代第一次结果是a=1,b=2 ,第二次迭代结果是a=[] ,b=[]
而当初始值 a=1,b=2 的时候迭代第一次结果是a=2,b=1
用断点调了一晚上了,不知道问题出在哪?哪位大虾帮帮忙,万分感谢!

[ 本帖最后由 eight 于 2007-5-22 23:27 编辑 ]
页: [1]
查看完整版本: 莫名其妙的问题