Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2012-11-12
年龄: 36
帖子: 4
声望力: 0 ![]() |
![]()
求教一个分段函数的问题——定义分段函数,并绘制图形。
大家帮我看看为什么会得到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个不同的图像呢?请指教! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2012-11-12
年龄: 36
帖子: 4
声望力: 0 ![]() |
![]()
请高手指点!!谢谢!!!
|
![]() |
![]() |
![]() |
#3 |
普通会员
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18 ![]() |
![]()
在第一个输入当中, x是一个向量, 向量并不都小于零, 所以直接都执行else去了. 所以就达不到你的目的了.可以改为
代码:
y=(x<0).*(-log(-(x))+x)+(x>=0).*(2*x.^2-3*sin(x)); |
![]() |
![]() |