Home > Backend Development > Python Tutorial > 如何用数学软件画一个“圣诞树”?

如何用数学软件画一个“圣诞树”?

WBOY
Release: 2016-06-06 16:22:11
Original
6459 people have browsed it

可以是字符的,也可以是图形的

相关问题如何用C语言画一个“圣诞树”? - 编程

回复内容:

我只是搬运codegolf.stackexchange.com上的答案,原作者是Silvia (@Silvia ),用的是Mathematica。
<code class="language-text">PD = .5;
s[t_, f_] := t^.6 - f
dt[cl_, ps_, sg_, hf_, dp_, f_, flag_] :=
    Module[{sv, basePt},
           {PointSize[ps],
            sv = s[t, f];
            Hue[cl (1 + Sin[.02 t])/2, 1, .3 + sg .3 Sin[hf sv]],
            basePt = {-sg s[t, f] Sin[sv], -sg s[t, f] Cos[sv], dp + sv};
            Point[basePt],
           If[flag,
              {Hue[cl (1 + Sin[.1 t])/2, 1, .6 + sg .4 Sin[hf sv]], PointSize[RandomReal[.01]],
               Point[basePt + 1/2 RotationTransform[20 sv, {-Cos[sv], Sin[sv], 0}][{Sin[sv], Cos[sv], 0}]]},
              {}]
          }]

frames = ParallelTable[
                       Graphics3D[Table[{
                                         dt[1, .01, -1, 1, 0, f, True], dt[.45, .01, 1, 1, 0, f, True],
                                         dt[1, .005, -1, 4, .2, f, False], dt[.45, .005, 1, 4, .2, f, False]},
                                        {t, 0, 200, PD}],
                                  ViewPoint -> Left, BoxRatios -> {1, 1, 1.3}, 
                                  ViewVertical -> {0, 0, -1},
                                  ViewCenter -> {{0.5, 0.5, 0.5}, {0.5, 0.55}}, Boxed -> False,
                                  PlotRange -> {{-20, 20}, {-20, 20}, {0, 20}}, Background -> Black],
                       {f, 0, 1, .01}];

