เว็บส่งเสริมการเรียนรู้ดีเด่น 2547 (สมาคมผู้ดูแลเว็บไทย)   |   เว็บสื่อวิทยาศาสตร์ดีเด่น 2549 (กระทรวงวิทย์)   |   เว็บการศึกษาที่มียอดผู้เข้าชมสูงสุด 2549, 2550 (TrueHits)
ขอขอบคุณ บริษัท ปตท. จำกัด (มหาชน) และ สสวท ที่ให้การสนับสนุน  
การฝึกเขียนโปรแกรม SciLab ขั้นแนะนำ (โดย MathGuy)
โพสต์เมื่อ: 11:21 วันที่ 30 เม.ย. 2550         ชมแล้ว: 16,242 ตอบแล้ว: 187
น่าจะนับได้ว่า เป็นการนับ 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 ถามในกระทู้นี้นะครับ


MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

จำนวน 184 ความเห็น, หน้า่ | -1- 2| 3| 4| 5| 6| 7| 8| 9| 10|
ความเห็นเพิ่มเติมที่ 1 30 เม.ย. 2550 (15:49)
หน้าตาของโปรแกรม เมื่อ run ในตอนแรก


___________________________________________
scilab-4.1

Copyright (c) 1989-2006
Consortium Scilab (INRIA, ENPC)
___________________________________________



Startup execution:
loading initial environment

-->
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 2 30 เม.ย. 2550 (15:57)
ตัวอย่างการคำนวณอย่างง่าย

-->1+2+3+4+5
ans =

15.

-->1^2+2^2+3^2+4^2+5^2
ans =

55.

-->1*1+2*2+3*3+4*4+5*5
ans =

55.


-->a=7,b=5
a =

7.
b =

5.

-->c=(a+b)*(a-b)
c =

24.

-->a^2-b^2
ans =

24.

-->
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 3 30 เม.ย. 2550 (16:02)
ตัวอย่างการคำนวณกับ array หรือ เวกเตอร์แถว

-->x=[1 2 3 4 5 6 7 8 9]
x =

1. 2. 3. 4. 5. 6. 7. 8. 9.

-->y=10*x
y =

10. 20. 30. 40. 50. 60. 70. 80. 90.

-->y=x.^2
y =

1. 4. 9. 16. 25. 36. 49. 64. 81.


-->z=[5*x; x.^3]
z =

5. 10. 15. 20. 25. 30. 35. 40. 45.
1. 8. 27. 64. 125. 216. 343. 512. 729.

-->
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 4 30 เม.ย. 2550 (16:07)
ตัวอย่าง การวาดกราฟอย่าง่าย

-->x=0:0.1:10
x =


column 1 to 13

0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2

column 14 to 26

1.3 1.4 1.5 1.6 1.7 1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5

column 27 to 39

2.6 2.7 2.8 2.9 3. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8

column 40 to 52

3.9 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1

column 53 to 65

5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4

column 66 to 78

6.5 6.6 6.7 6.8 6.9 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7

column 79 to 91

7.8 7.9 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.

column 92 to 101

9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.

-->plot(x,sin(x))

-->
8080

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 5 30 เม.ย. 2550 (16:12)
-->plot(x,sin(x)+cos(2*x))
8081

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 6 30 เม.ย. 2550 (16:16)
การประมาณค่ารากที่ 2 (อย่างง่าย)

-->function y=MySq(x),
-->a=1,
-->for i=1:10, b=(a+x/a)/2; a=b; end,
-->y=b,
-->endfunction

-->u=[2 3 4 9 100]
u =

2. 3. 4. 9. 100.

-->for i=1:5, v(i)=MySq(u(i)); end

-->v
v =

1.4142136 1.7320508 2. 3. 10.

-->for i=1:5, w(i)=sqrt(u(i)); end

-->w
w =

