这个分段函数图像怎么画,matlab, maple图像

B为自然数, 3500≤B≤10000
A≤30B时, Y=0.3A
30B<A≤36B时 Y=0.18A-5.4B
36B<A≤45B时 Y=0.23A-7.2B
45B<A≤54B时, Y=0.3A-10.35B
54B<A≤63B时, Y=0.4A-15.75B
A大于63B时, Y=0.55A-25.2B
以上是一个一元分段函数,想用更直观的图像表达看一下交叉情况,很多人都说很简单,但个人非理工科,下了maple、几何画板不太会用表达公式,是否有人愿意给点建议,如何画这个函数。

根据描述,Y是A,B的二元函数,故结果是一张三维曲面,参考如下代码及图像。它表示将每一个B的值对应的曲线拼在一起的结果。图中可以看出存在不连续的部分:

'如下代码中结果缩小1000倍
B=3.5:0.01:10;
A=20*3.5:0.5:75*10;
[x,y]=meshgrid(A,B);
z=0.3*x.*(x<30*y) + (0.18*x-5.4*y).*(x>30*y&x<=36*y) + (0.23*x-7.2*y).*(x>36*y&x<=45*y) + (0.3*x-10.35*y).*(x>45*y&x<=54*y) + (0.4*x-15.75*y).*(x>54*y&x<=63*y) + (0.55*x-25.2*y).*(x>63*y);
mesh(x,y,z)
xlabel('A /10^3')
ylabel('B /10^3')
zlabel('Y /10^3')

如果需要单独看Y-A的关系,那就需要固定B,然后Y-A作图,参考代码及结果。这里明显可以看出,此分段函数存在间断点。

y=@(A,B)0.3*A.*(A<30*B) + (0.18*A-5.4*B).*(A>30*B&A<=36*B) + (0.23*A-7.2*B).*(A>36*B&A<=45*B) + (0.3*A-10.35*B).*(A>45*B&A<=54*B) + (0.4*A-15.75*B).*(A>54*B&A<=63*B) + (0.55*A-25.2*B).*(A>63*B);
A=20*3500:500:75*10000;
i=1;
for B=3500:500:10000
    subplot(3,5,i);
    Y=y(A,B);
    plot(A,Y);
    xlabel('A');ylabel('y');title(strcat('B=',num2str(B)));
    i=i+1;
end


并且测量坐标可知不连续的部分出现在A=30B处,其实你提供的公式的前两个分段以体现出来:

A≤30B时, Y=0.3A
30B<A≤36B时 Y=0.18A-5.4B

代入分段点A=30B,前一个分支Y=0.3A,而后一个分支Y=0.18*30B-5.4B=0,即出现了间断点

追问

非常感谢您详细的回答,有些尴尬,没分数悬赏了,不过还有几个问题希望请教,
公式是线性函数,非三维图,设计之初是为了看在b基数下,不同人员在达成A目标时,y的产出,不同人员b基数不同,30b这里的确是有断层的,b值可以缩小1000倍,而且可以定义为自然数3-10。
我的理解是,上图中14个曲线图是否为在固定b值后,y=0.3a,和y=0.18a-5.4b两个分段的图示呢?

追答

不是,那14个图分别是B取不同的值时,Y与A的关系,包括了你给出的六个分段,其实是六段折线。从表达式很容易验证后面的分段点都是连续的,也就是恰好一段接一段

根据你文字截图的描述,可以将以上曲线画在一个图中,然后直观对比。确实会出现你说的情况

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-07
这是一个三维图还是固定B算二维的追问

二维,应该是线性函数,这其实是个kpi计算模型,但一堆不懂数学的不能判断其有效性。

第2个回答  2018-08-07
这是一个三维图还是固定B算二维的追问

二维,应该是线性函数,这其实是个kpi计算模型,但一堆不懂数学的不能判断其有效性。

相似回答