Export["tree.gif", frames]
</code>
Copy after login
Mathematica版本:
打开一个notebook,然后长按CTRL+/,效果如下:
如何用数学软件画一个“圣诞树”?像不像一棵圣诞树呢? 这里有用SAS画的圣诞树,翻译成了Mathematica版的
如何用数学软件画一个“圣诞树”?
<code class="language-text">Clear["`*"];
ifs[prob_,A_,init_,max_]:=FoldList[#2.{#[[1]],#[[2]],1}&,init,RandomChoice[prob->A,max]];

L={{{0.03,0},{0,0.1}},{{0.85,0},{0,0.85}},{{0.8,0},{0,0.8}},{{0.2,-0.08},{0.15,0.22}},{{-0.2,0.08},{0.15,0.22}},{{0.25,-0.1},{0.12,0.25}},{{-0.2,0.1},{0.12,0.2}}};
B=Map[List,{{0,0},{0,1.5},{0,1.5},{0,0.85},{0,0.85},{0,0.3},{0,0.4}},{2}];

{A,prob,init,max}={N@Join[L,B,3],{2,60,10,7,7,7,7}/100.,{0.,2.},10^5};
pts=ifs[prob,A,init,max];//AbsoluteTiming
Graphics[{{Darker@Green,PointSize@Tiny,Point@pts},{Hue@Random[],PointSize@Large,Point@#}&/@RandomChoice[pts,200]},AspectRatio->1.5]
</code>
Copy after login
去年用R画了圣诞树送给教定量入门的教授,改了一下Wiekvoet: Merry Christmas的代码。
( 今年直接手动涂色送happy spring的卡片了,不是程序媛搞不出酷炫的东西好桑心) Wolfram Mathematica 算数学软件吧?

如何用数学软件画一个“圣诞树”?
还有这个:

如何用数学软件画一个“圣诞树”?
算不算抖机灵 = = 鸡汁的我
如何用数学软件画一个“圣诞树”? MATLAB ,名副其实的数学软件。
如何用数学软件画一个“圣诞树”?参考 File Exchange
by Anselm Ivanovas
====================================
%
<code class="language-matlab"><span class="k">function</span> <span class="nf">christmas</span>
<span class="c">% Anselm Ivanovas, anselm.ivanovas@student.unisg.ch</span>
<span class="c">%Basically just a nice plot for some christmas fun.</span>
<span class="c">%3D Plot of a hhristmas tree with some presents and snow</span>
<span class="c">%% setup</span>
<span class="n">snow</span><span class="p">=</span><span class="mi">800</span><span class="p">;</span> <span class="c">% number of snow flakes [0 .. 5000]</span>

<span class="c">%% draw tree</span>
<span class="n">h</span><span class="p">=</span><span class="mi">0</span><span class="p">:</span><span class="mf">0.2</span><span class="p">:</span><span class="mi">25</span><span class="p">;</span> <span class="c">%vertical grid</span>
<span class="p">[</span><span class="n">X</span><span class="p">,</span><span class="n">Y</span><span class="p">,</span><span class="n">Z</span><span class="p">]</span> <span class="p">=</span> <span class="n">cylinder</span><span class="p">(</span><span class="n">tree</span><span class="p">(</span><span class="n">h</span><span class="p">));</span> <span class="c">%produce a tree formed cylinder</span>
<span class="n">Z</span><span class="p">=</span><span class="n">Z</span><span class="o">*</span><span class="mi">25</span><span class="p">;</span> <span class="c">%scale to the right heigth</span>
<span class="c">%add some diffusion to the surface of the tree to make it look more real</span>
<span class="n">treeDiffusion</span><span class="p">=</span><span class="nb">rand</span><span class="p">(</span><span class="mi">126</span><span class="p">,</span><span class="mi">21</span><span class="p">)</span><span class="o">-</span><span class="mf">0.5</span><span class="p">;</span><span class="c">%some horizontal diffusion data</span>
<span class="c">%add diffusion to the grid points</span>
<span class="k">for</span> <span class="n">cnt1</span><span class="p">=</span><span class="mi">1</span><span class="p">:</span><span class="mi">21</span>

<span class="k">for</span> <span class="n">cnt2</span><span class="p">=</span><span class="mi">16</span><span class="p">:</span><span class="mi">126</span><span class="c">%starting above the trunk</span>
<span class="c">%get the angle to always diffuse in direction of the radius</span>
<span class="nb">angle</span><span class="p">=</span><span class="nb">atan</span><span class="p">(</span><span class="n">Y</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)</span><span class="o">/</span><span class="n">X</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">));</span>
<span class="c">%split the diffusion in the two coordinates, depending on the angle</span>
<span class="n">X</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)=</span><span class="n">X</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)</span><span class="o">+</span><span class="nb">cos</span><span class="p">(</span><span class="nb">angle</span><span class="p">)</span><span class="o">*</span><span class="n">treeDiffusion</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">);</span>
<span class="n">Y</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)=</span><span class="n">Y</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)</span><span class="o">+</span><span class="nb">sin</span><span class="p">(</span><span class="nb">angle</span><span class="p">)</span><span class="o">*</span><span class="n">treeDiffusion</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">);</span>
<span class="c">%some Vertical diffusion for each point</span>
<span class="n">Z</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)=</span><span class="n">Z</span><span class="p">(</span><span class="n">cnt2</span><span class="p">,</span><span class="n">cnt1</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="nb">rand</span><span class="o">-</span><span class="mf">0.5</span><span class="p">)</span><span class="o">*</span><span class="mf">0.5</span><span class="p">;</span>
<span class="k">end</span>

