chengyameng123 发表于 2011-11-29 00:01

求助:matlab中subs函数的问题!

我想编写一个牛顿法求无约束问题的最小值问题。在以下程序中,虽然最开始时我取x1、x2为syms型变量,但是每次迭代时X1、X2都是确定的数值,那么a、b、c、d、e、f应该都是确定的数值,而不再是syms型数据了,但为什么运行后总是提示出现“>”的行有错误,错误是"Function 'gt' is not defined for values of class 'sym'"。要如何修改才能得到正确答案呢?

clc;
clear;
syms x1 x2;
x=;
t=0;
X0=;
y=(x1-1)^2+x2^2;
e=0.001;
for n=1:200
    a=subs(diff(y,x1),x,X0);%y对x1求一阶导数
    b=subs(diff(y,x2),x,X0);%y对x2求一阶导数
    c=subs(diff(y,x1,2),x,X0);%y对x1求二阶导数
    d=subs(diff(y,x2,2),x,X0);%y对x2求二阶导数
    e=subs(diff(diff(y,x1),x2),x,X0);%求y对x1、x2的偏导数
    f=subs(diff(diff(y,x2),x1),x,X0);%求y对x1、x2的偏导数
    yj=;%梯度
    h=inv();%求逆
    X1=X0-h*yj;%更新X的值
    X2=X1-X0;
    if X2(1)>X2(2)
      minX2=X2(2);
    else
      minX2=X2(1);
    end
    if minX2>e
      X0=X1;
      t=t+1;
    else
      break;
    end
end
X0
y=subs(y,x,X0)   
t


谢谢大家的帮助
页: [1]
查看完整版本: 求助:matlab中subs函数的问题!