matlab 分段函数求值

求-5<t<5的函数值

t=-5:0.1:5;
if t>=0
y=-3*t.^2+5;
else
y=3*t.^2+5;
end
plot(t,y)
显示的图像是错误的,哪里出错了惹...

>> for t=-5:0.1:5

if t>0

y=-3*t.^2+5;

else

y=3*t.^2+5;

end

plot(t,y)

hold on

扩展资料:

常用工具箱:

MATLAB包括拥有数百个内部函数的主包和三十几种工具包。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。

开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。

MATLAB基本绘图函数:

plot: x轴和y轴均为线性刻度(Linear scale)。

loglog: x轴和y轴均为对数刻度(Logarithmic scale)。

semilogx: x轴为对数刻度,y轴为线性刻度。

semilogy: x轴为线性刻度,y轴为对数刻度。

参考资料来源:百度百科-MATLAB



温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-10

>> for t=-5:0.1:5

  if t>0

       y=-3*t.^2+5;

  else

      y=3*t.^2+5;

   end

    plot(t,y)

   hold on

end

上面这种画法取的精度太低,图形明显看出不是连续的

%%也可以如下

 for t=-5:0.001:5

 if t>0

       y=-3*t.^2+5;

  else

      y=3*t.^2+5;

   end

    plot(t,y)

   hold on

end

下面这图是第二种精度画的


本回答被提问者采纳
第2个回答  2014-09-02
你将t定义为一个数组,然后直接让其与0进行比较,这个过程本身就存在一点问题

如果真要对你的代码进行分析的话
由于你的t在大于零和小于零的范围内均有值,所以t>=0的条件肯定进不去,所以就会执行else里面的语句,如果你把t>=0改为t<=0的话,结果也是一样,可以较好说明这个问题
改成如下形式即可:
t=-5:0.1:5;
for i = 1:length(t)
if t(i) >= 0
y(i) = -3*t(i)^2+5;
else
y(i) = 3*t(i)^2+5;
end
end
plot(t,y)本回答被网友采纳