加载中…
个人资料
MATLAB技术论坛
MATLAB技术论坛
  • 博客等级:
  • 博客积分:0
  • 博客访问:590,608
  • 关注人气:489
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【原创】Matlab中分段函数(piecewise function)运算

(2009-08-20 21:54:38)
标签:

杂谈

分类: MATLAB

本帖由Matlab技术论坛原创,原帖参见http://www.matlabsky.com/thread-266-1-12.html

 

在我的工作和学习中经常需要用到分段函数的计算,但是很可惜的是Matlab中没有提供分段函数的直接计算函数

注意:Maple提供了stepwise函数可以直接计算分段函数

对于Matlab我们可以通过下面两种方法实现,假如说要实现下面的分段函数的相关计算

【原创】Matlab中分段函数(piecewise <wbr>function)运算

 

最简单最笨的方法就是使用,if-else判断语句

 

i=1;
for x=-10:5
    if x<-1
        f(i)=0;
    elseif x>=-1&x<0
        f(i)=-3*x.^2+x;
    elseif x>=0&x<pi
        f(i)=sin(x)+x;
    else
        f(i)=pi;
    end
    i=i+1;
end
f

 

下面我们使用匿名函数构建分段函数,它可以直接进行微分、积分、画图,我们可以如下编辑函数

 

fun=@(x)0.*(x<-1)+(-3*x.^2+x).*(x>=-1&x<0)+(sin(x)+x).*(x>=0&x<pi)+pi.*(x>pi);
%计算函数值
x=1:5;
y=fun(x)
%绘制函数图形
fplot(fun,[-5 10])
%计算积分
s=quadl(fun,1,5)

 

得到以下结果

 

y =
    1.8415    2.9093    3.1411    3.1416    3.1416

s =
   11.8135

 

当然在Maple中我们可以使用piecewise()函数实现,具体大家可以查看Maple的帮助

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有