После я так понимаю задаем x=-2:0.1:2;
И ничего не выходит, естественно. Поскольку условный оператор не умеет работать с массивами. Надо или тупо осуществлять цикл прогонки по массиву -- что вульгарно. Или (что нормально) использовать логические операции над массивом с автоматической интерпретацией их результатов как числовых, типа:
y=(1+abs(x)./sqrt(1+x+x.^2)) .* (x<=0) + (2*x+sin(x).^2./(2+x)) .* (x>0);
(про то, что Вы зачем-то гордо и систематически игнорируете абсолютно все необходимые точки -- вообще молчу)