matlab有关零点求解?

想对一个函数求零点,知道可以采用fsolve的方法,但是想用这个代码试一试,请问大家这个代码哪里有问题?

clear
l=-10:0.01:10;
y=l*2-2;    %%%%寻根对象%%%%
    LD=[ ];
    for k=1:(length(l)-1)
        if y(k)*y(k+1)<0
        h=interp1(y(k:k+1),l(k:k+1),0);
        LD=[LD,h];
        end
    end
    l=LD((LD>-10)&(LD<10));

clear
R0=17.5;
alpha0=30;     
alpha0=alpha0/180*pi;
R2=62.5;
l=0:0.005:100;
y=l.^2+(l+R0).^2-2*l.*(l+R0).*cos(pi-alpha0-asin(l.*sin(alpha0)/(R0+l)))-R2.^2;    %%%%寻根对象%%%%
    LD=[];                                              
    for k=1:(length(l)-1)
        if y(k)*y(k+1)<0
        h=interp1(y(k:k+1),l(k:k+1),0);
        LD=[LD,h];
        end
    end
    l=LD((LD>0)&(LD<40));

这个程序就能求出零点,很迷

clear
l=-10:0.01:10;
y=l.*2-1;    %%%%寻根对象%%%%
    LD=[];
    for k=1:(length(l)-1)%!!!!
        if y(k)*y(k+1)==0
        h=interp1(y(k:k+1),l(k:k+1),0);
        LD=[h];
        end
    end
    l=LD((LD>-10)&(LD<10));

已解决