1.4142136
1.7320508
2.
3.
10.
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 7 30 เม.ย. 2550 (16:21)
ใน คหพ#6 ฟังก์ชัน MySq() เราเขียนขึ้นมาเอง
( เป็นวิธีการที่ใช้กันมากว่า 2000 ปีแล้วเห็นจะได้ ถ้าจำไม่ผิด )

เป็นการคำนวณแบบทำซ้ำ 10 รอบ (ดูแล้วน่าจะพอ)


ตอนท้าย เราเปรียบเทียบผลที่ได้กับ buit-in function คือ sqrt()



คำถาม

มีใครทราบบ้างว่า ในโปรแกรมการคำนวณต่างๆ หรือในเครื่องคิดเลขของเรา
เขาใช้วิธีการอะไร ในการประมาณค่ารากที่สอง

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 8 30 เม.ย. 2550 (23:13)
ขอปรบมือให้ คุณ MathGuy และ โปรแกรม Scilab (ยอดเยี่ยมจริงๆ)

ไหน ๆ ก็คิดจะ"ให้" แล้ว ช่วยแปล สคริปต์ต่อไปนี้เป็นภาษามนุษย์(ไทย)ให้หน่อยครับ

-->function y=MySq(x),
-->a=1,
-->for i=1:10, b=(a+x/a)/2; a=b; end,
-->y=b,
-->endfunction
----------------------------------------
-->u=[2 3 4 9 100]
u = 2. 3. 4. 9. 100.
-->for i=1:5, v(i)=MySq(u(i)); end
-->v
v = 1.4142136 1.7320508 2. 3. 10.
-->for i=1:5, w(i)=sqrt(u(i)); end
-->w
w =1.4142136
1.7320508
2.
3.
10.
np (IP:58.8.92.132)

