关于函数引用的问题
我刚刚开始接触fish函数遇到一个问题以下两组代码
def kaiwa
a=9.9-5.3*12.2/30
b=13-5.3*12.2/30
c=9.9-5.3*15/30
d=13-5.3*15/30
;a=7.745 b=10.845 c=7.25 d=10.35
end
kaiwa
model null range x 12.2 15 y 0 30 z a b
model null range x 15.0 17.8 y 0 30 z c d
和
model null range x 12.2 15 y 0 30 z 7.745 10.845
model null range x 15.0 17.8 y 0 30 z 7.25 10.35
图像如图所示
左边是第一组代码生成的 右边那个是第二组 怎么会不一样呢 差距还这么大 应该是数的精度问题, 导致定义的范围不同
print 一下 a b c d和第二个代码中的数值对比一下就明白了 谢谢你的帮忙 我print了一下 只有b的值 a c d的怎么都没有呢 不知道怎么整的 1# 515872841
看你的那几个式子中,除号后面30都是整数,这样计算的时候小数点后面的数可能就被去掉了。所以,你把30换成30.0试试。
按现在算的话,应该是a=7.9 b=11 c=7.9 d=11吧,呵呵,你可以print 一下,看看结果 附件里是整个模型的两部分代码 模型和开挖的 有兴趣的就看一下吧 1 上次没有成功上传成功 这次再试试 不是 改成30.0 也不好使 本帖最后由 linxingchao 于 2010-5-29 20:39 编辑
试验了一下,不知道这样的解释对不对。
换一下变量就可以了,其中a、c、d已经被命令流默认使用了,因此fish中对这些变量的操作是无效的。
print d 的结果是“Dynamic model not available”,意思是动力模型没开启,无法显示变量d。那么可以认为d是动力计算模块中一个默认的一个量,通过这点判断a、c也是同样情况,变量名已经被占用。
我将a、b、c、d改为a1、a2、a3、a4就可以得到正解。
将26个字母试了一遍,除了a、c、d外还有f、g、h、i、m、n、r、s、t、v、w、z是不能使用的。
总结一句,fish中变量命名最好两个或两个字符以上!:) 几位大侠研究得真是透彻~ 试验了一下,不知道这样的解释对不对。
换一下变量就可以了,其中a、c、d已经被命令流默认使用了,因此fish中对这些变量的操作是无效的。
print d 的结果是“Dynamic model not available”,意思是动力模型没开 ...
linxingchao 发表于 2010-5-29 20:12 http://forum.simwe.com/images/common/back.gif
哈哈 和我昨天的研究结果是一样的
我是将 a b c 改成了aabb cc 之后变量计算结果就正确了
能将26个字母试一遍确实很有耐心研究精神可嘉啊 呵呵 你们都牛 我也试了一下 是那么回事呢 呵呵 谢谢大家了
页:
[1]