关于用MATLAB绘制分段图像的问题
题目:已知当x<=0,y=(x+sqrt(pi))/exp(2);当x>0,y=1/2*log(x+sqrt(1+x.^2);在-5<=x<=5区间内绘制函数图像。Q1为...
题目:
已知当x<=0,y=(x+sqrt(pi))/exp(2);当x>0,y=1/2*log(x+sqrt(1+x.^2);
在-5<=x<=5区间内绘制函数图像。
Q1为什么按1)写,运行出来的是断开的图像,而按照2)写运行出来的图像是连续的?然后我按照3)的写法,两段图像之间却又有一条直线段相连?
Q2用MATLAB绘制分段函数的图像要注意哪些问题/细节?
1)、
x1=linspace(-5,0,100);
y1=(x1+sqrt(pi))/exp(2);
x2=linspace(0.0000000000001,5,100);
y2=1/2.*log(x2+sqrt(1+x2.*x2));
plot(x1,y1,x2,y2)
2)、
x=linspace(-5,5,100)
if x<=0
y=(x+sqrt(pi))/exp(2);
else
y=1/2.*log(x+sqrt(1+x.^2));
end
plot(x,y)
3)、
x=-5:0.01:5;
y=(x+sqrt(pi))/(exp(2)).*(x<=0)+1/2*log(x+sqrt(1+x.^2)).*(x>0);
plot(x,y) 展开
已知当x<=0,y=(x+sqrt(pi))/exp(2);当x>0,y=1/2*log(x+sqrt(1+x.^2);
在-5<=x<=5区间内绘制函数图像。
Q1为什么按1)写,运行出来的是断开的图像,而按照2)写运行出来的图像是连续的?然后我按照3)的写法,两段图像之间却又有一条直线段相连?
Q2用MATLAB绘制分段函数的图像要注意哪些问题/细节?
1)、
x1=linspace(-5,0,100);
y1=(x1+sqrt(pi))/exp(2);
x2=linspace(0.0000000000001,5,100);
y2=1/2.*log(x2+sqrt(1+x2.*x2));
plot(x1,y1,x2,y2)
2)、
x=linspace(-5,5,100)
if x<=0
y=(x+sqrt(pi))/exp(2);
else
y=1/2.*log(x+sqrt(1+x.^2));
end
plot(x,y)
3)、
x=-5:0.01:5;
y=(x+sqrt(pi))/(exp(2)).*(x<=0)+1/2*log(x+sqrt(1+x.^2)).*(x>0);
plot(x,y) 展开
1个回答
展开全部
第一个没有直线连接,第三个有直线连接是 因为matlab打点画图时每连续打出的两个点是默认由直线连接的,第三个是连续的出的点,所以中间由直线默认连接,如果写成plot(x,y,‘*’),则第三个就没有直线连接了,但如果写成plot(x,y,‘-*’),便又会有直线连接。同理第一个是分为两个过程出的两条直线,而不是一个过程所绘制出的,因此第一个没有直线连接。
第二个与前两个有本质区别,如将第一个数值x=-5代入到公式中,应得结果为-0.4386,而第二种算法得到的第一个数值代入结果为-1.几,因此两者已不是等效的计算方式。
当第二个算法把(-5)代入到x>=0时的公式中刚好得到图中所示的-1.1562的值,因此第二种算法将所有的值都代入到了x>=0的公式中,包括x<0的输入值。
将第二种情况改成
x=linspace(-5,5,200)
b=size(x,2)
c=[]
for i=1:b
if x(1,i)<=0
d=(x(1,i)+sqrt(pi))/exp(2);
c=[c;x(1,i) d]
else
e=1/2.*log(x(1,i)+sqrt(1+x(1,i).^2));
c=[c;x(1,i) e]
end
end
plot(c(:,1),c(:,2))
即可得出正确结果
错误原因是if x<=0此时x为一个向量而不是一个单一的数值,无法判断其正负
求采纳,强烈求采纳,有什么不对的还可以继续互相学习
第二个与前两个有本质区别,如将第一个数值x=-5代入到公式中,应得结果为-0.4386,而第二种算法得到的第一个数值代入结果为-1.几,因此两者已不是等效的计算方式。
当第二个算法把(-5)代入到x>=0时的公式中刚好得到图中所示的-1.1562的值,因此第二种算法将所有的值都代入到了x>=0的公式中,包括x<0的输入值。
将第二种情况改成
x=linspace(-5,5,200)
b=size(x,2)
c=[]
for i=1:b
if x(1,i)<=0
d=(x(1,i)+sqrt(pi))/exp(2);
c=[c;x(1,i) d]
else
e=1/2.*log(x(1,i)+sqrt(1+x(1,i).^2));
c=[c;x(1,i) e]
end
end
plot(c(:,1),c(:,2))
即可得出正确结果
错误原因是if x<=0此时x为一个向量而不是一个单一的数值,无法判断其正负
求采纳,强烈求采纳,有什么不对的还可以继续互相学习
追问
能不能私信发给我你的q号呢。
追答
2661438429
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询