请教剑客
mathcad吧
全部回复
仅看楼主
level 15
月城翁 楼主

文件地址:
链接: 百度网盘 密码: 7vrk
首先感谢http://bbs.csdn.net/topics/390811585的unituniverse2老师,他讲了绘制彩虹色带的方法。
我用他讲的方法,邯郸学步,编了MC程序:
结果正确。
为了学用剑客的“函数池”,先把程序改写成:
在这个基础上再改写成:
结果不正确。想了好久,没有找到原因,特请剑客赐教。
谢谢。
2015年09月26日 05点09分 1
level 15
月城翁 楼主
只有(0 0 0)和(255 0 0)两个值。
2015年09月26日 06点09分 2
level 12
你这里是对f0和f1的定义错误,在你的定义中,c并不是这两个函数的变量,而是以一个常量存在的,所以在调用的时候,c也被当做常量调用了。如下:
尽管在你的程序中也有c,但是在程序中c的位置是临时赋值的对象,仅在程序内有迭代意义,它与程序外已经定义的c无关的。比如说,我把你的f0中的c改为一个常量,得到的结果是一样的,如下:
如果要实现你的编程意图,只能想办法让f0函数与c发生直接关系,如下:
嗯,月城,按照你原来的程序,f0实际上是让MC在for循环中不断的进行stack((0 0 0),clr(n,t))这个动作,其中只有clr(n,t)是变化的,c是一个常量(0 0 0)没有变化。将f0定义为f0(c,n,t)之后,你后面的“c←”中的c的变化才能传导至f0中发生迭代。不知道我这么解释,您能明白么?
2015年09月26日 10点09分 3
level 15
月城翁 楼主
谢谢,太谢谢了。
若不是您的帮助,我再这怎么查,也发现不了这个错误。这是我知识中的一个盲点,有幸得到您的帮助,得以及早发现。
我从错误的结果中已经发现没有循环取值,但是我总是从“函数池”的用法去找原因,对于c,我一直把它看成第二个程序中的那种循环赋值的情况,偏偏在这里就不是这样。
今后得特别注意这一点。
2015年09月26日 12点09分 4
1