PDA

查看完整版本 : [MATLAB数学相关] 求教一个分段函数的问题——高手请进!


glfkuan
2012-11-16, 11:40
求教一个分段函数的问题——定义分段函数,并绘制图形。
大家帮我看看为什么会得到2个不同的图形?????求教,谢谢!

分段函数是:

当x≥0时,f(x)=2x^2-3sinx
当x<0时,f(x)=-ln(-x)+x


我先在func1.m中编写分段函数
function y = f( x )
if x<0
y=-log(-(x))+x;
else
y=2*x.^2-3*sin(x);
end
end

然后在command window中输入:
>> x=[-2:0.01:2];
>> y=func1(x);
>> plot(x,y);xlabel('x');ylabel('y');
得到图形1:
(图形弄不上来,大家可以把我的程序输入到Matlab里面自己画一下)

若在command window中输入:
>> x=[-2:0.01:2];
>> y=zeros(size(x));
>> for a=1:length(x)
y(a)=func1(x(a));
end
>> plot(x,y); xlabel('x');ylabel('y')
得到图形2:


为什么同一个分段函数func1会画出2个不同的图像呢?请指教!

glfkuan
2012-11-16, 11:41
请高手指点!!谢谢!!!

zsy312
2012-11-16, 13:21
在第一个输入当中, x是一个向量, 向量并不都小于零, 所以直接都执行else去了. 所以就达不到你的目的了.可以改为

y=(x<0).*(-log(-(x))+x)+(x>=0).*(2*x.^2-3*sin(x));