作业帮 > 综合 > 作业

求问一个mathematica问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/02 16:51:16
求问一个mathematica问题
eq2 = Sin[5]*W;W = -2; While[W < 5, Print[eq2]; W++]
就是以上程序运行时循环中的W为什么不起作用?运行结果如下(上面是运行结果,而下面是我想要的结果):

你这代码已经不是第一次执行了吧.理由很简单,这和Mathematica的自动计算机制有关.
你的W,在此次执行之前,其值已经变成5了.(理由很可能,如上所说,是因为你已经把这个代码执行过一次了.),于是,eq2发生自动计算,其获得的值(确切地说是OwnValues)为
5 Sin[5]
所以,下面你怎么循环,出来的都是5 Sin[5].要阻止这一事态,有两个方法,其一,使用延迟赋值:
eq2 := Sin[5]*W