ความเห็นเพิ่มเติมที่ 9 1 พ.ค. 2550 (13:03)
ดีใจมากครับ ที่คุณ np กรุณาเป็นผู้ช่วยสอน (ผมขออนุญาตแต่งตั้งนะครับ

-->function y=MySq(x),
-->a=1,
-->for i=1:10, b=(a+x/a)/2; a=b; end,
-->y=b,
-->endfunction

บรรทัดแรก : function y=MySq(x),
ตั้งชื่อฟังก์ชันว่า MySq()
ตัวแปร x เป็น input ส่วนตัวแปร y เป็น output
( ใช้ในการนิยามฟังก์ชัน)

บรรทัดที่ 2 : a=1,

จริงๆ ฟังก์ชัน MySq() จะใช้กับ input ที่เป็นจำนวนจริงบวกเท่านั้น
a=1 เป็นค่าประมาณของราก(อย่างง่าย)ค่าแรก

ต่อไปเราจะพิจารณาค่า a กับค่า x/a
ถ้าค่า a ประมาณมากไป ค่า x/a จะเป็นค่าประมาณที่น้อยไป
ในทางกลับกัน
ถ้าค่า a ประมาณน้อยไป ค่า x/a จะเป็นค่าประมาณที่มากไป

ก็เลยหาค่าเฉลี่ย ให้ b=(a+x/a)/2

แล้ว update ค่า a ใหม่ โดยให้ a=b

ซึ่งจะทำซ้ำเช่นนี้ 10 ครั้ง ตาม code

for i=1:10, b=(a+x/a)/2; a=b; end,

ซึ่งเขียนโดยใช้โครงสร้างของ FOR LOOP


เมื่อครบ 10 รอบ ก็ให้ค่า y =b เป็นอันจบครับ (ตามด้วย end function)
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 10 1 พ.ค. 2550 (21:08)
เหมือนเป่าปี่ ใส่หูกระบือเลยครับ
ไม่เป็นไรครับ จะพยายามทำความเข้าใจไปทีละนิดๆ
อันดับแรก ขอถามว่า

for i=1:10 นั้น หมายถึง i เท่ากับ 1 ต่อ 10 ใช่หรือไม่
หรือว่า i เท่ากับ 1 จนกระทั่งถึง 10 เพราะแต่ละภาษาก็เขียนต่างกันไป
np (IP:58.8.95.144)

ความเห็นเพิ่มเติมที่ 11 2 พ.ค. 2550 (12:26)
for i=1:10, ..., end

เป็นการใช้ LOOP ช่วยในการคำนวณครับ
i เป็นตัวนับจำนวนครั้งในการวนลูป

จริงๆ แล้ว for i=1:10
ให้ผลเท่ากับ for i=1:1:10

เลขตัวแรก เป็นค่าเริ่มต้น
เลขตัวกลางเป็น ค่าที่เพิมในแต่ละรอบ (ในที่นี้เพิ่มทีละ 1)
เลขตัวสุดท้าย เป็นค่าที่สิ้นสุด

ถ้าเราเพิ่มค่าทีละ 1 โปรแกรม SciLab อนุญาตให้ละเอาไว้ได้ ไม่ต้องเขียน

ตัวอย่างเพิ่มเติม

-->for i=5:2:13, a((i-3)/2)=i, end
a =

5.
a =

5.
7.
a =

5.
7.
9.
a =

5.
7.
9.
11.
a =

5.
7.
9.
11.
13.

-->

อันนี้แสดงผลในแต่ละรอบที่ได้
ถ้าให้แสดงผลตอนจบทีเดียว เปลี่ยนจาก a((i-3)/2)=i, เป็น a((i-3)/2)=i; ดังนี้

-->for i=5:2:13, a((i-3)/2)=i; end

-->a
a =

5.
7.
9.
11.
13.

-->
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 12 2 พ.ค. 2550 (12:34)
(เพิ่มเติม) ในภาษา C++ จะเขียนแบบนี้ครับ


for (int i=1;i<=10;i++)
{

:

}

หรือ

for (int i=5;i<=13;i=i+2)
{

:

}

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 13 2 พ.ค. 2550 (16:50)
(เพิ่มตัวอย่าง code ในการตรวจสอบการเป็นจำนวนเฉพาะ พร้อมทั้งหา prime factor ตัวแรก
ในกรณีที่เป็นจำนวนประกอบ)


-->function y=MyFactor(x),
-->a=1,
-->b=2,
-->while((b*b)<=x),
-->if ((x-b*int(x/b))==0) then a=b, break; else b=b+1; end,
-->end,
-->y=a,
-->endfunction



-->y1=MyFactor(15)
y1 =

3.

-->y2=MyFactor(49)
y2 =

7.

-->y3=MyFactor(1111)
y3 =

11.

-->y4=MyFactor(11111)
y4 =

41.

-->y5=MyFactor(2549)
y5 =

1.

-->



ถ้า x เป็นจำนวนเฉพาะ ฟังก์ชัน MyFactor(x) จะให้ค่าเท่ากับ 1
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 14 2 พ.ค. 2550 (16:56)
(ตัวอย่าง การวาดกราฟ 3 มิติ)



-->deff('z=MyFn(x,y)','z=x.^2+y.^2')

-->x=-5:0.1:5;

-->y=-5:0.1:5;

-->z=feval(x,y,MyFn);

-->plot3d(x,y,z)

-->

8180

MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 15 2 พ.ค. 2550 (17:15)
ตัวอย่างการใช้ฟังก์ชัน 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.

-->


MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติมที่ 16 3 พ.ค. 2550 (04:37)
ตามไม่ทันเลยครับ หลงทางตั้งแต่แรก
1.ไม่ได้บอก(ตั้งแต่แรก)เลยว่า จะหาโปรแกรมนี้ได้จากที่ไหน
2.จะ Install โปรแกรมอย่างไร
3. จะขียนคำสั่งไว้ที่ไหน หรือใช้ Tools ตัวไหนเขียนคำสั่งต่างๆ ใน word หรือ notepad ได้หรือไม่
4. ส่วนไหน คือคำสั่ง (Script) ที่เขียน ส่วนไหน คือผลที่แสดงออกมา หรือรัน ยังไง
5. การแปลความหมายหรือภาษาของโปรแกรม คำต่อคำ ประโยคต่อประโยค เป็นภาษามนุษย์ ยังไม่ชัดเจน
6. ถ้าเป็นไปได้ลองเขียนในภาษาอื่น เช่น C++, PHP, VBScript, JavaScript เปรียบเทียบกับมาให้ดูบ้าง(เผื่อคนรู้ภาษาใด จะได้ทำความเข้าใจโดยเทียบกับภาษานั้น) โดยทำเฉพาะระยะแรกเท่านั้น พอจับหลักรู้ทางแล้ว ก็ไม่ต้อง
7. จะศึกษาหาความรู้เกี่ยวกับการใช้โปรแกรมนี้(โดยไม่ต้องให้รอป้อนให้ทีละคำ) ได้จากไหน
np (IP:58.8.85.76)

ความเห็นเพิ่มเติมที่ 17 3 พ.ค. 2550 (04:43)
ขอยกเลิกคำถามข้อที่ 7 ของ คหพต.16 ครับ เพราะเจอแล้ว ที่

http://www.champa.kku.ac.th/jeerayut/scilab41/scilab41.html
np (IP:58.8.85.76)

ความเห็นเพิ่มเติมที่ 18 3 พ.ค. 2550 (05:01)
ได้พบแหล่งเรียนรู้(ดังใน คหพต. 17 )แล้ว ลองเข้าไปศึกษาดู(นิดหน่อย) พอที่จะได้คำตอบของ คำถามใน คหพต.16 ได้บ้าง ดังนั้น

ยังไม่ขอยกเลิกคำถามใน คหพต.16 นะครับ ให้เป็นคำตอบเสริม หรือ นึกเสียว่า "คุยกัน" ก็แล้วกัน
np (IP:58.8.85.76)

ความเห็นเพิ่มเติมที่ 19 3 พ.ค. 2550 (05:35)
พบแหล่งเรียนรู้เกี่ยวกับ 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)

