matlab编程关于分段函数

我是想求y=y1+y1。然后可以对y函数画图。(画图时尽量不要用类似x=0:0.01:9取点的形式,有没有直接画已知函数的方法?)另外,对于任何x值,要能求得对应的y值。... 我是想求y=y1+y1。然后可以对y函数画图。(画图时尽量不要用类似x=0:0.01:9取点的形式,有没有直接画已知函数的方法?)
另外,对于任何x值,要能求得对应的y值。比如x等于3.5或5.6时y的值。
希望写出尽量全的程序。谢谢了
展开
 我来答
tianxiawulang
推荐于2017-10-09 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2649万
展开全部

y2的第2个条件写错了,应该是3<=x<=6吧?

 

参考代码:

y1 = @(x)(x.^2+3*x).*(x<=4)+(4*x+1).*(x>4&x<=9);
y2 = @(x)(3*x.^2-9).*(x>-2&x<3)+(7*x+4).*(x>=3&x<=6);
y = @(x)y1(x)+y2(x);
x = -4:0.1:11;
plot(x,y1(x),x,y2(x),x,y(x),'--')
legend('y_1','y_2','y')

前三行代码分别定义了三个匿名函数y1、y2和y,可以随便调用求任何x的函数值:

>> y(3.5)
ans =
   51.2500
>> y(5.6)
ans =
   66.6000

更多追问追答
追问
你好!
我说的画图,不想用x = -4:0.1:11类似的方法,这样画是是在连线。
我想知道有没有办法什么办法画真实的函数图象。
比如:plot(y=x^2)。当然这个命令不能执行,但就是这个意思。
追答
你的想法是不现实的。
计算机绘图的基本原理就是把连续的东西离散化,只要步长足够小,得到的图就可以足够精细。无论你使用什么软件、什么函数画曲线,本质上都是用折线连出来的。
mathtech6688
2014-11-30 · TA获得超过779个赞
知道小有建树答主
回答量:307
采纳率:100%
帮助的人:208万
展开全部

matlab对分段函数有非常简单的表示,对此例而言,语句如下:

x = -5:.1:5;

y = (3*x.^2+1).*(x>=1) + (2-x.^3).*(x<=-1);

对于楼主的程序,错误之处在于:

elseif -1<x<1

应该为

elseif -1<x & x<1

也就是说 不等式串 必须表达为 单个的不等式的“且”关系。

没注意到 1楼 已经回答了。本回答没有重复1楼回答的意思。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式