首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时假设多个变量

同时假设多个变量
EN

Stack Overflow用户
提问于 2014-11-18 23:39:49
回答 2查看 78关注 0票数 0

我试图设置以下约束:

assume(E1A::integer,E2A::integer,...,E2B::integer,...,E3C::integer)

additionally(E1A>=0,E2A>=0,...,E3C>=0)

additionally(E1A<=3,E2A<=3,...,E3C<=3)

有没有办法做到这一点,而不键入所有的术语E1A, E2A,...,E3C?我试着做

for i from 0 to 3 do (assume(EiA::integer)) end do

作为一种快捷方式,但Maple不喜欢这样做,大概是因为它没有将i视为索引变量。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 02:13:16

您可以通过连接来形成名称。

代码语言:javascript
复制
restart:

assume( seq( cat(`E`,i,`A`)::integer, i=1..3 ) );

现在,为了测试,

代码语言:javascript
复制
[ seq( cat(`E`,i,`A`), i=1..3 ) ]:
map( about, % ):

  Originally E1A, renamed E1A~:
    is assumed to be: integer

  Originally E2A, renamed E2A~:
    is assumed to be: integer

  Originally E3A, renamed E3A~:
    is assumed to be: integer

你也可以嵌套seq,例如,

代码语言:javascript
复制
restart:
assume( seq( seq( cat(`E`,i,abc)::integer, i=1..3), abc=[A,B,C] ) );

[ seq( seq( cat(`E`,i,abc), i=1..3), abc=[A,B,C] ) ]:
map( about, % ):
票数 1
EN

Stack Overflow用户

发布于 2014-11-19 07:10:03

使用元素运算符和级联运算符,您可以将所有假设降到一行:

代码语言:javascript
复制
assume(E||(1..3)||A ::~ AndProp(integer, RealRange(0,3)));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27006305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档