data段需要输入分数求解?
今天在用lingo编程序的时候,发现data段输入分数会出现语法错误。但是为了计算的精确,必须要输入分数,有没有谁有好的方法解决这个问题,小弟先谢谢各位了! lingo不是用来做精确计算的数学软件,所以这里想精度高一些就是使用有效数字多一些的小数。 本帖最后由 qlb061 于 2013-7-13 18:56 编辑Lingo在数值输入时可以使用分数,但是它会用浮点数值进行计算,一般浮点精度至少可以表示小数点
后面16位,不同机器或者不同版本可能有所不同。
比如,计算整数1-100的倒数:model:
sets:
mydata/1..100/:v;
endsets
data:
@text() = @writefor(mydata(i):@name(v(i)),': ', @format('.20f',v(i)),@newline(1));
enddata
calc:
@set('terseo',1);!terse output only;
@for(mydata(i): v(i) = 1 / i);
@set('terseo');!default setting;
endcalcLingo11.0会得到如下部分结果:Feasible solution found.
Total solver iterations: 0
V( 1): 1.00000000000000000000
V( 2): 0.50000000000000000000
V( 3): 0.33333333333333331000
V( 4): 0.25000000000000000000
V( 5): 0.20000000000000001000
V( 6): 0.16666666666666666000
V( 7): 0.14285714285714285000
V( 8): 0.12500000000000000000
V( 9): 0.11111111111111110000
V( 10): 0.10000000000000001000
lingo中输入分数会将其当成出发看待,data中不能进行数值的计算,所以会出现错误。
页:
[1]