ขอต้อนรับ ผู้มาเยือน กรุณา ล็อกอิน หรือ สมัครสมาชิก

ล็อกอินด้วยชื่อผู้ใช้ รหัสผ่่าน และระยะเวลาใช้งาน

 
Advanced search

41616 Posts in 6282 Topics- by 9887 Members - Latest Member: Nature
mPEC Forumบทเรียนการใช้โปรแกรม Mathematica (Moderator: psaipetc)ใครก็ได้ช่วยหนูหน่อยค่ะ หนูอยากรู้ว่ามันคืออะไร
Pages: 1   Go Down
Print
Author Topic: ใครก็ได้ช่วยหนูหน่อยค่ะ หนูอยากรู้ว่ามันคืออะไร  (Read 2979 times)
0 Members and 1 Guest are viewing this topic.
doctorkan
neutrino
*
Offline Offline

Posts: 2


« on: August 14, 2010, 05:10:51 AM »

CountingPaths[k_, n_, nn_, m_, opts___] :=
  Module[{matrix, triangle, path},
   matrix = {{Cos[a], Sin[a]}, {-Sin[a], Cos[a]}} /. a -> Pi/4;
   triangle =
    Partition[Flatten[Table[matrix.{i, j - n}, {j, 0, n}, {i, 0, j}]],
      2];
   path = matrix.# & /@ Prepend[
      Accumulate[{#, # - 1} & /@
        Take[
         Join[
          Table[0, {nn}],
         
          Reverse[Permutations[
             Join[Table[1, {k}], Table[0, {nn - k}]]] ] [[m]]
          ],
         -nn]
       ],
      {0, 0}
      ];
   Graphics[{
     RGBColor[.33, .26, .78], Circle[#, .5] & /@ triangle,
     If[k <= nn && m <= Binomial[nn, k], {RGBColor[1, .47, 0],
       PointSize[.02], Disk[#, .4] & /@ path}, {}],
     Text["A", path[[ 1]] ]
     },
    PlotRange -> All,
    PlotLabel -> If[
      Binomial[nn, k] == 1,
      Style[
       Row[{"\n", Binomial[nn, k], " possible path from A to B"}],
       "Label"],
      Style[
       Row[{"\n", Binomial[nn, k], " possible paths from A to B"}],
       "Label"]
      ], ImageSize -> {500, 372}, opts
    ]
   ];
Manipulate[
 
 m = Max[1, Min[m, Binomial[nn, k]]];
 nn = Min[n, -Round[(Sqrt[2] pt[[2]])]];
 k = Quiet@
   Min[First@
      First[Position[Table[i, {i, -nn, nn, 2}],
        Round[(Sqrt[2] pt[[1]])]]] - 1, nn];
 
 pt = First@
   Nearest[N /@
     Partition[
      Flatten[Table[({{Cos[a], Sin[a]}, {-Sin[a], Cos[a]}} /.
           a -> Pi/4).{i, j - n}, {j, 0, n}, {i, 0, j}]], 2], pt];
 
 
 Column[{LocatorPane[
    Dynamic[pt, (pt =
        First@Nearest[
          N /@ Partition[
            Flatten[
             Table[({{Cos[a], Sin[a]}, {-Sin[a], Cos[a]}} /.
                 a -> Pi/4).{i, j - n}, {j, 0, n}, {i, 0, j}]],
            2], #]) &],
    Dynamic@CountingPaths[k, n, nn, m],
    Appearance -> Text@Style["B", Blue]]}],
 
 
 {{m, 1, "the possible paths"}, 1, Binomial[nn, k], 1,
  Appearance -> "Labeled"},
 {{k, 3}, 0, nn, 1, ControlType -> None},
 {{nn, 6}, 0, n, 1, ControlType -> None},
 {{n, 6, "number of rows n"}, 0, 16, 1, Appearance -> "Labeled"},
 {{pt, {0, -3}}, {-n, -n}, {n, 0}, ControlType -> None},
 SaveDefinitions -> True,
 AutorunSequencing -> {1, 4}]

จากโปรแกรมข้างต้นค่ะ หนูอยากรู้ว่ามันทำอะไร แล้ว output ที่ได้มันคืออะไร
หนูนั่งมองตั้งนานแต่ก็ไม่เข้าใจว่ามันคืออารทำงานของอะไร หรือมันยากเกินไปที่เด็กมัธยมอย่างหนูจะเข้าใจ
ใครสามารถช่วยอธิบายให้หนู้ได้ จักขอบพระคุณอย่างยิ่งค่ะ

ยิ่งอธิบายแต่ละบรรทัดเลย ยิ่งดีค่ะ

Logged
ปิยพงษ์ - Head Admin
Administrator
SuperHelper
*****
Offline Offline

Posts: 6358


มีน้ำใจ ไม่อวดตัว มั่วไม่ทำ


WWW
« Reply #1 on: August 14, 2010, 06:36:38 AM »

มีคำอธิบายอยู่แล้วที่ http://demonstrations.wolfram.com/CountingPathsThroughAGrid/ ซึ่งคิดว่าเป็นที่ ๆ หนูเอามา

"A downward path joins the top spot A to the variable bottom spot B. For a fixed B, there are " _{n}\text{choose}_{k} " = \begin{pmatrix}n \cr k  \end{pmatrix} possible paths, where n is the row number and k counts how far B is along its row, with both n and k starting at zero. These numbers are the binomial coefficients that form Pascal's triangle."

โปรแกรมแสดงเส้นทางจาก B ไป A ว่ามีเส้นทางที่เป็นไปได้กี่เส้นทาง  เมื่อรันโปรแกรม หนูสามารถใช้เมาส์ลากจุด B ไปที่ตำแหน่งต่าง ๆ ได้ รูปของบริเวณที่เป็นไปได้เป็นรูปสามเหลี่ยม จำนวนแถวก็สามารถปรับได้
« Last Edit: August 14, 2010, 07:23:14 AM by ปิยพงษ์ - Head Admin » Logged

มีน้ำใจ ไม่อวดตัว มั่วไม่ทำ
doctorkan
neutrino
*
Offline Offline

Posts: 2


« Reply #2 on: August 15, 2010, 04:32:05 AM »

CountingPaths[k_, n_, nn_, m_, opts___] :=
 Module[{matrix, triangle, path},
  matrix = {{Cos[a], Sin[a]}, {-Sin[a], Cos[a]}} /. a -> Pi/4;
  triangle =
   Partition[Flatten[Table[matrix.{i, j - n}, {j, 0, n}, {i, 0, j}]],
    2];
  path = matrix.# & /@ Prepend[
     Accumulate[{#, # - 1} & /@
       Take[
        Join[
         Table[0, {nn}],
         Reverse[
           Permutations[Join[Table[1, {k}], Table[0, {nn - k}]]] ] [[
          m]]
         ],
        -nn]
      ],
     {0, 0}
     ];

หนูอยากทราบการทำงานของคำสั่งน่ะค่ะ
Logged
ปิยพงษ์ - Head Admin
Administrator
SuperHelper
*****
Offline Offline

Posts: 6358


มีน้ำใจ ไม่อวดตัว มั่วไม่ทำ


WWW
« Reply #3 on: August 15, 2010, 06:29:30 AM »

...

หนูอยากทราบการทำงานของคำสั่งน่ะค่ะ

คงต้องค่อย ๆ พยายามอ่านคู่มือ Mathematica มั๊ง ไล่อ่านคำสั่งทีละตัว เช่น Permutations ใช้ทำอะไร มีพารามิเตอร์กี่ตัว หาอ่านได้จาก Documentation Center ในตัวโปรแกรม Mathematica เอง หรือไปที่เว็บก็ได้: http://reference.wolfram.com/mathematica/ref/Permutations.html
Logged

มีน้ำใจ ไม่อวดตัว มั่วไม่ทำ
Pages: 1   Go Up
Print
Jump to: