|
การฝึกเขียนโปรแกรม SciLab ขั้นแนะนำ (โดย MathGuy)
โพสต์เมื่อ:
11:21 วันที่ 30 เม.ย. 2550 ชมแล้ว:
22,222
ตอบแล้ว:
197
วิชาการ.คอม > ครูอาจารย์
วิชาการ.คอม > ครูอาจารย์ > ครูคุยทั่วไป วิชาการ.คอม > ครูอาจารย์ > การเรียนการสอน วิชาการ.คอม > ครูอาจารย์ > เทคนิควิธีการสอน
น่าจะนับได้ว่า เป็นการนับ 1 ของการที่จะพอมีอะไรแบ่งปันให้กับคนอื่นๆบ้าง ในโลก Internet
จากที่เราได้ใช้ประโยชน์จากแหล่งความรู้ ข้อมูลต่างที่มีประโยชน์ต่อเรา ที่มีคนเสียสละเวลา
เสียสละแรงกายใจ แบ่งปันให้เราได้ใช้ร่วมกัน
เมื่อถึงจุดๆหนึ่ง เราก็น่าจะได้เริ่ม ทดแทนคุณกลับคืนบ้าง (รับมามากแล้ว เราก็ฝึกที่จะให้
)
.........................................................................................................................
กระทู้นี้ จึงเป็นการแบ่งปัน ในเรื่องการฝึกเขียนโปรแกรม SciLab
เข้าไปดูตรงนี้นะครับ : http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html
(1) ถ้ารู้ว่า MatLab, Maple, Mathematica, Maxima, Octave คืออะไร ก็จะรู้ว่า SciLab เป็นพี่น้องกันด้วย
(2) SciLab เป็น Freeware และเข้าใจว่าจะเป็นต่อไปเรื่อยๆ (เช่นเดียวกับ Maxima และ Octave)
(3) ผมเชือว่า SciLab มีความสามารถสูงในการใช้งาน และกำลังจะเข้าไปพิสูจน์ หาคำตอบอันนี้
(4) กระทู้นี้จึงเป็นการเชิญชวน ผู้ที่สนใจ ให้เรียนรู้ไปด้วยกัน
(5) ผู้เรียนควรจะมีพื้นความรู้ทางคณิตศาสตร์ (มัธยมปลายน่าจะ OK) และมีพื้นความรู้ทางการเขียนโปรแกรมคอมพิวเตอร์บ้างพอสมควร (เคยเขียนมาบ้าง ภาษาอะไรก็ได้)
(6) ผมจะแนะนำให้น้อยที่สุด (เท่าที่คิดว่าน่าจะพอเริ่มต้นได้) และจะเน้นการทดลองเขียน การเรียนรู้ด้วยตัวเอง
(7) ถ้ามีผู้ใดที่ใช้โปรแกรมนี้อยู่ และถึงขั้นเชี่ยวชาญแล้ว ก็อยากจะให้มาช่วยๆกัน แลกเปลี่ยนประสบการณ์ครับ
(8) ผู้ที่สนใจ ถ้าได้ทดลองเขียน เรียนรู้ตามไป ถ้าไม่เข้าใจ ก็ให้ post ถามในกระทู้นี้นะครับ
ตัวอย่างการใช้ฟังก์ชัน MyFactor() ที่เขียนก่อนนี้ ในการหาจำนวนเฉพาะทั้งหมดที่มีค่าไม่เกิน 100 -->PM(1)=2; -->count=1; -->for i=3:2:99, if (MyFactor(i)==1) then count=count+1; PM(count)=i; end, end -->PM PM = 2. 3. 5. 7. 11. 13. 17. 19. 23. 29. 31. 37. 41. 43. 47. 53. 59. 61. 67. 71. 73. 79. 83. 89. 97. --> ตามไม่ทันเลยครับ หลงทางตั้งแต่แรก 1.ไม่ได้บอก(ตั้งแต่แรก)เลยว่า จะหาโปรแกรมนี้ได้จากที่ไหน 2.จะ Install โปรแกรมอย่างไร 3. จะขียนคำสั่งไว้ที่ไหน หรือใช้ Tools ตัวไหนเขียนคำสั่งต่างๆ ใน word หรือ notepad ได้หรือไม่ 4. ส่วนไหน คือคำสั่ง (Script) ที่เขียน ส่วนไหน คือผลที่แสดงออกมา หรือรัน ยังไง 5. การแปลความหมายหรือภาษาของโปรแกรม คำต่อคำ ประโยคต่อประโยค เป็นภาษามนุษย์ ยังไม่ชัดเจน 6. ถ้าเป็นไปได้ลองเขียนในภาษาอื่น เช่น C++, PHP, VBScript, JavaScript เปรียบเทียบกับมาให้ดูบ้าง(เผื่อคนรู้ภาษาใด จะได้ทำความเข้าใจโดยเทียบกับภาษานั้น) โดยทำเฉพาะระยะแรกเท่านั้น พอจับหลักรู้ทางแล้ว ก็ไม่ต้อง 7. จะศึกษาหาความรู้เกี่ยวกับการใช้โปรแกรมนี้(โดยไม่ต้องให้รอป้อนให้ทีละคำ) ได้จากไหน np (IP:58.8.85.76) ขอยกเลิกคำถามข้อที่ 7 ของ คหพต.16 ครับ เพราะเจอแล้ว ที่ http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html np (IP:58.8.85.76) ได้พบแหล่งเรียนรู้(ดังใน คหพต. 17 )แล้ว ลองเข้าไปศึกษาดู(นิดหน่อย) พอที่จะได้คำตอบของ คำถามใน คหพต.16 ได้บ้าง ดังนั้น ยังไม่ขอยกเลิกคำถามใน คหพต.16 นะครับ ให้เป็นคำตอบเสริม หรือ นึกเสียว่า "คุยกัน" ก็แล้วกัน np (IP:58.8.85.76) พบแหล่งเรียนรู้เกี่ยวกับ SciLab บ้างแล้ว ที่. . . . http://home.npru.ac.th/~t3058/Scilab.html http://home.npru.ac.th/~t3058/Documents/3.pdf http://topicstock.pantip.com/wahkor/topicstock/2006/11/X4884810/X4884810.html np (IP:58.8.85.76) เนื้อหาตอนที่ 1 : แนะนำโปรแกรม SciLab 1.1 การติดตั้งโปรแกรม Scilab installation on Windows Scilab-4.1 Get the binary file (scilab-4.1.exe) and double click on this file To launch Scilab , go in startup menu and double click on Scilab 4.1 การลงโปรแกรม Scilab บน Windows 1) เข้าไปดาวโหลดไฟล์ scilab-4.1.exe ที่ http://www.scilab.org/ 2) ดับเบิลคลิ๊กไฟล์ดังกล่าวเพื่อทำการติดตั้ง (install) 3) จะได้ icon ของโปรแกรมบนหน้าจอ (desktop) หรือใน startup menu ก็ให้คลิ๊กเพื่อ run หรือ เริ่มต้นเข้าโปรแกรม จะได้หน้าจอเหมือนใน คหพ#1 เนื้อหาตอนที่ 1 : แนะนำโปรแกรม SciLab 1.2 การป้อนคำสั่ง หน้าต่างที่ได้ เมื่อเริ่ม run โปรแกรม (ดู คหพ#1) เป็นหน้าต่างสำหรับป้อนคำสั่ง (command window) โดยป้อนทีละบรรทัด ตรงที่ promt ด้วย --> เมื่อป้อนคำสั่งบรรทัดนั้นเสร็จ ก็เคาะ ENTER เพื่อดูผลลัพธ์ หรือ เพื่อป้อนคำสั่งต่อไป ในตอนเริ่มต้นนี้ เราจะฝึกป้อนคำสั่ง หรือชุดคำสั่ง ทีละบรรทัดแบบนี้ ( ต่อไปเมื่อเราเข้าใจคำสั่งต่างๆดีแล้ว เราจะสร้างและจัดเก็บเป็น script ไฟล์ ) Scilab จะทำหน้าที่เป็น Interpreter ให้เรา (แปลความ ถ้าถูกต้องก็จะทำงานตามนั้นให้เลย) (คำอธิบายเพิ่มเติม) ข้อดีของ SciLab ก็คือ เราสามารถ ป้อนคำสั่ง และได้ผลลัพธ์ของคำสั่งออกมาเลย ในหน้าต่างเดียวกัน ยกเว้นสำหรับตอนวาดกราฟ ซึ่งจะแสดงผลในอีกหน้าต่างหนึ่งแยกต่างหาก (รูปกราฟสามารถ save ไว้เป็นรูปภาพได้) ( ถ้าเป็นการเขียนด้วย Java, C++ เราต้องมีไฟล์ที่เป็น code หรือ source code เช่น mysample.cpp สำหรับ C++ แล้วเราต้องคอมไพล์(compile) ให้ผ่านก่อน จึงจะ run โปรแกรมได้ (มีขั้นตอนการ link ต่างๆ ด้วย) ) เมื่อพอเข้าใจตาม คหพ#20, 21, 22 ได้โปรแกรมแล้ว ลงโปรแกรม run โปรแกรม จนได้หน้าต่างป้อนคำสั่งแล้ว ให้ฝึกป้อนคำสั่งการคำนวณ ตาม คหพ# 2,3,4,5 ขอให้สนุกในการเรียนรู้ และเข้าใจเพิ่มมากขึ้นๆ ตามลำดับ ครับ ได้ผลอย่างไร ก็มาคุยกันต่อนะครับ เพิ่มเติม การแนะนำ SciLab 1.1 What is Scilab (Scilab คือ อะไร ? ) Developed at INRIA, Scilab has been developed for system control and signal processing applications. It is freely distributed in source code format (see the file notice.tex). พัฒนาที่ INRIA โปรแกรม Scilab ถูกพัฒนาขึ้นเพื่อการประยุกต์ใช้ใน ระบบการควบคุม และการประมวรผลสัณญาณ เป็นโปรแกรมที่แจกจ่ายให้ใช้ฟรีโดยไม่มีค่าใช้จ่าย Scilab is made of three distinct parts: an interpreter, libraries of functions (Scilab procedures) and libraries of Fortran and C routines. โปรแกรม Scilab ประกอบด้วย 3 ส่วนที่สำคัญคือ (1) ตัวแปลภาษา (interpreter) (2) ฟังก์ชันการใช้งานต่างๆที่เก็บไว้เป็นเหมือนห้องสมุดของ Scilab เอง (3) ฟังก์ชันการใช้งานต่างๆของภาษา Fortran และ ภาษา C ( Scilab ทำงานร่วมกับ code ในภาษา Fortran และ ภาษา C ได้ ) These routines (which, strictly speaking, do not belong to Scilab but are interactively called by the interpreter) are of independent interest and most of them are available through Netlib. A few of them have been slightly modified for better compatibility with Scilab's interpreter. A key feature of the Scilab syntax is its ability to handle matrices: basic matrix manipulations such as concatenation, extraction or transpose are immediately performed as well as basic operations such as addition or multiplication. จุดเน้นหลักของ Scilab คือ ความสามารถในการดำเนินการ ในการใช้งานกับโครงสร้างของเมตริกซ์ (เหมือนกับ MatLab) Scilab also aims at handling more complex objects than numerical matrices. For instance, control people may want to manipulate rational or polynomial transfer matrices. This is done in Scilab by manipulating lists and typed lists which allows a natural symbolic representation of complicated mathematical objects such as transfer functions, linear systems or graphs (see Section 2.6). โปรแกรม Scilab ยังมุ่งเน้นสำหรับการคำนวณเชิงตัวเลข (Numerical Analysis) การคำนวณกับเมตริกซ์พหุนาม การคำนวณกับโครงสร้าง list การคำนวณเชิงสัญลักษณ์ และโครงสร้างทางคณิตศาสตร์ที่ซับซ้อนอื่นๆ Polynomials, polynomials matrices and transfer matrices are also defined and the syntax used for manipulating these matrices is identical to that used for manipulating constant vectors and matrices. Scilab provides a variety of powerful primitives for the analysis of non-linear systems. Integration of explicit and implicit dynamic systems can be accomplished numerically. The scicos toolbox allows the graphic definition and simulation of complex interconnected hybrid systems. There exist numerical optimization facilities for non linear optimization (including non differentiable optimization), quadratic optimization and linear optimization. Scilab has an open programming environment where the creation of functions and libraries of functions is completely in the hands of the user (see Chapter 3). Functions are recognized as data objects in Scilab and, thus, can be manipulated or created as other data objects. For example, functions can be defined inside Scilab and passed as input or output arguments of other functions. โปรแกรม Scilab ให้สิ่งแวดล้อมของการเขียนโปรแกรมที่สะดวกและง่ายสำหรับผู้ใช้ การสร้างฟังก์ชัน การใช้ฟังก์ชันสามารถใช้ได้อย่างสะดวกและมีประสิทธิภาพ In addition Scilab supports a character string data type which, in particular, allows the on-line creation of functions. Matrices of character strings are also manipulated with the same syntax as ordinary matrices. Finally, Scilab is easily interfaced with Fortran or C subprograms. This allows use of standardized packages and libraries in the interpreted environment of Scilab. The general philosophy of Scilab is to provide the following sort of computing environment: ปรัชญาของการพัฒนาโปรแกรม Scilab To have data types which are varied and flexible with a syntax which is natural and easy to use. To provide a reasonable set of primitives which serve as a basis for a wide variety of calculations. (1) มีโครงสร้างของข้อมูล หรือตัวแปร ที่หลากหลาย ยืดหยุ่น ง่ายต่อการใช้ อย่างเป็นธรรมชาติที่สุด To have an open programming environment where new primitives are easily added. A useful tool distributed with Scilab is intersci which is a tool for building interface programs to add new primitives i.e. to add new modules of Fortran or C code into Scilab. (2) เป็นสิ่งแวดล้อมของการเขียนโปรแกรมที่เปิดรับการทำงานร่วมกับโปรแกรมหรือภาษาอื่นๆ To support library development through ``toolboxes'' of functions devoted to specific applications (linear control, signal processing, network analysis, non- linear control, etc.) The objective of this introduction manual is to give the user an idea of what Scilab can do. On line documentation on all functions is available (help command). (3) เป็นคลังสมุดของเครื่องมือการคำนวณในทางเฉพาะด้านต่างๆ ลองเขียนคำสั่งการหาจำนวนเฉพาะตั้งแต่จำนวนน้อย ถึงจำนวนมาก ให้ดูหน่อยครับ และ ถ้ามีเวลา ลองเขียนคำสั่งตรวจสอบจำนวนที่ป้อนเข้ามาว่าเป็นจำนวนเฉพาะหรือไม่ np (IP:58.8.83.169) มาสมัครเรียนด้วยคนค่ะ น.ส. ไผ่ คิดจะศึกษา(ทุกอย่างที่ขวางหน้า)ไปจนตลอดชีวิตเลยหรือครับ ผมลองเข้าไปดูที่นี่ ได้น้ำได้เนื้อเยอะพอสมควร จึงขอเชิญชวนให้เข้าไป ใครได้เท่าไรเอามาแลกกัน http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html http://home.npru.ac.th/~t3058/Scilab.html http://home.npru.ac.th/~t3058/Documents/3.pdf http://topicstock.pantip.com/wahkor/topicstock/2006/11/X4884810/X4884810.html np (IP:58.8.87.128) ตอบคำถาม คหพต. 27 มีมากมายหลายเรื่องที่ไม่อยากรู้่ ไม่อยากศึกษาค่ะ ขอศึกษาด้วยคน jj (IP:203.114.97.7) ถ้าจะ plot กราฟ จากสมการต้องทำงัยครับ เช่น y=2x^2+4 หรือสมการที่ซับซ้อนกว่านี้ เช่นแบบจำลองทางคณิตศาสตร์...แนะนำด้วยครับ jj (IP:203.114.97.7) จขกท. หายไปไหนเสียแล้ว ก็ไม่รู้ np (IP:58.8.94.184) คุณ MathGuy หายไปไหน ตอบคำถาม คหพต.30 ด้วย np (IP:202.57.178.34) ไปราชการต่างจังหวัดพึ่งจะกลับมาครับ ( พานักเรียนไปแข่งขันโอลิมปิกคณิตศาสตร์ที่โรงเรียนเตรียมทหาร จ.นครนายก ช่วงวันที่ 4-9 พ.ค. นี้ครับ ) ดีใจที่ทั้งคุณ np และ ครูไผ่ (ไม่ได้คุยกันนานเลยนะครับ) ต่างเข้ามาแวะคุย ให้กำลังใจ ................................................................................................................ เข้าเรื่องเลยนะครับ คำถามจาก คหพ#25 "ลองเขียนคำสั่งการหาจำนวนเฉพาะตั้งแต่จำนวนน้อย ถึงจำนวนมาก ให้ดูหน่อยครับ และ ถ้ามีเวลา ลองเขียนคำสั่งตรวจสอบจำนวนที่ป้อนเข้ามาว่าเป็นจำนวนเฉพาะหรือไม่ " ตอบ : จริงๆ ผมได้ทำให้ดูแล้ว ใน คหพ#13 และ คหพ#15 ซึ่งใช้การเขียนฟังก์ชัน MyFactor() คุณ np ลองอ่านดูก่อนนะครับ อยากให้อธิบายเพิ่มเติมตรงไหน พรุ่งนี้จะเพิ่มเติมให้ครับ เกี่ยวกับ คหพ#27 link อันแรก http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html เป็น link ของผมเอง ซึ่ง ภายใน 2-3 วัน นศ. เขาจะมาส่งงานชิ้นแรก และผมก็คงจะได้ update เนื้อหาในสัปดาห์ที่ 1 รวมทั้งเพิ่มเนื้อหาบทที่ 2 ยินดีต้อนรับนักเรียนทุกคน ก็ดูๆ ตอนนี้ผมจะได้นักเรียนแล้ว 3 คน รวมเอาคุณ jj ซึ่งเป็นนักเรียนคนล่าสุด ว่าไปแล้ว จริงๆ ผมเองก็เป็นนักเรียน ดังนั้นขอเรียกตัวเองว่า หัวหน้านักเรียน นะครับ และเราก็จะช่วยกัน เรียนไปด้วยๆกัน พร้อมๆกันนะครับ เนื้อหาช่วงต่อไป ผมว่าจะคุยเกี่ยวกับเรื่อง การวาดกราฟ นะครับ คำถามของคุณ jj "ถ้าจะ plot กราฟ จากสมการต้องทำงัยครับ เช่น y=2x^2+4 หรือสมการที่ซับซ้อนกว่านี้ เช่นแบบจำลองทางคณิตศาสตร์...แนะนำด้วยครับ" ตอบ : เอากราฟอย่างง่ายก่อนนะครับ -->x=-5:0.1:5; -->y=2*x.^2+4; -->plot(x,y) --> (คำอธิบาย) x=-5:0.1:5; กำหนดค่า x จาก -5 ถึง 5 (เพิ่มค่าที่ละ 0.1 ดังนั้นจะมีประมาณ 100 จุด) จริงๆ x ของเรา เป็น เวกเตอร์แถวนะครับ x จะมีค่า(เก็บค่า) ตั้งแต่ -5 -4.9 -4.8 ... ไปจนถึง ... 4.9 5 แล้วเราก็สร้าง y เป็นเวกเตอร์แถวเช่นกัน จากสมการ -->y=2*x.^2+4; เนื่องจากการยกกำลังทำกับสมาชิกแต่ละตัวในเวกเตอร์ เราต้องใช้ ".^" เมื่อได้ข้อมูลใน x และ y ตามที่เราต้องการ ก็สั่ง plot กราฟ ดังนี้ -->plot(x,y) ซึ่งได้ผลดังรูป ![]() คุณ jj ลองดูคำตอบใน คหพ# 33 และจะดูตัวอย่างใน คหพ# ที่ 4 , 5 และ 14 ด้วยก็ได้ครับ ถ้าไม่เข้าใจ หรือต้องการคำอธิบายเพิ่มเติม ก็ถามเพิ่มเติมเข้ามาได้ครับ |
ขอบคุณผู้สนับสนุนHot Links |
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
|
คลิ๊กเพื่อดูสถิติ รับรองและสนับสนุนโดย |
![]() สสวท. |
![]() มูลนิธิ พสวท. |
![]() พสวท. |