lingo基础入门Day 2——lingo规范标识符与线性方程组求解总结

lingo基础入门Day 2

lingo的标识符

在lingo中,标识符是为了给对象命名所使用的字符串。

命名规范
  • 所有标识符必须以字母或者下划线开头,后续字母也只能是字母、数字或者下划线。
  • 标识符最长32字符
  • 标识符不区分大小写
练习1:标识符
  • X1 A_99 SUNDAY _TBX (正确)

    -A 9C 8D A+B X.Y (错误)

算术运算符
  • -号如果是单目运算符表示取运算对象的相反数,如果是双目运算符表示减法运算。
  • 例如:X=-A; X=C-A;
  • 除负号运算符外,其他五种运算符都是双目运算符,也就是需要两个运算对象。
  • 算数运算符的优先级别是同级从左到右
  • 可能通过加括号()来改变运算次序
逻辑运算符

#EQ# 相等 #NE# 不相等 #GT# 大于 #LT#小于

#LE# 小于等于 #GE# 大于等于

#NOT# 逻辑反 #AND#逻辑与 #OR#逻辑或

逻辑表达式的值只有两种:

真TRUE

假FALSE

逻辑运算符有9个,除了#NOT#是单目运算符之外,其他的都是双目运算符,需要两个运算对象。

逻辑运算符的优先级分为三个级别

优先级运算符
#NOT#
#EQ#、#NE#、#GT#、#LT#、#LE#、#GE#
#AND#、#OR#
关系运算符

lingo中没有严格的>和<关系,lingo将约束表达式中单独出现的<和>分别看做>=和<=。

如果要严格使用>和<运算,比如让A严格小于100,可以把精度编程:A+e<=100,这里的e是根据题目精度要求选择的一个小的正数。

用lingo求线性方程组

举例:

4*x-y+3*z=5;
2*x+y+8*z=18;
5*x-2*y+9*z=7;

运算结果:

  Feasible solution found.
  Infeasibilities:                              0.000000
  Total solver iterations:                             3
  Elapsed runtime seconds:                          0.07

  Model Class:                                        LP

  Total variables:                      3
  Nonlinear variables:                  0
  Integer variables:                    0

  Total constraints:                    3
  Nonlinear constraints:                0

  Total nonzeros:                       9
  Nonlinear nonzeros:                   0



                                                    Variable           Value
                                                           X        2.000000
                                                           Y        6.000000
                                                           Z        1.000000

                                                         Row    Slack or Surplus
                                                           1        0.000000
                                                           2        0.000000
                                                           3        0.000000


用lingo求非线性方程组

举例:

x+3*y^2-2*z=2;
x^2+5*y^2-z^3=3;
x+y^3+z^2=15;

运算结果:

  Feasible solution found.
  Infeasibilities:                             0.4781647E-04
  Extended solver steps:                               5
  Total solver iterations:                            83
  Elapsed runtime seconds:                          0.26

  Model Class:                                       NLP

  Total variables:                      3
  Nonlinear variables:                  3
  Integer variables:                    0

  Total constraints:                    3
  Nonlinear constraints:                3

  Total nonzeros:                       9
  Nonlinear nonzeros:                   6



                                                    Variable           Value
                                                           X        4.999995
                                                           Y        1.000001
                                                           Z        3.000000

                                                         Row    Slack or Surplus
                                                           1      -0.8894671E-06
                                                           2      -0.4781647E-04
                                                           3      -0.3839825E-06


百鸡百钱问题

一个人用100个铜钱买了100只鸡,他说一只公鸡5个铜钱,一只母鸡3个铜钱,三只小鸡1个铜钱,编程求出他买的公鸡、母鸡、小鸡各多少只?

代码实现:

x+y+z=100;
5*x+3*y+z/3=100;
@GIN(x);
@GIN(y);
@GIN(z);

结果:

  Feasible solution found.
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                             2
  Elapsed runtime seconds:                          0.08

  Model Class:                                      PILP

  Total variables:                      3
  Nonlinear variables:                  0
  Integer variables:                    3

  Total constraints:                    2
  Nonlinear constraints:                0

  Total nonzeros:                       6
  Nonlinear nonzeros:                   0



                                                    Variable           Value
                                                           X        12.00000
                                                           Y        4.000000
                                                           Z        84.00000

                                                         Row    Slack or Surplus
                                                           1        0.000000
                                                           2        0.000000


总结

  • 标识符的命名规范

  • 算数运算符

  • 逻辑运算符

  • 关系运算符

  • 用LINGO求解线性方程组

  • 用LINGO求解非线性方程组

  • 用LINGO求解高次方程组

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值