lingo 求和有顺序
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 19:09:21
@sum()
求和的地方写的没问题但是你集定义有问题集名和下标不要用一样的名字
你写的几乎每句都有严重问题我没法给你改你自己把集循环函数每个集名和变量后面都加上下标如果感觉有问题那就自己改一下再问:我自己找不到问题,本来是都有下标的。结果破解版的lingo总是有错误,直到删掉下标
错误太多了,而且表达不清晰,注释的行都有问题,建议贴出数学模型或原问题MODEL:SETS:CLZ/A1..A3/;LJZ/D1..D3/QI;!;JIAGE(LIZ,CLZ):L,B;!1;ENDS
sets:r/1..5/:;!行;c/1..6/:;!列;link(r,c):B;!定义二维集合,声明B;endsetsy=@sum(link(i,j)|i#ge#2#and#i#le#4#and#j
@sum(setname[(set_index_list)[|cond_qualifier]]:expression);例如y=x2+x3+x4+x5可表示如下:sets:r/1..5/:x;ends
没什么大的影响.
先定义好集才行给个例子吧sets:s1/1..4/:;s2/1..6/:;link(s1,s2):u,x;endsets第一部分就是@sum(link:u*x);
循环语句里面求和起码得:f1=f1+K_n*evecs(:,i);吧,你最好把前面程序也贴出来,不然别人也不好帮你.
lingo中的循环需要用到你集合域定义的集合.您的x(i)应该有相应的定义如:a/1..n/:x;,k(i,j)是他们的衍生集合.link(x,x):k;表达式可以写成:@sum(a:@sum(a:(
打个比方,定义:sets:a/1..5/;b/1..6/;c/1..7/;link1(a,b):r;link(a,b,c):x;endsets先一维求和再二维:@sum(link1(i,j):r(i,
是@sum啊两个求和就用两个@sum先求和一次然后再在外面再求和比如@sum(set1(i):@sum(sets2(j):b(i,j)*x(i,j)))当然也可以对i,j的集直接求和
用lingo还更简单…model:sets:myset/1..2/;link(myset,myset):a,b,c;endsetsdata:a=1111;b=2222;enddata@for(link
sets:r/1..100/:;endsetscalc:sum=0;@for(s(i):sum=sum+i);endcalc单用sum函数sets:r/1..100/:;endsetssum=@sum
sets:liu/1..n/:a,b;endsetsfor(liu(i):a(i)*b(i).);
lingo中的下标都是从1开始的sum=@sum(setname(i)|i#le#n+1:x(i));有疑问联系我
lingo是没法对变的范围做循环函数的所以你这个直接写肯定不行当然可以乘上一组0-1变量来求和不过这样增加运算复杂程度可能对运算效率和准确性有影响
求和用@sum()再比较大小没明白怎么回事?是要求最大值还是最小值?还是?
@sum(man(i)|i#GE#n#AND#i#LE#m:x(i,1));
y'=2/(1-2x),y(0)=0,y=-ln(1-2x).n=1,2,…,xy'+y=(xy)'=x/(1-x)^2,y(0)=0,y=[ln(1-x)+x/(1-x)]/x.