前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Maxima画出一些有趣的图

用Maxima画出一些有趣的图

作者头像
Enjoy233
发布2019-03-05 14:40:43
3600
发布2019-03-05 14:40:43
举报

Maxima可以画出Chaos、Duffing 、Fern、Lorenz、Rossler 、Portraits 、Mandelbrot、Staircase、Triangles等有趣的图...

Chaos

代码语言:javascript
复制

orbits(x^2+a, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
     [nticks, 400], [style,dots], WEB_IMAGE);

Duffing √

代码语言:javascript
复制
 a:1.0;
 b:0.3;
 c:0;
 f:10.0;
 eqs:[y,-(a*x^3+c*x+b*y)+f*cos(t)];
 t_range:[t, 0, 40, 0.01];
 inits:[0.0, 0.1];
 sol:rk(eqs,[x,y],inits, t_range)$
 plot2d([discrete, makelist([sol[i][2], sol[i][3]], i, 1, length(sol))], WEB_IMAGE);

Fern

代码语言:javascript
复制
a1: matrix([0.85,0.04],[-0.04,0.85])$
 a2: matrix([0.2,-0.26],[0.23,0.22])$
 a3: matrix([-0.15,0.28],[0.26,0.24])$
 a4: matrix([0,0],[0,0.16])$
 p1: [0,1.6]$
 p2: [0,1.6]$
 p3: [0,0.44]$
 p4: [0,0]$
 w: [85,92,99,100]$
 ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots], WEB_IMAGE);

Lorenz  √

代码语言:javascript
复制
 d:10;
 r:28;
 b:8/3;
 eqs:[d*(y-x),r*x-y-x*z, x*y-b*z];
 t_range:[t, 0, 40, 0.01];
 inits:[0.0, 0.1,0.0];
 sol:rk(eqs,[x,y,z],inits, t_range)$
 plot2d([discrete, makelist([sol[i][2], sol[i][3]], i, 1, length(sol))], WEB_IMAGE);
 plot2d([discrete, makelist([sol[i][3], sol[i][4]], i, 1, length(sol))], WEB_IMAGE);
 plot2d([discrete, makelist([sol[i][2], sol[i][4]], i, 1, length(sol))], WEB_IMAGE);

Rossler  

代码语言:javascript
复制
 a:0.2;
 b:0.2;
 c:5.7;
 eqs:[-y-z, x+a*y, b+x*z-c*z];
 t_range:[t, 0, 200, 0.01];
 inits:[0.0, 0.01, 0.01];
 sol:rk(eqs,[x,y,z],inits, t_range)$
 plot2d([discrete, makelist([sol[i][2], sol[i][3]], i, 1, length(sol))], WEB_IMAGE);
 plot2d([discrete, makelist([sol[i][2], sol[i][4]], i, 1, length(sol))], WEB_IMAGE);
 plot2d([discrete, makelist([sol[i][3], sol[i][4]], i, 1, length(sol))], WEB_IMAGE);

Portraits √

代码语言:javascript
复制
 numPortraits:8;
 eqs:[sin(x)+y, sin(y)-x];
 t_range:[t, 0, 10, 0.01];


 for k:1 thru numPortraits do (
     inits:[0.0, k*0.1],
     sol[k]:rk(eqs,[x,y],inits, t_range)
  )$


 sol_list:makelist(
     [discrete, makelist([sol[k][i][2], sol[k][i][3]], i, 1, length(sol[k]))],
      k, 1, numPortraits)$


 plot2d(sol_list, WEB_IMAGE)$

simple Mandelbrot

代码语言:javascript
复制
 mandel(reMin, reMax, imMin, imMax, resolution, iterations):=block(
     [reZ, imZ, absZ, i, pixels, reTemp],
     pixels:[[0,0]],
     for x:reMin step resolution thru reMax do [
         for y:imMin step resolution thru imMax do [
             reZ:0,
             imZ:0,
             absZ:0,
             for i:1 step 1 thru iterations while absZ < 4 do [
                 reTemp:reZ^2 - imZ^2 + x,
                 imZ:2*reZ*imZ + y,
                 reZ:reTemp,
                 absZ:reZ^2+imZ^2
             ],
             if absZ < 4 then pixels:append(pixels,[[x,y]])
         ]
     ],
     return(pixels)
  )$
  plot2d([discrete, mandel(-2,0.5,-1,1, 0.02, 16)],[style,
  [points,1,1,1]], WEB_IMAGE);

Staircase

代码语言:javascript
复制
load("dynamics")$
 staircase(cos(y^2), 1, 11, [y, 0, 1.2], WEB_IMAGE);

Triangles

代码语言:javascript
复制
chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
                  30000, [style, dots], WEB_IMAGE);

Maple中可以试着画出:

Duffing Lorenz Rossler Portraits

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年05月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档