多语言展示
当前在线:414今日阅读:155今日分享:35

怎么用Mathematica制作动态图片

Mathematica有一个非常强大的功能,就是生成可以互动的内容,甚至可以到处帧数很大的动态图。        下面,就用几个例子,简单的讲一下这个问题。
工具/原料
1

电脑

2

Mathematica(8.0以上版本)

一些简单的例子
1

把一组图片变成一个动态图        代码是:Export['abcd.gif',{图片a,图片b,图片c,图片d}]        其中,Export是输出文件的命令函数;abcd.gif是要输出的文件的名称和格式,要用''包围起来;后面的{}是一个列表。        这段代码的意思就是,把列表里的图片a、图片b、图片c、图片d按顺序导出为一个gif文件。        要注意的是,要把图片直接复制到相应的位置上,让图片成为代码的一部分。

2

导出的文件在哪里呢?这个好像因人而异。我的电脑上的导出文件是在“文档”文件夹里。如果你的电脑不是这样,可以慢慢找,也可以全盘搜索'abcd.gif'。

3

Mathematica可以绘制函数的图形,也可以绘制函数的动态图。        代码是:Animate[Plot[Sin[x + a], {x, 0, 10}], {a, 0, 5}]        Animate是生成动画的命令,x是自变量,a是动画参数。        运行以后,用鼠标点开关,图像就会自己动起来;用左键拖动滑块,就实现了人机互动。自己实施去吧。

4

上面并不是动态图,因为你的电脑文件夹里面没有这个东西(还没导出来)。        怎么导出?当然还是用Export,代码如下:Export['sinx.gif', Table[Plot[Sin[x + a], {x, 0, 10}], {a, 0, 5}]]        出来的结果如图:

5

三焦点曲线        在《怎么用Mathematica处理多焦点曲线》里面,作者提到了多焦点曲线的概念。        下面把三焦点曲线导出为动态图。        先建立一个图的列表,一帧一帧的图像,都在这个列表里。Table[ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] + Sqrt[    x^2 + (y - 1)^2] == a, {x, -5, 5}, {y, -5, 5}], {a, 1.8, 10, 0.1}]        然后用Export:Export['三焦点曲线.gif',  Table[ContourPlot[   Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] + Sqrt[     x^2 + (y - 1)^2] == a, {x, -5, 5}, {y, -5, 5}], {a, 1.8, 10,    0.1}]]

6

双摆的模拟        双摆和单摆比起来,就复杂的太多了。它的运动状态,看起来非常的混乱。下面,就用Mathematica模拟一下它的运动。        它的运动,由四个函数根据不同的初始状态所确定。这四个函数设为p1[t]、p2[t]、θ1[t]、θ2[t],它们满足一个微分方程组(见图)。        代码如下图。

注意事项
1

写代码,有助于你熟悉键盘,提高打字速度。所以,尽量不要复制粘帖。

2

把上面的代码直接复制到Mathematica里,居然有的不能运行。很奇怪!所以,你如果想实验的话,尽量自己写吧。

3

第六步代码有点长,所以截图了。

推荐信息