新人请教,如何给需要画图的函数界定自变量范围
mathcad吧
全部回复
仅看楼主
level 3
图片来自:shanhaijing211的百度相册
如图所示,分母中有x-y,所以由于分母可能为零,三维图画不出来。但是我实际情况是要求x>y的,怎么样给这个函数的自变量设定一个这样的范围,将图形画出来
2014年07月08日 07点07分 1
level 13
2014年07月08日 08点07分 2
level 15
对于3D图像的绘制,我还有很多没有弄懂的地方。
就拿楼主的这个函数来说,如果不限定条件,可以很容易画出自变量全域的3D图,见下图的函数c 。如果,有条件限制,我就不知如何处理了。LNSZDZG老师是把不满足条件的函数值都定为零值,我不理解,理由?下图的函数f ,应当是和LNSZDZG老师的等效的。而函数g似乎更合理些?至于函数h,应该不至于和前面几个函数图像相差太大,但是结果是很不一样。到底哪一个图像正确?为什么?想了几天,得不出一个确切的答案。故,贴出来,敬请诸位老师、吧友指教。
2014年07月11日 11点07分 4
函数f 图像还是和LNSZDZG老师的不一样。这样就有5幅图像了。哪一个才是正确的呢?
2014年07月11日 11点07分
level 12
当y^2*(x-y)=0的时候,函数值应该趋于∞吧,此时到底是正无穷还是负无穷,要看x的正负号,所以就给这个分母一个极小值让MC去算吧。
注意我的z轴的取值范围(-200,200),还有我的网格数用的是最大值200个网格。
当z轴取值为(-20000,20000)时,一些细节就看不太清楚了,不过整体能够看出是个啥:
2014年07月11日 12点07分 5
谢谢朱老师。不过还是没想明白。您的图像似乎和函数h 更接近些。但是和函数c 就相差甚远了。
2014年07月11日 12点07分
回复 月城公寓寓公 :注意我的z轴取值范围……
2014年07月11日 13点07分
level 12
MC的3D绘图的本质是绘制数据点矩阵。如果要画出x>y的图像,就是不让MC绘制出x<=y的点,注意这里不是让x<=y的点都成为z=0,而应该是z=NaN。可是MC的3D绘图不支持绘制NaN,2D支持,当某点的值为NaN时,就不会绘制出来了。所以MC的3D绘图不支持画不等式。
如果构造矩阵,让所有x<=y的点都在矩阵中消失,比如说在CreateMesh函数产生的矩阵的基础上,删除掉所有x<=y的值,形成三个三角形的矩阵,貌似可以,但这是不可能的!我试着在matlab里建立三角形的矩阵,也建不出来,维数不相等。
那么构造嵌套矩阵总可以了吧?但是MC不支持绘制嵌套矩阵。
只有一个方法,让这个函数的x、y平面旋转45°(也就是说所有的x,y值都进行坐标变换),然后调整坐标轴的显示范围为仅显示x>y的那一部分。
2014年07月11日 13点07分 6
想问一下大神,有三个自变量,都有自己的取值范围,一个因变量,这样的图能不能用mathcad画出来,这算三维的还是4维的
2018年12月06日 07点12分
level 12
嗯,想了一个蠢点儿的方法,不是仅对x>y的部分感兴趣么?那就把x<=y的部分挡住就可以了……这样应该比较有利于观察了吧。
2014年07月11日 13点07分 7
还是朱老师点子多。
2014年07月11日 14点07分
level 12
另外用MC11画出的图像和MC15画出来的不一样,参考一下。如果说谁是对的,我觉得MC11靠谱,但也不对,本来是分段的函数,却被画成了连续的了。
这是用一个靠谱的函数绘制软件画出来的,不连续的地方就是不连续的,没有那么明显的连接面。
2014年07月11日 14点07分 8
这个应该对了,就是图淡了些。谢谢朱老师的热心解答。
2014年07月11日 15点07分
level 3
谢谢各位的回复~因为比较急,就自己在MC里面编了个程序实现它,感觉在程序里更容易界定范围,但精度挺低的
2014年07月12日 01点07分 9
把程序截个图发上来,让大家也看看,怎么样?别我们折腾半天,一点儿结果一点儿回报也没有。而且来了MC吧,咱们也因MC成了朋友,互通有无好吧?
2014年07月12日 01点07分
回复 朱老剑客 :嗯,好的,主要是这程序比较简单,所以藏拙了
2014年07月12日 02点07分
回复 shanhaijing211 :别藏拙,你也看出来了,经常来MC吧说话的老几位都不怕丢人现眼,如此放开了交流才能达到交流的目的,你说是吧?
2014年07月12日 02点07分
回复 朱老剑客 :嗯,有道理
2014年07月12日 02点07分
level 3
本来觉得这程序挺简单,不用传上来,但是大家这么热情,也得给大家一个交代。因为自己不需要很大的范围,所以z轴只画到50左右
图片来自:shanhaijing211的百度相册图片来自:shanhaijing211的百度相册
2014年07月12日 02点07分 10
level 12
我怎么感觉有问题呢?
你把函数自变量中的x,y对调了一下,现在就用你改过的函数说,设A(x,y)=2*y^3/((y-x)*x^2)
按照你的程序,G(1,1)对应的是A(1,2),G(2,2)对应的是A(1,3)……G(40,50)对应的是A(20,60),所有的都错位了呀,而且还不是单纯的旋转,而MC的3D绘图是按照G()的点位按顺序找对应值排点,结果得到的函数图像应该和你想看到的不是一回事儿了。
另外,尽管使用这个程序可以得到的值都是x<y的,但矩阵的其他地方均取值为0,而不是“未画出”,你明白么?这也容易产生误导。
2014年07月12日 02点07分 11
level 12
哦,上面有个地方写错了,应该是G(40,59)对应的是A(20,60)
如果是单纯的旋转了函数的方位的话,G(40,40)对应的值应该是A(1,41),而在你这里G(40,40)是没有值,跳过去了的。
2014年07月12日 02点07分 12
不好意思,后来是吧x和y的定义换了。嗯,确实写错了。。。。太感谢您了,两个下标应该是j+1和i+j+2吧
2014年07月12日 03点07分
回复 shanhaijing211 :恐怕也不对,如果你不介意当x>=y的时候,函数值等于0,直接在我们几个前面列出的程序里再加上一个if(y<x,计算值,0)语句就可以了。
2014年07月12日 03点07分
楼主的图像似乎失真更多。如果不满足条件的函数值就为零,那么LNSZDZG老师那个就是对的。
2014年07月12日 03点07分
回复 月城公寓寓公 :嗯,我这个图确实不好
2014年07月12日 03点07分
level 12
2014年07月12日 03点07分 13
level 1
有人知道为什么这里L的范围被限制到5以内吗?
2023年02月28日 08点02分 14
1