MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB数学相关] 求教一个分段函数的问题——高手请进! (https://www.labfans.com/bbs/showthread.php?t=17873)

glfkuan 2012-11-16 11:40

求教一个分段函数的问题——高手请进!
 
求教一个分段函数的问题——定义分段函数,并绘制图形。
大家帮我看看为什么会得到2个不同的图形?????求教,谢谢!

分段函数是:

[FONT="Times New Roman"]当x≥0时,f(x)=2x^2-3sinx
当x<0时,f(x)=-ln(-x)+x[/FONT]


我先在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去了. 所以就达不到你的目的了.可以改为
[code]
y=(x<0).*(-log(-(x))+x)+(x>=0).*(2*x.^2-3*sin(x));
[/code]


所有时间均为北京时间。现在的时间是 05:35

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.