首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最大块和变量

最大块和变量
EN

Stack Overflow用户
提问于 2017-03-16 03:59:09
回答 1查看 699关注 0票数 0

我想使用block命令显示数字1到5的平方:

代码语言:javascript
复制
expr : 10*i;

myList (expr, iMin, iMax) := block(
  local(expr),
  print(expr),
  print(''expr),
  print( makelist(expr, i, iMin, iMax)),
  print( makelist(''expr, i, iMin, iMax)) 
 )$

ai : i^2$
myList (ai,1,5);

下面是我使用这段代码得到的结果:

代码语言:javascript
复制
i^2
10*i
[i^2,i^2,i^2,i^2,i^2]
[10,20,30,40,50]

为什么myList中的"expr“变量(带引号)不是变量"ai"?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-17 04:43:09

简而言之,quote-quote仅在输入表达式时应用,而不是在计算时应用。尝试使用grind(myList);查看quote-quote是否已将expr的当前值插入(粘贴)到函数定义中。

更长的答案是,Maxima通常有一个一次性的求值策略(即变量只求值一次),但是一些函数“引用”(不求值)他们的参数或以一种特殊的方式评估他们的参数,makelist就是其中之一。这使得编写像myList这样想要向makelist提供参数的函数变得很棘手。

我的建议是编写apply(makelist, [...]) (即将makelist应用于参数列表)而不是makelist(...)。使用apply编写它将确保参数得到计算。

代码语言:javascript
复制
(%i5) myList(expr, iMin, iMax) := apply (makelist, [expr, i, iMin, iMax]) $
(%i6) expr:i^2 $
(%i7) myList(expr, 1, 5);
(%o7)                          [1, 4, 9, 16, 25]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42819545

复制
相关文章

相似问题

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