大家好,又见面了,我是你们的朋友全栈君。
摘要:本文指出《Matlab教程及实训》中关于分段函数画法的不妥,给出Matlab分段函数的最常用的几种画法。
关键词: Matlab 分段函数
Matalb是三大数学软件之一,有强大的计算功能,图形处理功能,仿真功能,因此学好Matlab可以使我们事半功倍。我们在处理实际问题中经常遇到需要画函数图像,尤其分段函数,有时候会感到茫然,如何利用Matlab画分段函数的图像?
我们都知道,画图也就是描点,描的点越多,画出的图像越光滑。二维空间画图是描平面上的点,三维空间画图是描空间中的点。
《Matlab教程及实训》这本书中,关于分段函数画图的程序本人认为有点不妥。现分析如下:
例5-1根据函数绘制一条曲线,使用if结构将曲线分成三段,绘制的曲线如图5-1所示,函数为
程序如下: x=-5:0.1:5;
>> if x>=1
y=x.^2-1
elseif -1
y=0*x
else
y=-x.^2-1
end
plot(x,y)
很明显,程序本身不仅存在输入错误,还存在逻辑错误,我们从分段函数的表达式看,可以推测出该函数的图像不应该是一条抛物线,而是由两条抛物线和一段线段组成。我们来分析一下深层次的原因:①第一个if语句的条件判断x>=1,也就是x行向量里面的所有的元素全部大于或者等于1,条件的逻辑判断才会真,否则为假。②elseif的条件-1
我们简单归纳一下,分段函数的几种常见的画法这里以例5-1为例:
利用逻辑变量来画图
clear
x=-5:0.1:5;
y=(x>1).*(x.^2-1) ((-1
plot(x,y)
利用find函数找非零元素
clear
x=-5:0.1:5;
y=zeros(size(x));%预处理可加快运算速度
k1=find(x>=1);%k1返回符合x>=1的数组编址(单下标)
y(k1)=x(k1).^2-1;
k2=find(-1
y(k2)=0;
k3=find(x<=-1);%k3返回符合x=
y(k3)=- x(k3).^2 1;
plot(x,y)
各个函数拼接在一起
clear
x1=-5:0.1:-1;y1=-x1.^2 1;plot(x1,y1);hold on
x2=-1:0.1: 1;y2=0.*x2;plot(x2,y2);hold on
x3=1:0.1:5;y3=x3.^2-1; plot(x3,y3)
我们还可以使用for循环 if语句或者利用while循环 if语句,我就不再一一列举了,利用上述五种方法,都能得到上述正确的函数图像。
Matlab中分段函数画法也多种多样没有必要全部掌握,掌握常见的几种方法就可以顺利的画分段函数图像。
参考文献
[1] 曹弋.Matlab 教程及实训[M].北京:机械工业出版社,2005.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137527.html原文链接:https://javaforall.cn