ความเห็นเพิ่มเติมที่ 20 3 พ.ค. 2550 (14:12)
เนื้อหาตอนที่ 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
MathGuy เก็บเข้า Contact List ส่ง vSMS
ร่วมแบ่งปันความรู้และความเห็นแล้ว 1775 ครั้ง - ได้รับดาวแล้ว 314 ดวง - โหวตเพิ่มดาว

ความเห็นเพิ่มเติม วิชาการ.คอม

ชื่อ / email:
ข้อความ

รูปภาพ หรือ ไฟล์
กรุณาล๊อกอินก่อน เพื่อโพสต์รูปภาพ และ ใช้ LaTex ค่ะ สมัครสมาชิกฟรีตลอดชีพที่นี่
ตัวช่วย 1: CafeCode วิธีการใช้
ตัวช่วย 2: VSmilies วิธีการใช้
ตัวช่วย 3: พจนานุกรมไทย ออนไลน์ ฉบับราชบัณฑิต
ตัวช่วย 4 : dictionary ไทย<=>อังกฤษ ออนไลน์ จาก NECTEC
ตัวช่วย 5 : ดาวน์โหลด โปรแกรมช่วยพิมพ์ Latex เพื่อแสดงสมการบนวิชาการ.คอม
วิชาการ.คอม

บทความแนะนำ

Blog แนะนำ

Hot Links

ขอบคุณผู้สนับสนุน

Google
 
ติดต่อลงโฆษณา :   คุณอันนา 086 4907600
และ 086 4907585
สำนักงาน :   02 2015735
อีเมล์ :   
Copyright© 2000-2007, Vcharkarn.Com. All rights reserved.
คลิ๊กเพื่อดูสถิติ
รับรองและสนับสนุนโดย

สสวท.

มูลนิธิ พสวท.

พสวท.