MC画曲面图,提示除数为零,或如何定义自变量?
mathcad吧
全部回复
仅看楼主
level 2
懒兔228 楼主
新人,麻烦贴吧里各位老师给予指导帮助,万分感谢!!!
最近用MC画曲面图,老是提示除数为0,可我定义了变量,不应该会为零的,不知道哪里出错了,如何修改,贴图如下
后面括号为定义自变量范围,麻烦老师了!
2015年05月19日 08点05分 1
level 12
2015年05月19日 09点05分 2
level 11
我这肯定是哪个地方不对,这颜色过渡成这样了!
@朱老剑客 你的图这里设置的是“填充轮廓线”吗?
2015年05月19日 09点05分 3
level 12
填充表面,颜色映射。
2015年05月19日 10点05分 4
还是过渡不自然,这下找到理由重装了。
2015年05月19日 10点05分
level 12
哦,你说过渡啊,那是显卡问题,跟软件关系不大了。
2015年05月19日 11点05分 5
此前是正常过渡的,这一点可以确认,没关系,我重装试试,顺便记录下安装步骤,以及注册表变化。
2015年05月19日 11点05分
重新安装后,显示正常了。
2015年05月19日 13点05分
回复 angelycs :哦,新发现哈。
2015年05月19日 13点05分
level 2
懒兔228 楼主
搞定了,还是自己太不仔细了,功能栏没有一项项看完,先前查了一下贴吧还以为值域只有外部函数限定,十分感谢二位吧主的及时回复!!!
2015年05月19日 13点05分 7
你可能认为在表达式中添加了逻辑运算来实现定义域限定,在数学意义上是成功的,但是在mc中,这并不能使得 f_s 在等于 0 时得出 0 这个结果来,因为它的顺序是先将 f_s=0 代入表达式,而不是先做逻辑判断。即便先做了逻辑判断得出0,也不会终止将 f_s=0 代入分母并得出错误。
2015年05月19日 15点05分
level 11
虽然从 3D 图设置 QuickPlot 中改变值域的范围,可以使得成功绘制出 3D 图,但我想你的主要努力方向是简化 if 语句并实现定义域的限定,使得仅用一个表达式就能绘制出类似分段函数的效果。
通常的做法是用 if 语句来分段,你使用了逻辑运算显示出你并不打算使用 if 语句,用逻辑运算来使定义域外的值为 0 的方法很巧妙,但是要用计算机的时候必须要考虑至少两点:
1、会不会导致错误
2、时间复杂度会不会太大
第2点简单说来就是运行效率会不会变慢。
如果不画 3D 图并出现错误提示的话,恐怕难以认识到这里的错误:分母为 0 ,即便式子使用了逻辑运算来限定定义域,但这并不能阻止分母为 0 。
即便通过更改 QuickPlot 的值域绘出了图,这图也是不完整的,从而是错误的。
分母为 0 的错误不可避免,而 mathcad 内置的 on error 函数正好可以用于处理这样的错误,见下图。
其中,函数 K 使用了 if ,这是传统做法。函数 G 则使用了楼主采用的逻辑运算,并使用了 on error 函数。
on error 函数的作用简单说来如下:A error B , 如果 B 不出错,那么返回 B,如果 B 出错,那么返回 A
举例来说,F(x):=10 on error 1/x ,F(0)=10 , F(2)=0.5
详见帮助。
2015年05月19日 15点05分 8
level 11
关于两种实现方法效率的比较
经过测试后,得出的结论是,通过 if 来实现的函数比 on error 语句实现的函数更高效。
2015年05月19日 16点05分 9
2015年05月19日 17点05分
1