<span class="k">end</span>
<span class="c">%draw the tree</span>
<span class="n">surfl</span><span class="p">(</span><span class="n">X</span><span class="p">,</span><span class="n">Y</span><span class="p">,</span><span class="n">Z</span><span class="p">,</span><span class="s">'light'</span><span class="p">)</span>
<span class="c">%% View and format</span>
<span class="c">%Use as nice green color map (darker at the bottom, lighter at the top)</span>
<span class="n">r</span><span class="p">=(</span><span class="mf">0.0430</span><span class="p">:(</span><span class="mf">0.2061</span><span class="o">/</span><span class="mi">50</span><span class="p">):</span><span class="mf">0.2491</span><span class="p">)</span><span class="o">'</span><span class="p">;</span><span class="c">%red component</span>
<span class="n">g</span><span class="p">=(</span><span class="mf">0.2969</span><span class="p">:(</span><span class="mf">0.4012</span><span class="o">/</span><span class="mi">50</span><span class="p">):</span><span class="mf">0.6981</span><span class="p">)</span><span class="o">'</span><span class="p">;</span><span class="c">%green component</span>
<span class="n">b</span><span class="p">=(</span><span class="mf">0.0625</span><span class="p">:(</span><span class="mf">0.2696</span><span class="o">/</span><span class="mi">50</span><span class="p">):</span><span class="mf">0.3321</span><span class="p">)</span><span class="o">'</span><span class="p">;</span><span class="c">%blue component</span>
<span class="n">map</span><span class="p">=[</span><span class="n">r</span><span class="p">,</span><span class="n">g</span><span class="p">,</span><span class="n">b</span><span class="p">];</span><span class="c">%join in a map</span>
<span class="k">for</span> <span class="n">cnt</span><span class="p">=</span><span class="mi">1</span><span class="p">:</span><span class="mi">6</span>
<span class="c">%change the lower part to brown for the trunk</span>
<span class="n">map</span><span class="p">(</span><span class="n">cnt</span><span class="p">,:)=[</span><span class="mi">77</span><span class="p">,</span><span class="mi">63</span><span class="p">,</span><span class="mi">5</span><span class="p">]</span><span class="o">/</span><span class="mi">265</span><span class="p">;</span>
<span class="k">end</span>
<span class="n">colormap</span><span class="p">(</span><span class="n">map</span><span class="p">)</span><span class="c">%set the map</span>
<span class="n">view</span><span class="p">([</span><span class="o">-</span><span class="mf">37.5</span><span class="p">,</span><span class="mi">4</span><span class="p">])</span><span class="c">%Change the view to see a little more of the Actual 3D tree</span>
<span class="n">lighting</span> <span class="n">phong</span> <span class="c">%some nice lighting</span>
<span class="n">shading</span> <span class="n">interp</span> <span class="c">%remove grid and smoothen the surface color</span>
<span class="n">axis</span> <span class="n">equal</span> <span class="c">%takes care of display in the right proportion</span>
<span class="n">axis</span><span class="p">([</span><span class="o">-</span><span class="mi">10</span> <span class="mi">10</span> <span class="o">-</span><span class="mi">10</span> <span class="mi">10</span> <span class="mi">0</span> <span class="mi">30</span><span class="p">])</span> <span class="c">%give some more axis space (for the snow later)</span>
<span class="n">axis</span> <span class="n">off</span> <span class="c">%but don't show axis</span>
<span class="n">hold</span> <span class="n">on</span> <span class="c">%to draw the rest</span>
<span class="n">title</span><span class="p">(</span><span class="s">'Merry Christmas 知乎er'</span><span class="p">)</span><span class="c">%self explaining</span>
<span class="c">%% Presents</span>
<span class="c">%Draw some presents around the tree (each with random color)</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="o">-</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mf">1.5</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="o">-</span><span class="mi">14</span><span class="p">,</span><span class="o">-</span><span class="mi">5</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="o">-</span><span class="mi">9</span><span class="p">,</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">);</span>
<span class="n">drawPresent</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span><span class="o">-</span><span class="mi">13</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">);</span>
<span class="c">%% Snow</span>
<span class="c">%create some random 3D coordinates for the snow (amount as in setup above)</span>
<span class="n">snowX</span><span class="p">=(</span><span class="nb">rand</span><span class="p">(</span><span class="n">snow</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="mi">25</span><span class="o">-</span><span class="mf">12.5</span><span class="p">);</span>
<span class="n">snowY</span><span class="p">=(</span><span class="nb">rand</span><span class="p">(</span><span class="n">snow</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="mi">25</span><span class="o">-</span><span class="mf">12.5</span><span class="p">);</span>
<span class="n">snowZ</span><span class="p">=(</span><span class="nb">rand</span><span class="p">(</span><span class="n">snow</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="mi">27</span><span class="p">);</span>
<span class="c">%Note:Some flakes will end up IN the tree but just can't be seen then</span>
<span class="n">plot3</span><span class="p">(</span><span class="n">snowX</span><span class="p">,</span><span class="n">snowY</span><span class="p">,</span><span class="n">snowZ</span><span class="p">,</span><span class="s">'w*'</span><span class="p">)</span><span class="c">%plot coordinates as white snow flakes</span>
<span class="n">hold</span> <span class="n">off</span><span class="c">%Done</span>
<span class="k">end</span> <span class="c">% of function</span>

<span class="c">%% ============= private functions</span>
<span class="k">function</span><span class="w"> </span>r<span class="p">=</span><span class="nf">tree</span><span class="p">(</span>h<span class="p">)</span><span class="c">%Gives a profile for the tree</span>
<span class="k">for</span> <span class="n">cnt</span><span class="p">=</span><span class="mi">1</span><span class="p">:</span><span class="nb">length</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>

<span class="k">if</span><span class="p">(</span><span class="n">h</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span><span class="o">==</span><span class="mi">0</span><span class="p">)</span><span class="c">%no Width at the bottom. Ensures a "closed" trunk</span>
<span class="n">r</span><span class="p">(</span><span class="n">cnt</span><span class="p">)=</span><span class="mi">0</span><span class="p">;</span>
<span class="k">end</span>
<span class="c">%smaller radius for the trunk</span>
<span class="k">if</span> <span class="p">(</span><span class="n">h</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span><span class="o">></span><span class="mi">0</span> <span class="o">&&</span> <span class="n">h</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span><span class="o"><span class="p">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">r</span><span class="p">(</span><span class="n">cnt</span><span class="p">)=</span><span class="mf">1.5</span><span class="p">;</span>
<span class="k">end</span>
<span class="c">%reduce radius gradually from 8 to 0. Note: will only work with a trunk heigth</span>
<span class="c">%of 3 and a whole tree heigth of 25. Scale the height of the tree in</span>
<span class="c">%the "draw tree" section, since the cylinder command will return a 1</span>
<span class="c">%unit high cylinder anyway</span>
<span class="k">if</span><span class="p">(</span><span class="n">h</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span><span class="o">></span><span class="mi">3</span><span class="p">)</span>
<span class="n">r</span><span class="p">(</span><span class="n">cnt</span><span class="p">)=</span><span class="mi">8</span><span class="o">-</span><span class="p">(</span><span class="n">h</span><span class="p">(</span><span class="n">cnt</span><span class="p">)</span><span class="o">-</span><span class="mi">3</span><span class="p">)</span><span class="o">*</span><span class="mf">0.3636</span><span class="p">;</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span> <span class="c">% of function</span>
<span class="c">%Draws a present with the given coordinate + size in a random color</span>
<span class="c">%Note:Given coordinates apply to the lower front + left corner of the</span>
<span class="c">%present (the one closest to the viewer) as seen in the plot</span>
<span class="k">function</span><span class="w"> </span><span class="nf">drawPresent</span><span class="p">(</span>dx,dy,dz,scalex,scaley,scalez<span class="p">)</span><span class="w"></span>
<span class="c">%the standard present coordinates</span>
<span class="n">presentX</span><span class="p">=[</span><span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span> <span class="mi">0</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span> <span class="mi">0</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span> <span class="mi">0</span><span class="p">;</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span><span class="p">];</span>
<span class="n">presentY</span><span class="p">=[</span><span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">0</span><span class="p">;</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span><span class="p">];</span>
<span class="n">presentZ</span><span class="p">=[</span><span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span><span class="p">;</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mi">0</span><span class="p">;</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span> <span class="mf">0.5</span><span class="p">;</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span><span class="p">;</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span> <span class="mi">1</span><span class="p">];</span>
<span class="c">%draw some presents with random colors</span>
<span class="c">%scale present and move it to the right place and get the plot handle</span>
<span class="n">myHandle</span><span class="p">=</span><span class="n">surf</span><span class="p">((</span><span class="n">presentX</span><span class="o">*</span><span class="n">scalex</span><span class="o">+</span><span class="n">dx</span><span class="p">),(</span><span class="n">presentY</span><span class="o">*</span><span class="n">scaley</span><span class="o">+</span><span class="n">dy</span><span class="p">),</span> <span class="p">(</span><span class="n">presentZ</span><span class="o">*</span><span class="n">scalez</span><span class="o">+</span><span class="n">dz</span><span class="p">));</span>
<span class="c">%some random color map</span>
<span class="n">randColorMap</span><span class="p">(:,:,</span><span class="mi">1</span><span class="p">)=</span><span class="nb">repmat</span><span class="p">(</span><span class="nb">rand</span><span class="p">,[</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">]);</span><span class="c">%r component</span>
<span class="n">randColorMap</span><span class="p">(:,:,</span><span class="mi">2</span><span class="p">)=</span><span class="nb">repmat</span><span class="p">(</span><span class="nb">rand</span><span class="p">,[</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">]);</span><span class="c">%g component</span>
<span class="n">randColorMap</span><span class="p">(:,:,</span><span class="mi">3</span><span class="p">)=</span><span class="nb">repmat</span><span class="p">(</span><span class="nb">rand</span><span class="p">,[</span><span class="mi">5</span><span class="p">,</span><span class="mi">5</span><span class="p">]);</span><span class="c">%b component</span>
<span class="c">%Assign colormap just to the plot handle object of the present, so the tree</span>
<span class="c">%does not change color</span>
<span class="n">set</span><span class="p">(</span><span class="n">myHandle</span><span class="p">,</span><span class="s">'CData'</span><span class="p">,</span><span class="n">randColorMap</span><span class="p">)</span>
<span class="n">shading</span> <span class="n">interp</span> <span class="c">%Nice shding + without grid</span>
<span class="k">end</span> <span class="c">% of function</span>
</span></code>
Copy after login
Christmas Tree
R语言 能画,但是这种比较有什么意义呢..................................

如何用数学软件画一个“圣诞树”?
<code class="language-rconsole"><span class="go">L 
<span class="go">    c(0.03,  0,     0  ,  0.1,</span>
<span class="go">        0.85,  0.00,  0.00, 0.85,</span>
<span class="go">        0.8,   0.00,  0.00, 0.8,</span>
<span class="go">        0.2,  -0.08,  0.15, 0.22,</span>
<span class="go">        -0.2,   0.08,  0.15, 0.22,</span>
<span class="go">        0.25, -0.1,   0.12, 0.25,</span>
<span class="go">        -0.2,   0.1,   0.12, 0.2),</span>
<span class="go">    nrow=4)</span>
<span class="go"># ... and each row is a translation vector</span>
<span class="go">B 
<span class="go">    c(0, 0,</span>
<span class="go">        0, 1.5,</span>
<span class="go">        0, 1.5,</span>
<span class="go">        0, 0.85,</span>
<span class="go">        0, 0.85,</span>
<span class="go">        0, 0.3,</span>
<span class="go">        0, 0.4),</span>
<span class="go">    nrow=2)</span>

<span class="go">prob = c(0.02, 0.6,.08, 0.07, 0.07, 0.07, 0.07)</span>

<span class="go"># Iterate the discrete stochastic map </span>
<span class="go">N = 1e5 #5  #   number of iterations </span>
<span class="go">x = matrix(NA,nrow=2,ncol=N)</span>
<span class="go">x[,1] = c(0,2)   # initial point</span>
<span class="go">k 

<span class="go">for (i in 2:N) </span>
<span class="go">  x[,i] = crossprod(matrix(L[,k[i]],nrow=2),x[,i-1]) + B[,k[i]] # iterate </span>

<span class="go"># Plot the iteration history </span>
<span class="go">png('card.png')</span>
<span class="go">par(bg='darkblue',mar=rep(0,4))    </span>
<span class="go">plot(x=x[1,],y=x[2,],</span>
<span class="go">    col=grep('green',colors(),value=TRUE),</span>
<span class="go">    axes=FALSE,</span>
<span class="go">    cex=.1,</span>
<span class="go">    xlab='',</span>
<span class="go">    ylab='' )#,pch='.')</span>

<span class="go">bals 
<span class="go">points(x=x[1,bals],y=x[2,bals]-.1,</span>
<span class="go">    col=c('red','blue','yellow','orange'),</span>
<span class="go">    cex=2,</span>
<span class="go">    pch=19</span>
<span class="go">)</span>
<span class="go">text(x=-.7,y=8,</span>
<span class="go">    labels='Merry',</span>
<span class="go">    adj=c(.5,.5),</span>
<span class="go">    srt=45,</span>
<span class="go">    vfont=c('script','plain'),</span>
<span class="go">    cex=3,</span>
<span class="go">    col='gold'</span>
<span class="go">)</span>
<span class="go">text(x=0.7,y=8,</span>
<span class="go">    labels='Christmas',</span>
<span class="go">    adj=c(.5,.5),</span>
<span class="go">    srt=-45,</span>
<span class="go">    vfont=c('script','plain'),</span>
<span class="go">    cex=3,</span>
<span class="go">    col='gold'</span>
<span class="go">)</span>
<span class="go">dev.off()</span>
</span></span></span></span></code>
Copy after login
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template