zhangc_ningbo 发表于 2012-10-5 20:08

data段需要输入分数求解?

今天在用lingo编程序的时候,发现data段输入分数会出现语法错误。但是为了计算的精确,必须要输入分数,有没有谁有好的方法解决这个问题,小弟先谢谢各位了!

madio 发表于 2013-7-13 16:43

lingo不是用来做精确计算的数学软件,所以这里想精度高一些就是使用有效数字多一些的小数。

qlb061 发表于 2013-7-13 18:52

本帖最后由 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

snowwomanPeter 发表于 2014-7-17 17:49

lingo中输入分数会将其当成出发看待,data中不能进行数值的计算,所以会出现错误。
页: [1]
查看完整版本: data段需要输入分数求解?