|
การฝึกเขียนโปรแกรม SciLab ขั้นแนะนำ (โดย MathGuy)
โพสต์เมื่อ:
11:21 วันที่ 30 เม.ย. 2550 ชมแล้ว:
22,219
ตอบแล้ว:
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 ถามในกระทู้นี้นะครับ
ผมลองให้การบ้านได้มั้ยครับ ลองเขียนฟังก์ชัน MyGCD(n1,n2,n3) สำหรับหา ห.ร.ม. ของจำนวนเต็มบวก 3 จำนวน คือ n1, n2 และ n3 การบ้าน พยายามทำแล้ว หลายครั้งแล้ว แก้แล้วแก้อีก ก็ไม่ได้ ครับ ถ้าเป็นโปรแกรมอื่น ผมใช้วิธี หา หรม.ของ n1 กับ n2 แล้วเก็บไว้ในตัวแปร n12 แล้วจึงหา หรม.ของ n12 กับ n3 อีกครั้งหนึ่ง **************************************************** ผมลองเขียนคำสั่งหา ครน. ได้ดังนี้ function m=LCM(n1,n2), i=1, while(modulo(n1*i,n2)<>0), i=i+1; end, m=n1*i, endfunction LCM(8,24) LCM(9,6) โปรดวิจารณ์และแก้ไขให้กระทัดรัด ใช้ได้กว้างขวาง ไรปัญหา ให้ด้วย np (IP:58.8.85.160) Did you mean to say: LCM(LCM(n1, n2), n3)? or LCM(n1, LCM(n2, n3))? SR (IP:144.138.31.128) โอ คอบคุณม๋าก คุณ เอสอาร์ ผมจะลองอีกดูอีกสักยก np (IP:202.57.149.52) code ของคุณ np ในคหพ#77 ถูกต้อง กระชับดีแล้วครับ ผมขอ copy ลงตรงนี้อีกทีหนึ่ง ........................................................... -->function m=LCM(n1,n2), -->i=1, -->while(modulo(n1*i,n2)<>0), i=i+1; end, -->m=n1*i, -->endfunction -->LCM(3,5) ans = 15. -->LCM(12,18) ans = 36. -->LCM(50,180) ans = 900. --> วันนี้ผมขอแนะนำ คำสัง ที่ทำให้เราเรียนรู้คณิตศาสตร์ได้สนุกมากขึ้น คำสัง Matplot(A) เมื่อ A เป็นเมตริกซ์ โดยสมาชิกมีค่าเป็นจำนวนนับ 1,2,3,4,5,6,7,8 ซึ่งจะใช้เป็น ค่าสี เราจะระบายสีบนตารางขนาด m x n เมื่อ m x n คือ ขนาดของเมตริกซ์ A ( มี m แถว n หลัก) ทดลองดุเลยนะครับ จะแสดงลวดลาย ที่ได้ทำไว้ในคหพ#68 -->for i=1:80, -->for j=1:80, -->A(i,j)=modulo(i*i+j*j,3)+1; -->end, end -->Matplot(A) --> ได้ผลดังนี้ ![]() เปลี่ยนจาก modulo 3 เป็น modulo 7 -->for i=1:80, -->for j=1:80, -->A(i,j)=modulo(i*i+j*j,7)+1; -->end, end -->Matplot(A) --> ได้ผลดังนี้ ![]() เปลี่ยนลวดลาย -->for i=1:80, -->for j=1:80, -->A(i,j)=modulo(i*i+2*j,7)+1; -->end, end -->clf() -->Matplot(A) --> ได้ผลดังนี้ ![]() ลองอีกสักลวดลาย กำลังพยายามหาลายสวยๆ แปลกๆ -->for i=1:50, -->for j=1:50, -->A(i,j)=modulo(abs(3*sin(i)+5*cos(j)),7)+1; -->end, end -->Matplot(A) --> ได้ผลดังนี้ ![]() ค รู ผ่า ย อ ยู่ ห นา ย . . . . . เข้ามาดูหรือยัง ยอดเยี่ยมมากเลยครับ แต่รู้สึกว่าจะเล่นแรงไปหน่อย ของ่ายๆก่อน ได้ไหมครับ เช่น 1. สร้างเส้นตรงที่จุด(x1,y1),(x2,y2) ขนาด Z 2. สร้างรูปสี่เหลี่ยมที่(x1,y1),(x2,y2) ขนาด Z 3. สร้างวงกลมที่จุด(x1,y1),(x2,y2) ขนาด Z 4. สร้างวงกลมที่จุด(x,y) รัศมี rขนาดเส้น z 5. สร้าง จากรายการ 1 - 4 แต่ให้มีสี หรือถ้าเป็นเส้นตรง ก็มีลูกศร 6. สร้างตารางที่ จุด(x1,y1),(x2,y2) ขนาดเส้น Z จำนวน n1 คอลัมน์ n2 แถว มีสีและไม่มีสี 7. สร้างตารางที่ จุดเริ่มต้นที่(x1,y1)แต่ละช่องกว้าง w จำนวน n1 ช่อง สูง h จำนวน n2 ช่อง มีสีและไม่มีสี np (IP:202.57.149.52) จริงๆ มีสีให้เลือกเยอะครับ มาลองดูสี 1 2,3, ..., 25 จากเมตริกซ์ขนาด 5x5 .................................................................................................................. -->A=[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20; 21 22 23 24 25] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. -->Matplot(A) ได้ผลดังนี้ครับ (ผลของ คหพ#ก่อนหน้านี้) ![]() คำถามเกี่ยวกับ การทำกราฟิกพื้นฐาน ของคุณ np ผมขอไปค้นดู (อยู่ใน Help ของ SciLab) คืนนี้ (หรือสุดสัปดาห์นี้) เป็นการบ้านนะครับ ....................................................................... สัปดาห์หน้า ผมจะพยายามแนะนำส่วนที่เกี่ยวกับ graphic หรือ image เพิ่มเติม (พร้อมกับการใช้งาน ที่ควบคุมด้วยการเขียน code! ) ไล่อ่านมาตั้งแต่ คหม#1 ถึงตรงนี้ สนุกครับ ขอร่วมเรียนรู้ด้วยอีกคนครับ หวังว่าไม่ช้าไปนะครับ จะรีบตามคุณ np กับ ครูไผ่ให้ทันครับ ยินดีต้อนรับ AJ Kong ครับ หลายๆคน ช่วยกันเรียนรู้ นับว่าเป็นสิ่งที่ดีครับ ใน คหพ# ที่ผ่านๆมา มีตรงไหนที่ต้องการคำอธิบาย เพิ่มเติม AJ Kong ถามเข้ามาได้เลยนะครับ อยากให้ลองเขียน code ทำการคำนวณอะไรก็โพสต์เข้ามาได้ ณ ขณะนี้ ก็มีผมและคุณ np ที่เป็นตัวหลักที่จะช่วยๆกันครับ ตอบคำถามคุณ np (บางส่วนน้อยๆ .... กำลังศึกษาอยู่ครับ ต้องอดใจรอสักหน่อย)ขอให้ code การทำกราฟิก ที่เป็นการวาดเส้นต่อจุดกัน ผมจะวาดเส้นต่อจุด(ในระนาบ XY) เริ่มจากจุด (1,0) ไป (2,4) ไป (3,0) ไป (0,3) ไป (4,3) แล้วก็กลับมาที่ (1,0) -->xbasc() -->x=[1 2 3 0 4 1]; -->y=[0 4 0 3 3 0]; -->plot2d(x,y) --> ได้ผลดังนี้ครับ ![]() ตัวอย่างเพิ่มเติม -->xbasc() -->x=[1 2 3 2 1]; -->y=[2 3 2 1 2]; -->plot2d(x,y) --> ได้ผลดังนี้ ![]() ตัวอย่างเพิ่มเติม 2 -->x=[1 1 0 0 1 1 2 2 3 3 4 4 5 5 4 4 3 3 2 2 1]; -->y=[1 2 2 3 3 4 4 5 5 4 4 3 3 2 2 1 1 0 0 1 1]; -->plot2d(x,y) -->a=[2 2 3 3 2]; -->b=[2 3 3 2 2]; -->plot2d(a,b) --> ได้ผลดังนี้ ![]() ขออนุญาตให้การบ้านเลยนะครับให้ลองวาดรูป "แปดเหลี่ยม" โดยมีรูป "หกเหลี่ยม" ซ้อนอยู่ข้างใน ........................................................................... โดยใช้การลากเส้นต่อจุดในระนาบ XY อย่างนี้สนุกแน่ ครู ไผ่ อยู่ไหน ช้างตัวใหม่ กำลังจะมา แล้ว np (IP:202.57.149.52) |
ขอบคุณผู้สนับสนุนHot Links |
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
|
คลิ๊กเพื่อดูสถิติ รับรองและสนับสนุนโดย |
![]() สสวท. |
![]() มูลนิธิ พสวท. |
![]() พสวท. |