Mathematica基础——循环和迭代

2022年5月21日 27点热度 0人点赞

本文,学习一下用Mathematica处理循环和迭代的问题。不过,这次我要参照“苹果”制作的视频《迭代&扩展的24点程序》,所以有点“Piao Qie”的嫌疑!希望“苹果”不要责怪!

工具/原料

  • 电脑
  • Mathematica

循环

  1. 1

    我们可以用Table来列出前10个整数的立方:

    Table[i^3,{i,10}]

    这其实是给出了前10个整数的立方的列表,还可以求出50到100之间所有3的倍数的立方、500到1000之间所有55的倍数的平方:

    Table[i^3,{i,51,100,3}]//Column

  2. 2

    用Do给出前10个整数的平方:

    Do[Print[n^2],{n,10}]//TraditionalForm

    注意:Do自己是不会返回任何结果给你的,需要结合Print才行!而且,返回的结果不是列表。再试试:

    Do[Print[n^10],{n,10}]

  3. 3

    用For求出0到10这10个数的5次方:

    For[i = 0, i < 11, i++, Print[i^5]]

    这个For的用法,与C语言的用法差不多。

  4. 4

    类似地,用While给出1到10这10个数的6次方:

    n = 1; While[n < 11,Print[n^6]; n++]

    这里,先运行Print[n^6],再运行n++,然后循环。

  5. 5

    用Map给出前10个数的平方:

    Map[#^2&,Range[10]]

    注意:Map可以用  /@  代替;#^2&  是纯函数。你还可以试试——Sqrt[#]&/@ Range[10]/ /Column/ /N

    END

迭代

  1. 1

    计算2的100次方,可以直接输入——2^100,运行即可。

    但是,也可以麻烦点,用Nest(迭代、嵌套)来计算:

    (Nest[#*2&,x,100]//TraditionalForm)/.x->1

  2. 2

    用NestList看以看到迭代的每个步骤:

    NestList[#*y&,x,100]//TraditionalForm

    运行结果是:

    {x,x y,x y^2,x y^3,后面的就不去一一列举了}

  3. 3

    给出一个连分数:

    Nest[1+1//#&,x,20]//simplify

    式子化简之后,得到一个分式——(6765+10946x)/(4181+6765x),它的图像如下图。

  4. 4

    有条件限制的迭代:NestWhile。

    求大于10996的最小素数:

    NestWhile[# + 1 &,10996, ! PrimeQ[#] &]

    ! PrimeQ表示非素数,代码的执行过程是——当迭代的值不是素数的话,进行下一次迭代,否则停止迭代,并返回最终结果(本例是11003,英语读作eleven thousand, three)!

    那么,11003是第几个素数呢?在下面第六部能看到答案!

  5. 5

    求大于10996的最小的一对孪生素数:

    NestWhile[# + 1 &, 10996, ! PrimeQ[#1] || ! PrimeQ[#3] &, 3】

    代码的执行过程——每当进行三次迭代,迭代值的第一个数和第三个数不都是素数的时候,进行下一次迭代,否则停止迭代,并返回孪生素数里面较少的素数(11059,说明:大于10996的最小的一对孪生素数是11059,11061)!

  6. 6

    判断小于10996的最大的Fibonacci 数是第几个Fibonacci 数:

    NestWhile[[(# + 1) &, 1, Fibonacci[#] <= 10996 &]]

    答案:小于10996的最大的Fibonacci 数是第22个Fibonacci 数——17711=89*199。而且,第四步的问题,11003是第1136个素数。

  7. 7

    看看具体的迭代步骤:

    NestWhileList[(# + 1) &, 1, Fibonacci[#] <= 10996 &】

    END

注意事项

  • 更多的内容,请查看Mathematica的帮助文档!
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部

laozhao

这个人很懒,什么都没留下

文章评论