用mathematica循环求一个表达式,怎么把每次的结果保存起来,而不是被重写掉?
2个回答
展开全部
你的“保存”是什么意思?老实说这取决于你的代码,你最好把相应的代码补上,我现在并不清楚你的结果是被覆盖了还是其实是没显示出来,另外,Mathematica的话,最好就是不要使用循环,那不是Mathematica的做法。比如你可以用Table:
Table[ i + 5 j^2, {i, 5}, {j, 6}]
(* 所有的 i 从1到5,j 从1到6的 i + 5 j^2 的值 *)
这样的语法简洁,代码运行速度也快。非要用Do甚至For之类的循环并且把结果显示出来的话,你可以在循环体里加Print语句之类的,如果你那只是没显示出来,那你直接输入你的变量名再Shift+Enter就可以把你的量调出来了。
Table[ i + 5 j^2, {i, 5}, {j, 6}]
(* 所有的 i 从1到5,j 从1到6的 i + 5 j^2 的值 *)
这样的语法简洁,代码运行速度也快。非要用Do甚至For之类的循环并且把结果显示出来的话,你可以在循环体里加Print语句之类的,如果你那只是没显示出来,那你直接输入你的变量名再Shift+Enter就可以把你的量调出来了。
追问
我想在MATHEMATICA上用龙格库塔方法,必须用循环啊,我定义了个数组把数存到数组里去了,好像管用。。还有,怎么跳出循环啊?
追答
……谁说必须要用循环了,再说Table的本质就是优化的循环,强烈建议你好好看看帮助文档。跳出循环……一般都是依步长跳出啊,要中止,好像是Break[]吧,唉哟这种的平时不用我一下也想不起来,你看看帮助吧,Mathematica帮助很好用的
展开全部
用Sow和Reap貌似比较方便,这是个例子:
Last@Reap[Do[Sow@Sin[i], {i, 0, Pi, .1}]]
同样的方法可以用在For循环,While循环里,比先建空表再AppendTo要好,速度更快也减少很多不必要的思考,比如对单个元素的操作等等。
关于跳出循环,可以使用Return,Break,【Catch, Throw】,具体的看这里:
http://zh.wikibooks.org/wiki/Mathematica/%E5%88%9D%E7%BA%A7%E6%93%8D%E4%BD%9C#.E5.B1.80.E9.83.A8.E8.B7.B3.E8.BD.AC.E8.AF.AD.E5.8F.A5.EF.BC.9ABreak.EF.BC.8CContinue.EF.BC.8CReturn
题外话,Mathematica的确不适合写C语言风格的程序,你可以选择熟悉一下函数式编程的思考方式或者移步matlab。
Last@Reap[Do[Sow@Sin[i], {i, 0, Pi, .1}]]
同样的方法可以用在For循环,While循环里,比先建空表再AppendTo要好,速度更快也减少很多不必要的思考,比如对单个元素的操作等等。
关于跳出循环,可以使用Return,Break,【Catch, Throw】,具体的看这里:
http://zh.wikibooks.org/wiki/Mathematica/%E5%88%9D%E7%BA%A7%E6%93%8D%E4%BD%9C#.E5.B1.80.E9.83.A8.E8.B7.B3.E8.BD.AC.E8.AF.AD.E5.8F.A5.EF.BC.9ABreak.EF.BC.8CContinue.EF.BC.8CReturn
题外话,Mathematica的确不适合写C语言风格的程序,你可以选择熟悉一下函数式编程的思考方式或者移步matlab。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询