74
ค่มือโปรแกรมภาษา SCILAB สําหรับผ้เริ่มต้น (ฉบับปรับปรุงใหม่ ) ผศ.ดร.ปิ ยะ โควินท์ทวีวัฒน์ โปรแกรมวิศวกรรมโทรคมนาคม มหาวิทยาลัยราชภัฏนครปฐม

E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

คมอโปรแกรมภาษา SCILAB

สาหรบผเรมตน (ฉบบปรบปรงใหม)

ผศ.ดร.ปยะ โควนททววฒน

โปรแกรมวศวกรรมโทรคมนาคม มหาวทยาลยราชภฏนครปฐม

Page 2: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

สารบญ

บทท 1 ความรเบองตนเก ยวกบโปรแกรม SCILAB.............................................................. 1 1.1 ประวตความเปนมาของโปรแกรม SCILAB.......................................................................... 1 1.2 เรมตนการใชงานโปรแกรม SCILAB .................................................................................... 3

1.2.1 แถบเมนในหนาตางคาสง ................................................................................................ 5 1.3 คาสงพนฐานสาหรบการเรมตนใชงานโปรแกรม SCILAB .................................................. 7 1.4 สรป ....................................................................................................................................... 18 1.5 แบบฝกหดทายบท................................................................................................................. 18

บทท 2 ประเภทของขอมล .................................................................................................. 19 2.1 คาคงทพเศษ ........................................................................................................................... 19

2.1.1 คาคงทพเศษ %i............................................................................................................. 19 2.1.2 คาคงทพเศษ %pi .......................................................................................................... 20 2.1.3 คาคงทพเศษ %e............................................................................................................. 21 2.1.4 คาคงทพเศษ %inf ....................................................................................................... 21 2.1.5 คาคงทพเศษ %nan ....................................................................................................... 21 2.1.6 คาคงทพเศษ %eps ....................................................................................................... 21 2.1.7 คาคงทพเศษ ans .......................................................................................................... 23 2.1.8 คาคงทพเศษ %t, %T, %f, และ %F ............................................................................... 23 2.1.9 คาคงทพเศษ %s และ %z .............................................................................................. 24 2.1.10 คาคงทพเศษ %io ........................................................................................................ 24

2.2 เมทรกซคาคงท ...................................................................................................................... 25

Page 3: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

2.2.1 สเกลาร............................................................................................................................25 2.2.2 เวกเตอร ..........................................................................................................................26 2.2.3 เมทรกซ ..........................................................................................................................29 2.2.4 การหาทรานสโพสเมทรกซ............................................................................................32 2.2.5 การหาดเทอรมแนนต .....................................................................................................32 2.2.6 การหาอนเวอรสการคณของเมทรกซ .............................................................................33 2.2.7 การสลบตาแหนงสมาชกภายในเมทรกซ .......................................................................35

2.3 เมทรกซของสายอกขระ .........................................................................................................37 2.4 พหนาม...................................................................................................................................39

2.4.1 สมการพหนาม................................................................................................................40 2.4.2 เมทรกซพหนาม .............................................................................................................43

2.5 เมทรกซบลน ..........................................................................................................................44 2.6 เมทรกซเลขจานวนเตม ..........................................................................................................44 2.7 ลตซ ........................................................................................................................................46

2.7.1 ลตซแบบธรรมดา ...........................................................................................................47 2.7.2 ไทพลตซ.........................................................................................................................49

2.8 อารเรยหลายมต ......................................................................................................................50 2.9 การตรวจสอบประเภทของขอมล ..........................................................................................52 2.10 ตวอยางการคานวณ ..............................................................................................................56 2.11 สรป ......................................................................................................................................59 2.12 แบบฝกหดทายบท ...............................................................................................................60

บทท 3 ตวดาเนนการทางคณตศาสตร ................................................................................. 63 3.1 ตวดาเนนการเลขคณต............................................................................................................63

3.1.1 การดาเนนการทางคณตศาสตรทเกยวของกบคาคงท .....................................................63 3.1.2 ลาดบความสาคญของการดาเนนการทางคณตศาสตร ...................................................64 3.1.3 การดาเนนการทางคณตศาสตรทเกยวของกบเมทรกซ ..................................................65 3.1.4 การแกระบบสมการเชงเสน ............................................................................................71

Page 4: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

3.1.5 การดาเนนการทางคณตศาสตรทเกยวของกบพหนาม .................................................. 74 3.2 ตวดาเนนการสมพนธและตรรกะ.......................................................................................... 76

3.2.1 ตวดาเนนการสมพนธ .................................................................................................... 76 3.2.2 ตวดาเนนการตรรกะ ...................................................................................................... 77

3.3 ตวดาเนนการระดบบต .......................................................................................................... 80 3.4 ตวอยางการคานวณ ............................................................................................................... 82 3.5 สรป ....................................................................................................................................... 85 3.6 แบบฝกหดทายบท................................................................................................................. 86

บทท 4 ฟงกชนพนฐานทางคณตศาสตร ............................................................................. 89 4.1 ฟงกชนพนฐานทเกยวกบตวเลข ............................................................................................ 89

4.1.1 ฟงกชน abs(x) .......................................................................................................... 89 4.1.2 ฟงกชน sqrt(x) ....................................................................................................... 90 4.1.3 ฟงกชน int(x) .......................................................................................................... 92 4.1.4 ฟงกชน modulo(m,n)............................................................................................. 92 4.1.5 ฟงกชน ceil(x) ....................................................................................................... 93 4.1.6 ฟงกชน floor(x)..................................................................................................... 93 4.1.7 ฟงกชน round(x)..................................................................................................... 93 4.1.8 ฟงกชน fix(x) .......................................................................................................... 93 4.1.9 ฟงกชน rat(x) .......................................................................................................... 94 4.1.10 ฟงกชน sign(x) ..................................................................................................... 95 4.1.11 ฟงกชน roots(x)................................................................................................... 96 4.1.12 ฟงกชน real(x) ..................................................................................................... 96 4.1.13 ฟงกชน imag(x) ..................................................................................................... 96 4.1.14 ฟงกชน conj(x) ..................................................................................................... 96

4.2 ฟงกชนเลขชกาลงและลอการทม .......................................................................................... 97 4.2.1 ฟงกชน exp(x) .......................................................................................................... 97 4.2.2 ฟงกชน log(x) .......................................................................................................... 98

Page 5: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

4.2.3 ฟงกชน log2(x) ........................................................................................................98 4.2.4 ฟงกชน log10(x) .....................................................................................................98

4.3 ฟงกชนตรโกณมต ..................................................................................................................99 4.3.1 ฟงกชน sin(x).........................................................................................................100 4.3.2 ฟงกชน cos(x).........................................................................................................101 4.3.3 ฟงกชน tan(x).........................................................................................................101 4.3.4 ฟงกชน asin(y) ......................................................................................................101 4.3.5 ฟงกชน acos(y) ......................................................................................................102 4.3.6 ฟงกชน atan(y) ......................................................................................................102

4.4 ฟงกชนไฮเพอรโบลก ...........................................................................................................103 4.4.1 ฟงกชน sinh(x) ......................................................................................................104 4.4.2 ฟงกชน cosh(x) ......................................................................................................104 4.4.3 ฟงกชน tanh(x) ......................................................................................................104 4.4.4 ฟงกชน asinh(y) ...................................................................................................105 4.4.5 ฟงกชน acosh(y) ...................................................................................................105 4.4.6 ฟงกชน atanh(y) ...................................................................................................106

4.5 ฟงกชนพนฐานทางสถต ......................................................................................................106 4.5.1 ฟงกชน min(x).........................................................................................................106 4.5.2 ฟงกชน max(x).........................................................................................................108 4.5.3 ฟงกชน mean(x) ......................................................................................................108 4.5.4 ฟงกชน median(x).................................................................................................109 4.5.5 ฟงกชน stdev(x) ...................................................................................................109 4.5.6 ฟงกชน sum(x).........................................................................................................110 4.5.7 ฟงกชน cumsum(x).................................................................................................110 4.5.8 ฟงกชน prod(x) ......................................................................................................111 4.5.9 ฟงกชน cumprod(x) ..............................................................................................111 4.5.10 ฟงกชน sort(x) ....................................................................................................112 4.5.11 ฟงกชน histplot(n,x) ....................................................................................113

Page 6: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

4.5.12 ฟงกชน variance(x)......................................................................................... 113 4.5.13 ฟงกชน geomean(x) ........................................................................................... 114 4.5.14 ฟงกชน harmean(x) ........................................................................................... 115 4.5.15 ฟงกชน nfreq(x)................................................................................................. 115

4.6 เมทรกซพเศษ ...................................................................................................................... 117 4.6.1 เมทรกซเอกลกษณ ....................................................................................................... 117 4.6.2 เมทรกซคาหนง ............................................................................................................ 118 4.6.3 เมทรกซคาศนย ............................................................................................................ 119 4.6.4 เมทรกซสม .................................................................................................................. 119 4.6.5 เมทรกซทแยงมม ......................................................................................................... 121 4.6.6 เมทรกซสามเหลยมดานลาง ......................................................................................... 123 4.6.7 เมทรกซสามเหลยมดานบน ......................................................................................... 124 4.6.8 เมทรกซรปแบบพเศษ .................................................................................................. 124

4.7 ตวอยางการคานวณ ............................................................................................................. 125 4.8 สรป ..................................................................................................................................... 130 4.9 แบบฝกหดทายบท............................................................................................................... 130

บทท 5 การเขยนโปรแกรมดวย SCILAB ......................................................................... 133 5.1 คาสงวนซา ........................................................................................................................... 133

5.1.1 คาสง for.................................................................................................................... 133 5.1.2 คาสง while .............................................................................................................. 135

5.2 คาสงทดสอบเงอนไข .......................................................................................................... 136 5.2.1 คาสง if ...................................................................................................................... 136 5.2.2 คาสง select-case .............................................................................................. 139

5.3 การพฒนาฟงกชน ............................................................................................................... 140 5.3.1 ไฟลสครปตและไฟลฟงกชน ....................................................................................... 140 5.3.2 รปแบบและขอกาหนดในการเขยนไฟลฟงกชน ......................................................... 141 5.3.3 การใชงานคาสง argn................................................................................................ 145

Page 7: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

5.3.4 การเขยนฟงกชนแบบอนไลน ......................................................................................147 5.4 การเขยนไฟลไดอาร.............................................................................................................149 5.5 ความรเพมเตมในการเขยนไฟลฟงกชน ...............................................................................150

5.5.1 การโหลดไฟลฟงกชน ..................................................................................................151 5.5.2 คาสงพนฐานสาหรบการพฒนาฟงกชน .......................................................................151 5.5.3 ขอแนะนาในการพฒนาโปรแกรมใหมประสทธภาพ ..................................................155

5.6 ตวอยางการคานวณ ..............................................................................................................156 5.7 สรป ......................................................................................................................................161 5.8 แบบฝกหดทายบท ...............................................................................................................162

บทท 6 การวาดกราฟดวย SCILAB .................................................................................. 165 6.1 รายละเอยดหนาตางกราฟ ....................................................................................................165 6.2 การวาดกราฟสองมต............................................................................................................168

6.2.1 พนฐานการวาดกราฟสองมต........................................................................................168 6.2.2 การตกแตงรปกราฟ ......................................................................................................179 6.2.3 กราฟเชงขว ...................................................................................................................187 6.2.4 การวาดกราฟสองมตแบบพเศษ ...................................................................................188

6.3 การวาดกราฟสามมต............................................................................................................190 6.3.1 พนฐานการวาดกราฟสามมต ........................................................................................190 6.3.2 กราฟคอนทวร ..............................................................................................................198 6.3.3 การวาดกราฟสามมตแบบพเศษ ...................................................................................200

6.4 การวาดกราฟแบบผสม ........................................................................................................201 6.5 ตวอยางการวาดกราฟ ...........................................................................................................202 6.6 สรป ......................................................................................................................................211 6.7 แบบฝกหดทายบท ...............................................................................................................211

บทท 7 พนฐานระบบอนพตและ เอาตพต .......................................................................... 215 7.1 คาสงพนฐานสาหรบการตดตอระบบอนพตและเอาตพต ....................................................215

7.1.1 คาสง input ...............................................................................................................215

Page 8: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

7.1.2 คาสง file ................................................................................................................. 216 7.1.3 คาสง printf............................................................................................................ 217 7.1.4 คาสง fprintf ......................................................................................................... 220 7.1.5 คาสง scanf .............................................................................................................. 221 7.1.6 คาสง fscanf............................................................................................................ 222 7.1.7 คาสง read ................................................................................................................. 223 7.1.8 คาสง write .............................................................................................................. 224

7.2 ตวอยางการเขยนโปรแกรมเพอ ตดตอระบบอนพตและเอาตพต ......................................... 224 7.2.1 การอานขอมลจากไฟล ................................................................................................ 228 7.2.2 การเขยนขอมลลงในไฟล ............................................................................................ 231

7.3 สรป ..................................................................................................................................... 235 7.4 แบบฝกหดทายบท............................................................................................................... 235

บทท 8 การตรวจสอบหาขอผดพลาดของโปรแกรม ......................................................... 237 8.1 ขนตอนการตรวจสอบหาขอผดพลาด ................................................................................. 237

8.1.1 คาสง setbpt............................................................................................................ 239 8.1.2 คาสง resume และ return ................................................................................... 240 8.1.3 คาสง pause .............................................................................................................. 242 8.1.4 คาสงทนาสนใจ ............................................................................................................ 242

8.2 สรป ..................................................................................................................................... 245 8.3 แบบฝกหดทายบท............................................................................................................... 245

บทท 9 ตวอยางการประยกตใ ชงาน ................................................................................... 247 9.1 การใชงานเวกเตอรและเมทรกซตรรกะ .............................................................................. 247

9.1.1 การใชงานเวกเตอรและเมทรกซตรรกะสาหรบวาดรปกราฟ ...................................... 249 9.2 การดาเนนการเชงสญลกษณ ............................................................................................... 256

9.2.1 ฟงกชน addf, subf, mulf, ldivf, และ rdivf.............................................. 256 9.2.2 ฟงกชน cmb_lin ..................................................................................................... 257 9.2.3 ฟงกชน eval และ evstr ....................................................................................... 258

Page 9: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

9.2.4 ฟงกชน trianfml ...................................................................................................259 9.2.5 ฟงกชน solve ...........................................................................................................259

9.3 ตวคณรวมนอยและตวหารรวมมาก .....................................................................................260 9.3.1 ตวคณรวมนอย .............................................................................................................261 9.3.2 ตวหารรวมมาก .............................................................................................................262

9.4 พหนาม.................................................................................................................................264 9.4.1 การแยกตวประกอบของพหนาม ..................................................................................265 9.4.2 การลดรปพหนาม .........................................................................................................268 9.4.3 คาสงทนาสนใจ ............................................................................................................268

9.5 การหาปรพนธจากดเขต .......................................................................................................273 9.6 การแกสมการอนพนธอนดบหนง ........................................................................................277 9.6 สรป ......................................................................................................................................280 9.7 แบบฝกหดทายบท ...............................................................................................................281

ภาคผนวก ก ....................................................................................................................... 283 ภาคผนวก ข ....................................................................................................................... 285

บรรณานกรม ..................................................................................................................... 291 ประวตผเขยน .................................................................................................................... 293

Page 10: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

บทท 1 ความรเบองตนเกยวกบโปรแกรม SCILAB

ในบทนจะกลาวถงประวตความเปนมาของโปรแกรม SCILAB โครงสรางทวไป และคาสงพนฐาน สาหรบการเรมตนใชงานโปรแกรม SCILAB

1.1 ประวตความเปนมาของโปรแกรม SCILAB SCILAB เปนโปรแกรมภาษาขนสงท ถกพฒนาขนโดย ความรวมมอกนระหวาง นกวจยจากสถาบน Institut National De Recherche En Informatique Et En Automatique (INRIA) และ École

nationale des ponts et chausses (ENPC) ประเทศฝรงเ ศส ตงแตป ค .ศ. 1990 โดยมจดมงหมายเพอใชในการคานวณเชงตวเลขและแสดงผลกราฟรกทซบซอน ดงนนโปรแกรม SCILAB จงเหมาะสาหรบการใชงานทางดานวศวกรรมและวทยาศาสตร นอกจากนโปรแกรม SCILAB ยงเปนโปรแกรมทใหฟร (ไมตองเสยเงนคาลขสทธซอฟตแวร ) และอนญาตใหผใชสามารถนาไปพฒนาตอยอดได ผสนใจสามารถทจะดาวนโหลดตวโปรแกรม SCILAB และขอมลทเกยวของตางๆ ได จากเวบไซต http://home.npru.ac.th/~t3058/Scilab.htm หรอ http://www.scilab.org

สงทสาคญอกประการหนงของโปรแกรม SCILAB กคอความสา มารถในการทางานทใกลเคยงกบโปรแกรม MATLAB1 ซงเปนโปรแกรมทนยมมากสาหรบผใชงานทางดานวศวกรรมและวทยาศาสตร แตคาลขสทธซอฟตแวรของโปรแกรม MATLAB นนมราคาแพง มาก ดงนนในปจจบนนหลายๆ หนวยงานทงภาคอตสาหกรรมและภาคการศกษา ทง ในและนอกประเทศไดเรมนาโปรแกรม SCILAB มาชวยในการทางานและชวยในการเรยนการสอน ทงนเนองจากโปรแกรม 1 ดรายละเอยดของโปรแกรมภาษา MATLAB ไดจากเวบไซต http://www.mathworks.org

Page 11: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

2

SCILAB เปนโปรแกรมทสามารถทางานไดอยางมประสทธภาพ และไมตองเสยเงนคาลขสทธ ซอฟตแวร2 โดยทวไปขอดของโปรแกรม SCILAB สามารถสรปไดดงน งายตอการเรยนร และทาความเขาใจ ขนตอนการเขยนโปรแกรมไมยงยาก มฟงกชน (function) สาหรบการคานวณทางคณตศาสตรจานวนมากพรอมใชงาน มกลองเครองมอ (toolbox) จานวนมากทประกอบดวยฟงกชนตางๆ ทจาเปนสาหรบการแกไข

ปญหาทางดานวศวกรรมและวทยาศาสตร เชน กลองเครอง มอทางดานการควบคมทนทาน (robust control), กลองเครองมอ ทางดานการประมวลผลสญญาณ (signal processing), และกลองเครองมอ ทางดานการหาคาเหมาะทสด (optimization) เปนตน

สามารถประมวลผลขอมลทอยในรปเชงสญลกษณ (symbolic) และขอมลทอยในรปของเมทรกซ (matrix) ไดอยางรวดเรวและมประสทธภาพ

สามารถพฒนาฟงกชนใหมๆ ขนมาใชงานรวมกบโปรแกรม SCILAB ไดโดยงาย สามารถใชงานรวม กบโปรแกรมภาษาฟอรแทรน (FORTRAN), ภาษาซ (C) และภาษา

MATLAB ได สามารถใชงานรวมกบโปรแกรม LabVIEW เพอทาการเชอมตอกบอ ปกรณฮารดแวรได สามารถสรางโปรแกรมสาเรจรปสาหรบการจาลองระบบ (system simulation) ไดโดยใช

เครองมอของโปรแกรม SCILAB ทเรยกวา “scicos” สามารถนาไปพฒนาตอยอดได เนองจากมรหสตนฉบบ (source code) และคมอ การใชงานให

ซงสามารถดาวนโหลดไดจากเวบไซต http://www.scilab.org

จากทกลาวมาขางตนนจะเหนไดวาโปรแกรม SCILAB สามารถทางานไดมากมายหลายรปแบบ อยางไรกตาม หนงสอเลมนจะอธบายเฉพาะพนฐานการใชงานทวไปของโปรแกรม SCILAB เพอใหผอานสามารถนาไปใชงา นไดอยางถกตองและรวดเรว พรอมทง เปนแนวทางใหผอานนาโปรแกรมน ไปประยกตใชงานขนสงตอไป ถามโอกาสผเขยนกหวงวาจะไดเขยนหนงสอเกยวกบการใชงานขนสง ของโปรแกรม SCILAB เชน วธการใชงานรวมกบโปรแกรม ภาษาซ, วธการใชงานรวมกบ 2 นอกจากนยงมโปรแกรมอนๆ อกทใหฟร (freeware) และทางานคลายกบโปรแกรม SCILAB เชน โปรแ กรม Octave (http://www.octave.org) และโปรแกรม Rlab (http://rlab.sourceforge.net) เปนตน แตจากทขาพเจาไดศกษาคนควาขอมลของโปรแกรมเหลานดพบวา โปรแกรมภาษา SCILAB สามารถทางานไดอยางรวดเรวและมประสทธภาพมากทสด

Page 12: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

3

โปรแกรม LabVIEW, วธการใชงาน scicos, และการประยกตใชโปรแกรม SCILAB ในการแกไขปญหาทาง ดานวศวกรรม เปนตน

สาหรบโปรแกรม SCILAB ททางสถาบน INRIA และ ENPC พฒนาขนมานสามารถ นาไปใชงานไดในหลายระบบปฏบตการ ไดแก ระบบปฏบตการลนกซ (GNU/Linux), ระบบ ปฏบตการวนโดวส (Windows2000/XP/VISTA), ระบบปฏบตการ HP-UX, และระบบปฏบตการ Mac OS X เปนตน โดยหนงสอเลมนจะอางองถง โปรแกรม SCILAB เวอรชน 4.1.1 (เรมตนใชงานเมอวนท 9 พฤษภาคม พ.ศ. 2550) ททางานบนระบบปฏบตการวนโดวส อยางไรกตาม สาหรบผใชงานโปรแกรม SCILAB เวอรชนอนหรอททางานบนระบบปฏบตการอน กยงสามารถใชหนงสอเลมนในการศกษาและทาความเขาใจถงลกษณะการใชงานของโปรแกรม SCILAB ดวยตนเองได ทงนเนองจากรปแบบการใชงานของคาสงตางๆ รวมถงหลกการเขยนโปรแกรม SCILAB ยงคงมลกษณะเหมอนกนในทก เวอรชนและทกระบบปฏบตการ3

1.2 เรมตนการใชงานโปรแกรม SCILAB การเรยกใชงานโปรแกรม SCILAB ใหเรยกจากไฟลทชอวา “WScilex.exe” ซงอยใน สารบบ (directory) “SCIDIR\bin\WScilex.exe” โดยการกดดบเบลคลกทชอไฟลน เมอ SCIDIR คอชอสารบบทตดตงโปรแกรม SCILAB โดยหนาตางแรกทจะถกแสดงขนมา กคอ “หนาตางคาสง (command window)” ตามรปท 1.1 หนาตางนจะเปนสวนทผใชจะ ทาการปอนคาสงตางๆ ลงไป เพอทาการคานวณ และเปนสวนทแสดงผลลพธออก ทางหนาตางคาสง โดยทเครองหมาย SCILAB prompt “-->” เปนตวบอกวาโปรแ กรม SCILAB พรอมทจะรอรบคาสง ณ จดน

จากรปท 1.1 พบวาโปรแกรม SCILAB ไดเตรยมแถบเครองมอ (toolbar) ทรวมฟงกชนทใชงานบอยไวทหนาตางคาสงใน รปของสญรป (icon) ตามทแสดงในรปท 1.1 ขางใตแถบเมน

(menu bar) นนคอ โดยสญรปแตละอนมความหมายดงตอไป น

(New Scilab) สรางหนาตางคาสงข นมาใหมอกหนาตางหนง

(Open Scipad) เรยกใชงานโปรแกรมเอดเตอร (editor) ทชอวา “SciPad” ขนมา ตาม รปท 1.2 เพอใชสาหรบเขยนหรอแกไขโปรแกรม 3 ผใชสามารถดาวนโหลดตวโปรแกรม SCILAB สาหรบระบบปฏบตการตางๆ ไดจาก http://www.scilab.org

Page 13: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

4

รปท 1.1 หนาตางคา สงของโปรแกรม SCILAB

รปท 1.2 หนาตาง เอดเตอรทชอ “SciPad” ของโปรแกรม SCILAB

(Open file) เรยกไฟลทมอยในสารบบขนมาใชงาน

(Copy) สาเนาขอมลในสวนทผใชเลอกในหนาตางคาสง

(Paste) นาขอมลทสาเนาไวมาวางในหนาตาง คาสง

Page 14: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

5

(Change Directory) เปลยนสารบบทกาลงทางาน 4 (working directory)

(Scilab Output) เรยกหนาตางทชอวา “Console scilab” ขนมาใชงาน

(Choose Font …) เลอกลกษณะของตวอกษรทจะใชในหนาตางคาสง

(Print) พมพขอมลในหนาตางคาส งออกทางเครองพมพ (printer)

(Scilab Help) เรยกหนาตางใหความชวยเหลอทชอวา “Scilab Browse Help” ขนมา

ใชงานเพอคนหาขอมล (มผลลพธเชนเดยวกบการปอนคาสง help ในหนาตางคาสง )

1.2.1 แถบเมนในหนาตางคาสง หนาตางคาสงของโปรแกรม SCILAB จะประกอบไปดวยเมนหลกหลายๆ เมน ซงมรายละเอยด ดงตอไปน

เมน File ประกอบไปดวย

New SCILAB สรางหนาตางคาสงขนมาใหมอกหนาตางหนง Exec … ประมวลผลชดคาสงจากไฟล ซงโดยทวไปจะเปนไฟลทปดทายดวย .sci หรอ .sce Open … เรยกไฟลทมอยในสารบบขนมาใชงาน

Load … เรยกขอมลทบนทกไวในไฟลกลบมาใชงาน ซงโดยทวไปจะ เปนไฟล ทปดทายดวย .sav หรอ .bin Save … บนทกขอมลของตวแปรตางๆ เขาไปเกบไวในไฟลทกาหนด

Change Directory เปลยนสารบบทกาลงทางา น Get Current Directory แสดงสารบบทกาลงทางานอย ณ ขณะนน

Print Setup … กาหนดคา พารามเตอรตางๆ ของเครองพมพ

Print … พมพขอมลออกทางเครองพมพ Exit ปดหนาตางคาสง

4 สารบบทกาลงทางาน คอ สารบบทโปรแกรม SCILAB กาลงทางานอย ณ ขณะนน กลาวคอเปนสารบบท โปรแกรม SCILAB จะทาการคนหาไฟลตางๆ หรอบนทกไฟลลงไป เกบไว

Page 15: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

6

เมน Edit ประกอบไปดวย

Select All เลอกขอมลทงหมดในหนาตางคาสง

Copy สาเนาขอมลในสวนทผใชเลอกในหนาตางคาสง

Paste นาขอมลทสาเนาไวมาวางในหนาตางคาสง

Empty Clipboard ลบขอมลทสาเนาไว History เรยกคาสงทเคยใช ในหนาตางคาสง ขนมาใชงานใหม

เมน Preferences ประกอบไปดวย

Language เลอกภาษาทจะใชในหนาตางคาสง (องกฤษหรอฝรงเศส ) Color เลอกสของตวอกษร (text) และสของพนหลง (background) ทตองการ ใชในหนาตางคาสง

Toolbar เปดหรอปดแถบเครองมอ

ทแสดงในหนาตางคาสง Files Association กาหนด ประเภทของไฟลทจะใชในหนาตางคาสง Choose Font เลอกลกษณะของตวอกษรทตองการจะใชในหนาตางคาสง Clear History ลบคาสงตางๆ ทเคยใชในหนาตาง คาสง ทาใหไมสามารถ เรยกใชงาน คาสงเหลานนโดยใชเมนยอย History และแปนลด (hot key) ได Clear Command Window ลบขอความทงหมดท ปรากฎในหนาตางคาสง แลวใหเครองหมาย SCILAB prompt “-->” ไปปรากฎอยทบรรทดแรกสดของ หนาตางคาสง Console เรยกหนาตาง Console scilab ขนมาใชงาน

เมน Control ประกอบไปดวย

Resume เรยกใชคาสง resume ของโปรแกรม SCILAB

Abort เรยกใชคาสง abort ของโปรแกรม SCILAB

Interrupt Ctrl+C หยดการประมวลผลชวคร าว (เทยบเทากบ การกดปม Ctrl+C)

เมน Editor

เปนการเรยกใชคาสง scipad เพอทาการเรยกหนาตางเอดเตอร SciPad ขนมา (ตามรปท 1.2) เพอใชในการเขยนหรอแกไขโปรแกรม

Page 16: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

7

เมน Applications ประกอบไปดวย

Scicos เรยกใชคาสง scicos ของโปรแกรม SCILAB

EditGraph เรยกรปกราฟทเกบไวมาทาการปรบปรงหรอแกไข

m2sci เรยกใชคาสง mfile2sci เพอทาการแปลง M-file (ไฟลฟงกชน 5 ของโปรแกรม MATLAB) ใหเปนไฟลฟงกชนของ โปรแกรม SCILAB

ทเรยกวา “SCI-file”

Browser Variables เรยกใชคาสง browsevar ของโปรแกรม SCILAB เพอดวา ณ ตอนนมตวแปรอะไรบางทไดมการสรางขน หรอมการเรยกใชงานในหนาตางคาสงทกาลงใชงานอย

เมน ? ประกอบไปดวย

Scilab Help F1 เรยกหนาตาง Scilab Browse Help ขนมาใชงาน Configure กาหนดรปแบบของหนาตาง Scilab Browse Help ทตองการจะใชงาน

ในโปรแกรม SCILAB

Scilab Demos เรยกดตวอยางการใชงานชดคาสงตางๆ ทโปรแกรม SCILAB ไดจด เตรยมไวให

Web Links เปดใชงานเวบไซตทเกยวของกบโปรแกรม SCILAB About เรยกดขอมลทวไปของโปรแกรม SCILAB เชน เวอรชนของโปรแกรม SCILAB ทกาลงใชงานอย (เทยบเทากบการปอน คาสง about ท หนาตางคาสง )

1.3 คาสงพนฐานสาหรบการเรมตนใชงานโปรแกรม SCILAB โดยทวไป การเรยนรวธการใชงานโปรแกรมตางๆ นนไมยาก ถาผอาน ศกษาคมอการใชงานของโปรแกรมทตองการเรยนร พรอมทง ทดลองทาตามตวอยางทงหมดทปรากฎอยในคมอการใชงานของโปรแกรม เลมนน ดงนนรปแบบการอธบายหลกการใชงานโปรแก รมภาษา SCILAB ของหนงสอเลมนจะเนน การใชตวอยางประกอบคาอธบายเปนหลก เพอใหผอานสามารถเขาใจ ลกษณะการใชงานคาสงตางๆ ไดอยางรวดเรวและมประสทธผล 5 ศกษารายละเอยดเกยวกบไฟลฟงกช น (file function) ไดในหวขอท 5.3

Page 17: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

8

ในสวนนจะ อธบายถงคาสงพนฐานสาหรบการเรมตนใชงานโปรแกรม SCILAB เพอเปนแนวทางสาหรบการเรยนรในบทตอ ไป เรมตนจะขอแสดงการกาหนดคาคงทใหกบตวแปร เชน ถาตองการกาหนดใหตวแปร x มคาเทากบคา 5 จะตองปอนคาสงลงในหนาตางคาสงดงน

-->x = 5

เมอกดปม Enter หนาตางคาสงจะแสดงผลลพธเปน

x =

5.

-->

นนคอ โปรแกรม SCILAB จะแสดงผลลพธ x = 5 ออกมาทหนาตางคาสง พรอมทงแสดงเครองหมาย SCILAB prompt “-->” เพอรอรบคาสงตอไป

ในกรณทไมตองการใหโปรแกรม SCILAB แสดงผลลพธออกทางหนาตางคาสง กใหใส เครองหมายเซมโคลอน (semi-colon) “;” ปดทายคาสงนน กอนกดปม Enter เชน ถาตองการกาหนดใหตวแปร y มคาเทากบคา 3 โดยไมตองแสดงผลลพธออกทาง หนาตางคาสง กสามารถทาไดโดยปอนคาสงดงน

-->y = 3;

-->

เมอกดปม Enter โปรแกรม SCILAB กจะไมแสดงผลลพธออกทาง หนาตางคาสง แตจะปรากฎเครองหมาย SCILAB prompt “-->” แทน

หมายเหต ขอควรระวงในการกาหนดชอของตวแปรมดงน

โปรแกรม SCILAB จะพจารณาถงความแตกตางของ ตวอกษรตวพมพใหญ (capital letter) กบอกษรตวพมพเลก ซงโปรแกรม SCILAB จะถอวาตวแปรทมชอเหมอนกน แตใชตวอกษรตางกน จะเปนตวแปรคนละตวกน ดงนนควรหลกเลยงการ กาหนด ชอตวแปรทเหมอนกน

ชอของตวแปรจะตองเรมดวยตวอก ษรและมความยาวไดทงหมดไมเก น 24 ตวอกษร ทงนอาจจะ ใชตวเลขหรอสญลกษณ underline “_” (สญลกษณอนหามใช) ชวยในการกาหนดชอของ ตวแปรกได

Page 18: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

9

break abort pause exit error quit if then else for while end return resume function who whos help sin cos tan atan exp log min max median stdev det eye

รปท 1.3 ตวอยางชอทเปนคาสาคญใน โปรแกรม SCILAB

ชอของตวแปรทกาหนดขนมาจะตองไมซากบชอเฉพา ะหรอคาสาคญ (key word) ทใชใน

โปรแกรม SCILAB เชน ชอคาสง และชอฟงกชน เปนตน ดงตวอยางทแสดงในรปท 1.3 สาหรบตวเลขทมจานวนเกนสหลก เชน ตวเลขหาพน “5,000” เวลากาหนดคานใหกบต วแปร

จะตองไมใสเครองหมายคอมมา (comma) คนระหวางเลข หากบเลขศนย มฉะนน แลวโปรแกรม SCILAB จะเขาใจวาเปนเลขสองชดคอ คา 5 กบคา 0 ตวอยาง เชน

-->x = [5,000]

x =

5. 0. //ตวแปร x เปนเวกเตอรทมขอมลสองตวคอ คา 5 กบคา 0

-->x = [5000]

x =

5000. //ตวแปร x เปนสเกลารทมคาเทากบ 5000

หมายเหต ในโปรแกรม SCILAB เครองหมาย double slash “//” หรอเครองหมายคอมเมนต (comment) ทปรากฎอยในชดคาสงน จะเปนเครองหมายทจะบอกใหโปรแกรม SCILAB ไมทาการประมวลผล ตอคาสงหรอขอความทอย หลงเครองหมายคอมเมนตน ประโยชนของ เครองหมายคอมเมนตกเพอเปนการเขยนคา อธบายตางๆ ภายในตวโปรแกรมทพฒนาขน มาเพอ เปนการเตอนความจาของผเขยนถงขนตอนการทางา นของตวโปรแกรม ซงจะทาใหงาย ตอการ เขาใจและแกไขโปรแกรมในภายหลง เชนเดยวกนกบผ ทนาโปรแกรมทพฒนาขนมา นไปใชงาน กสามารถเขาใจถงตวโปรแกรมได โดยงาย

ในกรณทตองการทราบวา ณ ขณะนมตวแปรอะไรบางทไดมการสรางขนหรอทไดมกา รเรยกใชงานในหนาตางคาสงทใชงานอยหรอทเรยกวา “พนทใชงาน (workspace)” สามารถทาไดโดยการใชคาสง who หรอ whos โดยทเมอใชคาสง who จะไดผลลพธเปน

Page 19: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

10

-->who

your variables are...

x scipad y scicos_pal %scicos_menu

%scicos_short %scicos_help %scicos_display_mode

modelica_libs scicos_pal_libs %helps WSCI home

SCIHOME PWD TMPDIR MSDOS SCI guilib

sparselib xdesslib percentlib polylib intlib

elemlib utillib statslib alglib siglib optlib autolib

roblib soundlib metalib armalib tkscilib tdcslib s2flib

mtlblib %F %T %z %s %nan %inf

COMPILER %gtk %gui %pvm %tk $ %t

%f %eps %io %i %e

using 16563 elements out of 5000000.

and 58 variables out of 9231

your global variables are...

LANGUAGE %helps demolist %browsehelp LCC

%toolboxes %toolboxes_dir TMPDIR

using 1185 elements out of 11000.

and 8 variables out of 767

ซงจะพบวามตวแปร x และ y รวมอยในผลลพธดวย ทงนเนองจาก ไดมการกาหนดคา ของตวแปร x และ y ไวกอนการเรยกใชคาสง who นอกจากนยงพบตวแปรอนอกดวย ไดแก scipad,

scicos_pal, %scicos_menu, %help, และ MSDOS เปนตน ซงเปนตวแปรทโปรแกรม SCILAB ไดทาการโหลด (load) เขาไปเกบไวในหนวยความจา ของเครองคอมพวเตอรโดยอตโนมตตงแตเรมเปดเรยกใช งานโปรแกรม SCILAB โดยทตวแปรเหลานจะ เกยว ของกบค าเรมตนของโปรแกรม เชน ไลบราร (library), คาโดยปรยาย (default) ตางๆ ของสารบบ, เดโม (demo), และคาคงทพเศษ 6 เปนตน

ในขณะทการใชคาสง whos จะใหผลลพธทแสดงขอมลมากกวาการใชคาสง who เชน บอกวาตวแปรแตละตวเปนขอมลประเภท (type) ใด, มขนาดเทาใด , และใชหนวยความจากไบต (byte) ในการเกบตวแปรตวนน ๆ ดงแสดงในตวอยาง ตอไป น

6 คาคงทพเศษของ โปรแกรม SCILAB จะเปนตวอกขระทเรมตนดวยเครองหมายเปอรเซนต “%” (สาหรบรายละเอยดเพมเตมของคาคงทพเศษนจะมอธบายในหวขอท 2.1)

Page 20: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

11

-->whos

Name Type Size Bytes

whos function 8512

x constant 1 by 1 24

scipad function 14312

y constant 1 by 1 24

scicos_pal string 12 by 2 2048

%scicos_menu list 2440

%scicos_short string 12 by 2 408

%scicos_help sch ? 62440

%scicos_display_mode constant 1 by 1 24

modelica_libs string 1 by 3 528

scicos_pal_libs string 1 by 11 376

%helps *string 28 by 2 16

WSCI string 1 by 1 144

home string 1 by 1 144

SCIHOME string 1 by 1 224

PWD string 1 by 1 144

TMPDIR string 1 by 1 200

MSDOS boolean 1 by 1 16

SCI string 1 by 1 112

guilib library 288

sparselib library 280

xdesslib library 3176

percentlib library 13120

polylib library 880

intlib library 1368

elemlib library 2024

utillib library 4688

statslib library 1280

alglib library 1336

siglib library 1768

optlib library 608

autolib library 2144

roblib library 1192

soundlib library 464

metalib library 3928

armalib library 488

tkscilib library 848

[More (y or n ) ?]

นอกจากนยง สามารถทจะตรวจสอบดไดวา ขอมลแตละตวทใชเปนขอมลประเภทใดโดยใชคาสง typeof (ดรายละเอยดการใชงานคาสงนไดในหวขอท 2.9)

Page 21: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

12

ถาตองการทจะทราบเพยงวาม ตวแปรอะไรบางทไดถกสรางขนมา โดยผใช กสามารถทา ไดโดยการใชคาสง who_user ซงจะใหผลลพธดงน

-->who_user

User variables are:

whos x scipad y modelica_libs

using 2925 elements out of 4984207

ผลลพธทแสดงออกมามตวแปร x, y, scipad, และ whos ปรากฎอยดวย เนองจากมการกาหนด คาตวแปร x และ y และมการเรยกใชคาสง scipad และ whos กอนทจะทาการเรยกใชคาสง who_user สวนคาสง who ทไดมการเรยกใชกอนหนานโปรแกรม SCILAB ไมถอวาเปน ตวแปร ในทานองเดยวกนตวแปร modelica_libs ถอวาเปนคาเรมตนของโปรแกรม SCILAB

ในกรณทตองการทราบวาคาสงแตละคาสง ทาหนาทอะไร และมลกษณะการเรยกใชงานอยางไร กสามารถทาไดโดยการใชคาสง help เชน ถาตองการทราบวาคาสง who มหนาทอะไร กใหปอนคาสงดงน

-->help who

เมอกดปม Enter กจะปรากฎหนาตาง Scilab Browse Help ขนมา ตามรปท 1.4 ซงจะแสดงขอความอธบายรปแบบการใชงานของคาสง who จะเหนไดวาคาสง help มประโยชนมากสาหรบการเขยนโปรแกรม เพราะวาคาสงแตละคาส งมลกษณะการเรยกใชงานทตางกน นอกจากน คาสงหนงคาสงอาจจะมรปแบบการใชงานหลายแบบกได ดงนนผใช จะตองศกษาลกษณะการใชงานคาสง ตางๆ ใหเขาใจเพอทจะไดสามารถนาคาสงเหลานน มาใชงานไดอยาง ถกตอง และตรงตามความตองการของงานประยกต (application) ทกาลงพฒนา

หากตองการทราบวาโปรแกรม SCILAB ไดเตรยมฟงกชนอะไรไวใหบางใน แตละไลบราร กสามารถทาไดโดยการพมพชอไลบราร นนลงทหนาต างคาสงแลวกด Enter เชน ถาตองการทราบวา ไลบรารสาหรบฟงกชนพนฐาน (elementary function) มฟงกชน อะไรบาง กใหปอนคาสงดงน

Page 22: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

13

รปท 1.4 หนาตาง Scilab Browse Help ของโปรแกรม SCILAB

-->elemlib

elemlib =

Functions files location :SCI\macros\elem\

asinh asinhm acosh acosm acoshm atanm asinm

atanhm atanh binomial convertindex cellstr cell2mat

cosh cothm cosm coshm cotg coth cat

complex erf erfc erfcx fix factor

factorial GLoad isempty intersect interpln

inttrap integrate intsplin isnan isinf intc

intl ind2sub isvector iscellstr interp1 logm

log10 lex_sort log2 modulo meshgrid null nextpow2

num2cell pertrans pmodulo permute perms primes

squarewave sqrtm spzeros speye smooth signm

setdiff sinc sub2ind sinh sinhm sinm sprand

toeplitz tanm tanhm tanh union unique

vectorfind

หรอถาตองการทราบวาไลบรารสาหรบการประมวลผลสญญาณ (signal processing) มฟงกชนอะไรบาง กใหปอนคาสงดงน

Page 23: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

14

-->siglib

siglib =

Functions files location :SCI\macros\signal\

%asn analpf bilt buttmag casc cepstrum cheb1mag

cheb2mag chepol convol cspect czt dft detrend

ell1mag eqfir eqiir faurre findm find_freq

frfit frmag fsfirlin ffilt fftshift fft2 group

hank hilb iir iirgroup iirlp iirmod intdec

ifft jmat %k kalm lattn lev levin

lgfft lindquist mese mfft mrfit phc

pspect remezb %sn system sskf sincd srfaur

srkf trans wigner wiener wfir window yulewalk

zpch1 zpbutt zpell zpch2

ผลลพธทไดจะบอกวาไลบรารนอยท สารบบใด (เมอ SCI คอสารบบทเกบโปรแกรม SCILAB ไว) พรอมทงแสดงฟงกชนทงหมดทมอยใน สารบบน ในทางกลบกนถาหากตองการทราบวา ฟงกชน น อยใน ไลบรารใด กสามารถทาไดโดยใชคาสง whereis ตามตวอยางตอไปน

-->whereis('log10')

ans =

elemlib

-->whereis('convol')

ans =

siglib

ในกรณทตองการจะบนทกขอมลของตวแปรตางๆ เขาไปเกบไวในไฟล กสามารถทาไดโดยการใชคาสง save ซงมรปแบบการใชงาน คอ

save('filename', [list_of_variables])

เมออนพตอารกวเมนต (input argument) หรอตวแปรสงผาน filename คอชอไฟลทใชในการเกบขอมลของตวแปรซงจะตองเขยนใหอยภายในเครองหมาย single quote “'...'” หรอเครองหมาย double quote “"..."” โดยจะตองระบเสนทาง (path) ของไฟลทจะบนทกขอมลให

Page 24: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

15

ชดเจนดวย7 ถาหากไมระบเสนทางทจะบนทกไฟล โปรแกรม SCILAB กจะทาการบนทกไฟลน ไวในสารบบทกาลงทางานอย ณ ขณะนนโดยอตโนมต สวนอนพตอารกวเมนตทอยในเครองหมาย วงเลบเหลยม (square brackets) “[]” คอพารามเตอรทเปนตวเลอก8 (option) ของคาสงนน โดยในทนคอ list_of_variables ซงจะเปนชอของตวแปรทตองการจะบนทกขอมลเขาไปเกบไวในไฟล ถาไมไดระบพารามเตอร list_of_variables โปรแกรม SCILAB จะทาการบนทกขอมลของตวแปรทกตวทใชในหนาตางคาสง เขาไปเกบไวในไฟล ตวอยางการใชงานคาสง save เชน

-->x = 5; y = 3; //กาหนดคาตวแปร x = 5 และ y = 3

-->save('test.dat',x); //บนทกขอมลเฉพาะของตวแปร x ลงไปในไฟลชอ test.dat -->clear; //ลบตวแปรทงหมดทเคยสรางขนมา -->x

--error 4

undefined variable : x //บอกวาไมมขอมลของตวแปร x อยในโปรแกรม SCILAB

ชดคาสงน จะทาการบนทกขอมลของตวแปร x ลงไปในไฟลชอ test.dat แลวเกบไวใน สารบบ ทกาลงทางาน จากนนกทาการลบตวแปรทงหมดท เคยสรางขน ออกจากหนวยความ จาของโปรแกรม SCILAB โดยใชคาสง clear9 ดงนนเมอ ทาการตรวจสอบดวา ณ ขณะน ตวแปร x มคาเปนอะไร กจะพบวาไมมขอมลของตวแปร x ปรากฎอยในโปรแกรม SCILAB

ถาตองการทราบวา ณ ตอนนโปรแกรม SCILAB ทางานอยบนระบบ MSDOS (เชน ระบบปฏบตการวนโดวส) หรอไม ก สามารถตรวจสอบไดโดยใชคาสง MSDOS ดงน 7 เชน ถาตองการบนทกขอมลของตวแปรทกตวลงในไฟลชอ test.dat และเกบไวในสารบบ “C:\SCIDIR” กใหใชคาสงดงน

-->save('C:\SCIDIR\test.dat')

8 พารามเตอรทเปนตวเลอกจะมหรอไมม ในคาสง กได เนองจากโดยทวไปจะมก ารกาหนดคาโดยปรยาย (default

value) ของพารามเตอรทเปนตวเลอกไวใหเรยบรอยแลว

9 ถาตองการลบขอมลของตวแปรบางตวกสามารถทาไดโดยการระบชอตวแปรนนๆ ตามหลงคาสง clear เชน ถาตองการลบขอมลเฉพาะของตวแปร y กทาไดโดยการใชคาสง

-->clear y;

Page 25: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

16

-->MSDOS

MSDOS =

T

ผลลพธทไดคอ T หรอเปนจรง (True) ซงหมายความวาโปรแกรม SCILAB กาลง ทางานอยบนระบบ MSDOS จรง ในกรณทตองการทราบวาโปรแกรม SCILAB กาลงทางานอย ในสารบบใด กสามารถตรวจสอบไดโดยใชคาสง pwd ดงน

-->pwd

ans =

C:\Documents and Settings\User

ผลลพธทไดบอกใหทราบวา สารบบทกาลงทางานคอ “C:\Documents and Settings\User” ซงหมายความวาเมอใชคาสง save('test.dat') ตามตวอยางทผานมา ไฟล test.dat กจะถกนาไปเกบไวใน สารบบน ในกรณทตองการเปลยนสารบบทกาลงทางานใหเปน สารบบอน กสามารถทาไดโดยการใชคาสง chdir เชน ถาตองการเปลยนสารบบทกาลง ทางานใหเปนสารบบ “C:\” กทาไดโดยใชคาสงตอไปน

-->chdir('C:\'); //เปลยนสารบบทกาลงทาง านใหเปนสารบบ “C:\”

-->pwd

ans =

C:\

ขอใหยอนกลบมาทสารบบทกาลงทางานเปน “C:\Documents and Settings\User” เนองจากไฟล test.dat อยทสารบบน ดงนนถาตองการเรยกตวแปรทเกบไวในไฟล test.dat กลบมาใชงาน กสามารถทาไดโดยการใชคาสง load ซงมรปแบบการใชงาน คอ

load('filename')

โดยพารามเตอร filename คอชอไฟล (จะตองระบเสนทางของไฟลทตองการเรยกมาใชงานใหถกตองครบถวน) ภายในเครองหมาย '…' หรอเครองหมาย "…" ตวอยางเชน

Page 26: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

17

-->load('test.dat'); //เรยกตวแปรทเกบไวในไฟล test.dat ในสารบบทกาลง

-->x //ทางานกลบมาใชงาน x =

5.

-->y

--error 4

undefined variable : y

หลงจากใชคาสง load แลวจะพบวา คราวนผใชสามารถนาคาของตวแปร x มาใชงานไดแลว แตไมสามารถนาคาของตวแปร y มาใชงานได เนองจากไฟล test.dat ไมไดเกบขอมลของ ตวแปร y ไว

หากตองการลบคาสงและ ขอความทงหมดท ปรากฎบนหนาตางคาสง แลวใหเครองหมาย SCILAB prompt “-->” ไปปรากฎอยทบรรทดแรกสดของหนาตางคาสง กสามารถทาไดโดยใชคาสง clc ซงยอมาจากคาวา “Clear Command Window” (แตคา ของตวแปรตางๆ ทผใชกาหนดไวยงสามารถเรยกใชงานได ) และในกรณทตองการเลกใชงานโปรแกรม SCILAB กใหทาการปดหนาตางคาสงโดยการใชคาสง quit หรอ exit

สดทายนจะขอกลาวถงเครองหมายขนบรรทดใหม “...” ซงมลกษณะเปนจดทเรยงตอกนสามจด เครองหมายนมประโยชนมากในการเขยนโปรแกรมโดยเฉพาะอยางยงเมอคาสงทใชม ความยาวมาก เครองหมายนเอาไวใชตอทายคาสง เพอบอกโปรแกรม SCILAB วาคาสงในบรรทด นนยงไมสนสด ดงนน ถงแมวาจะ กดปม Enter หลงเครองหมายจดสามจดน โปรแกรม SCILAB กจะยงไมนาคาสงนนไปประมวลผล แตจะรอรบขอมลสวนทเหลอทจะเขยนตอไปในบรรทดใหม จนกระทงหมดคาสงแลวกดปม Enter อกครง จากนนโปรแกรม SCILAB จงจะเอาขอความทงหมดมารวมกนเปนประโยคคาสงเดยวแลว คอย นาเอาไปประมวลผล ใหพจารณาตวอยางตอไป น จะไดเขาใจถงลกษณะการทางานของเครองหมายขนบรรทดใหม

-->x = 5;

-->y = 3;

-->z = x + y //หาผลบวกของตวแปร x กบตวแปร y z = //แลวนาผลลพธทไดไปบรรจไวในตวแปรใหมทชอตวแปร z 8.

Page 27: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

18

-->z = x + ... //หมายถงยงไมสนสดคาสง โปรแกรม SCILAB จะยงไมนาขอมลนไปประมวลผล

-->y //เมอกดปม Enter กถอวาเปนการสนสดคาสงทปอนจากบรรทดกอนหนาน

z = //โปรแกรม SCILAB จะนาคาสงทงหมดคอ z = x + y ไปประมวลผล 8.

จะเหนไดวาผลลพธทได มคาเทากน

1.4 สรป ในบทนไดกลาวถงประวตความเปนมาและ การใชงานคาสงพนฐานทวไป ของโปรแกรม SCILAB

เพอเปนแนวทางเบองตน ในการเรยนรในบทตอๆ ไป เนองจากโปรแกรม SCILAB เปนโปรแกรมทใหฟรและอนญาตใหผใชสามารถนาไปพฒนาตอยอดได ดงนนโปรแกรม SCILAB จงถอไดวา เปนทางเลอกใหมของผทตองการจะ ใชงานโปรแกรมทมความสามารถในการคานวณทางเชงตวเลขและแสดงผลกราฟรกทซบซอน เพอใชในการแกไขปญหาทางดานวศวกรรมและวทยาศาสตร ไดอยางรวดเรวและมประสทธภาพ เชนเดยวกนกบโปรแกรม MATLAB

1.5 แบบฝกหดทายบท 1.1 จงอธบายคณสมบตของโปรแกรม SCILAB

1.2 จงเปรยบเทยบขอแตกตางระหวางโปรแกรม SCILAB และโปรแกรม MATLAB

1.3 จงเปรยบเทยบขอแตกตางระหวางคาสง who และคาสง whos

1.4 จงอธบายหนาทการทางานของคาสง who_users

1.5 จงทดสอบการใชงานคาสง save และคาสง load

1.6 จงอธบายหนาทการทางานของคาสง clear

Page 28: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

บทท 6 การวาดกราฟดวย SCILAB การทางานในดานตางๆ หลงจากททาการวเคราะหขอมล เสรจแลว ขนตอนตอไปกคอการนาเสนอ ผลงานวจยหรอผลการทดลองทไดมา ซงโดยทวไป แลวมกจะแสดงผลในรปของรปกราฟ (graph) เชน แผนภม กราฟแทง และกราฟเสน เปนตน เนองจากสอความหมายใหเขาใจไดโดยงาย ดงนนในบทนจะขออธบายถงหลกการวาดกราฟโดยใชโปรแกรม SCILAB ทงทเปนแบบสองมตและสามมต

6.1 รายละเอยดหนาตางกราฟ เมอใชคาสงในการวาดกราฟ โปรแกรม SCILAB จะทาการสรางหนาตางกราฟ (graphics window) ขนมาใหมทชอวา “SCILAB Graphic (j)” เพอแสดงผลของกราฟทวาดขนมา โดยท j เปนเลขจานวนเตมทมากกวาหรอเทากบศนย ซงแสดงถงหมายเลขของหนาตางกราฟ ดงแสดงในรปท 6.1 ซงในทน j มคาเทากบคา 0 จะหมายความวาหนาตางททางานอย (active window) ขณะนคอ หนาตางกรา ฟหมายเลขศนย จากรปท 6.1 หนาตางกราฟจะมแถบเมน (menu bar) อยหน งแถบ ประกอบไปดวยสามเมนหลก คอ เมน File, Tools และ Edit โดยทแตละ เมนหลกจะมเมนยอย ตามทแสดงในรปท 6.2 ซงรายละเอยดของแตละเมนหลกสามารถอธบายไดดงตอไปน

เมน File ประกอบไปดวย New … สรางหนาตางกราฟใหมขนมา

Load … เปดรปภาพทบนทกไวในไฟลตามรปแบบ (format) ของโปรแกรม SCILAB (โดยทวไปจะเปนไฟลทปดทายดวย .scg)

Page 29: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

166

รปท 6.1 ตวอยางหนาตางกราฟทใชแสดงผลรปภาพของโปรแกรม SCILAB

รปท 6.2 รายละเอยดของเมนหลกแตละอนในหนาตางกราฟ

Save … บนทกรปกราฟลงไปเกบไว ในไฟลตามรปแบบของโปรแกรม SCILAB (โดยทวไป จะเปนไฟลทปดทายดวย .scg)

Export บนทกรปกราฟลงไปในไฟลทเปนรปแบบเฉพาะ (specific format) เชน Postscript, Xfig, GIF, BMP, และ PPM เปนตน

Page 30: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

167

Copy to clipboard สาเนารปกราฟเพอนาไปวาง (paste) ไวในทอน

Print Setup … กาหนดคา พารามเตอรตางๆ ของเครองพมพ

Print พมพรปกราฟออกทางเครองพมพ

Close ปดหนาตางกราฟ ททางานอย

เมน Tools ประกอบไปดวย

ToolBar เปดหรอปดแถบเครองมอทใชในการเรยกดภาพหรอแกไขภาพ ตาม ท แสดงในรปของสญรป (icon) ทงหา ตวบนมมบนซายของหนาตางกราฟ

นนคอ

Zoom ขยายขนาดของรปกราฟเฉพาะสวนทตองการ สามารถทาไดโดย การใชเมาส (mouse) เลอนเคอรเซอร (cursor) ไปทสญรปน แลวกด คลกหนงครง จากนนกใชเมาสเลอนเคอรเซอรมายงตาแหนงแรกท ตองการจะขยายรปกราฟ กดคลกหนงครง แลวกใชเมาสเลอน เคอรเซอร เคอรเซอรไปยงตาแหนงสดทายทตองการจะขยายรปกราฟ แลวกดคลก อกหนงครง กจะไดรปกราฟในสวนทตองการขยายตามทตองการ

UnZoom ทาใหรปกราฟทไดจากการขยาย กลบไปเปนรปกราฟเหมอนเดม กอนทจะทาการขยาย

2D/3D Rotation หมนรปกราฟใหอยในตาแหนงและลกษณะทตองการ

Graphical Editor เปดหนาตางเอ ดเตอรเพอใชในการจดรปแบบการแสดงผลของ รปกราฟ เชน กาหนดชอเสนแกน x และเสนแกน y, เปลยนรปแบบ ของเสนกราฟ, และเปลยนสของกราฟ เปนตน

Entity Picker เปดและปดการเลอกตาแหนงของรปกราฟเพอทาการแกไข

เมน Edit ประกอบไปดวย Select figure as current สารองไวใชในโปรแกรม SCILAB เวอรชนถดไป Redraw figure สารองไวใชในโปรแกรม SCILAB เวอรชนถดไป Erase figure ลบรปกราฟทแสดงอยในหนาตางกราฟ

Page 31: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

168

Figure properties เปดหนาตางเอดเตอรเพอใชในการ จดรปแบบการแสดงผล ของรปกราฟเมนยอย นจะมประโยชนมาก โดยเฉพาะในกรณ ทผใชไมสามารถจดจาคา พารามเตอรตางๆ ทใชในคาสง สาหรบจดรปแบบการแสดงผลของรปกราฟ Current axes properties เปดหนาตางเอดเตอรเพอ แสดงสถานะของเสนแกน (axes) ทใชอยในหนาตางกราฟ

Start entity picker เรมตนการเลอกตาแหนงของรปกราฟเพอทาการแกไข

Stop entity picker หยดการเลอกตาแหนงของรปกราฟเพอทาการแกไข

6.2 การวาดกราฟสองมต ในสวนนจะอธบายถงพนฐานในการวาดกราฟสองมต และคาสง ตางๆ ทใชในการวาดกราฟสองมต พรอมทงแสดงตวอยา งการวาดกราฟสองมตแบบตางๆ

6.2.1 พนฐานการวาดกราฟสองมต สมการคณตศาสตรแบบสองตวแปรใดๆ สามารถทจะแสดงใหอยในรปของกราฟสอง มตได เพอใชแสดงความสมพนธของตวแปรทงสอง การวาดกราฟสองมตในโปรแกรม SCILAB นนไมยาก เพยงแตจะตองเขาใจถงรปแบบของขอมลทจะตองปอนใหกบคาสง วาดกราฟตางๆ กอน คาสงพนฐานสาหรบการวาดกราฟสองมตบนระบบพกดฉาก x-y คอคาสง plot ซงมรปแบบการเรยกใชงาน ดงน

plot(x, y)

โดยตวแปรหลกทจะตองปอนใหกบคาสง plot ประกอบดวยเวกเตอรสองชด คอ เวกเตอร x ซงเปนตวแปรอสระทกาหนดคาในเสนแกน x และเวกเตอร y ซงเปนตวแปรตามทกาหนดคาใน เสนแกน y (โดยทเวกเตอร y จะตองมขนาดเทากนกบเวกเตอร x เสมอ) นอกจากนคาสง plot ยงสามารถทจะถกเรยกใชงานไดในอกรปแบบหนง คอ

plot(y)

Page 32: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

169

ซงในกรณนโปรแกรม SCILAB จะสมมตวาพารามเตอร x มคาเทากบคา 1 ถงจานวนสมาชกทงหมด ของเวกเตอร y นนคอ x = 1:length(y) โดยอตโนมต

ตวอยางท 1 จงวาดกราฟของรปสญญาณไซนซอยด (sinusoid waveform) ตามสมการ y = sin(2πft)

สาหรบเวลาท t = 0 ถง 2 วนาท ถากาหนดใหค วามถ f = 1 เฮตรซ (Hertz)

วธทา จากโจทยสามารถเขยนเปนชดคาสงของโปรแกรม SCILAB ไดดงน

-->t = 0:0.01:2;

-->f = 1;

-->y = sin(2*%pi*f*t);

-->plot(t, y)

-->xtitle('A sinusoidal wave','Time (t)','Amplitude')

คาสงแรกเปนการกาหนดใหตวแปร t ใหมคาอยระหวาง 0 ถง 2 โดยทสมาชกแตละตวทอยตดกน จะมคาหางกนคงทเทากบ 0.01 (ขนาดของตวแปร t คอ 1×201) จากนนกกาหนดคาความถ f ใหเทากบหนง แลวกหาคาของสญญาณ y โดยคา y ทหามาไดจะมขนาดเทากบตวแปร t จากนนกสงใหวาดกราฟข นมาซงผลลพธทไดจะเปนกราฟตามรปท 6.3 สวนคาสง xtitle เปนคาสงทใชในการกาหนดชอของกราฟ , ชอของเสนแกน x, และชอของเสนแกน y

ในกรณทพารามเตอร y เปนเมทรกซ สมาชกทงหมดในแตละแนวตงของเมทรกซ y จะ

ถกนามาใชวาดกราฟแตละเสน ดงตวอยาง ตอไปน

-->clf; t = 0:0.01:2; //คาสง clf ทาหนาทลบรปกราฟในหนาตางกราฟ

-->f = 1;

-->y = [sin(2*%pi*f*t)' cos(2*%pi*f*t)'];

-->plot(t, y) //วาดกราฟสองเสนพรอมกน

-->xtitle('Two sinusoidal waves', 'Time (t)', 'Amplitude')

โดยผลลพธทไดเปนไปตามรปท 6.4

Page 33: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

170

รปท 6.3 สญญาณไซนซอยด y = sin(2πft)

รปท 6.4 สญญาณ sin(2πft) และ cos(2πft)

Page 34: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

171

คาสงวาดกราฟสองมตอก รปแบบหนงทนาสนใจ กคอ

plot2di([x], y, [options])

ซงมทงหมด 4 รปแบบตามทกาหนดโดยคาพารามเตอร i ดงน

1) ไมม i วาดกราฟเชงเสนโดยใชสเกลแบบธรรมดาหรอสเกลแบบลอการทม (logarithm scale)

2) i = 2 วาดกราฟขนบนได (step function) 3) i = 3 วาดกราฟแทง (vertical bar) 4) i = 4 วาดกราฟเชงเสนโดยใชลกศร (arrow) แสดงทศทางของเสนโคง (curve)

ตวอยางเชน

-->clf; t = (1:0.2:7)';

-->subplot(2, 2, 1); //รป 6.5 ดานบนซาย

-->plot2d(t, [1.5+0.2*sin(t) 2+cos(t)]);

-->xtitle('Plot2d - Piecewise linear');

-->subplot(2, 2, 2); //รป 6.5 ดานบนขวา

-->plot2d2(t, [1.5+0.2*sin(t) 2+cos(t)]);

-->xtitle('Plot2d2 - Piecewise constant');

-->subplot(2, 2, 3); //รป 6.5 ดานลางซาย

-->plot2d3(t, [1.5+0.2*sin(t) 2+cos(t)])

-->xtitle('Plot2d3 - Vertical bar plot')

-->subplot(2, 2, 4); //รป 6.5 ดานลางขวา

-->plot2d4(t, [1.5+0.2*sin(t) 2+cos(t)]);

-->xtitle('Plot2d4 – Arrow-style plot')

ซงจะไดผลลพธตามรปท 6.5 จะเหนไดวาชดคาสงขางตน มการเรยกใชคาสง subplot(m,n,i) เพอชวยทาใหสามารถวาดกราฟไดหลาย ๆ กราฟในหนาตางกราฟเดยวกน โดยคาสง subplot

Page 35: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

172

รปท 6.5 ตวอยางรปกราฟแบบตางๆ ทไดจ ากการใชคาสง plot2di

จะทาหนาทในการแบงหนาตางกราฟออกเปนเมทรกซขนาด m×n (m แถว และ n แนวตง ) สาหรบหนาตาง กราฟยอยแตละอน โดยหนาต างกราฟยอยอนท i (เมอ i = 1, 2, ..., m*n) จะเปนหนาตาง กราฟยอยทถกเรยกใชงาน

พารามเตอร x ในคาสง plot2di คอ ตวแปรอสระทกาหนดคาในเสนแกน x ซงจะมหรอไมมกได ในขณะทพารามเตอร y จะตองอยในรปของเมทรกซ ทมขนาด nc×nl เมอ nc คอจานวนจดทจะวาดกราฟในแตละเสนกราฟ ซงจะตองมคาเทากบจานวนสมาชกของพารามเตอร x และ nl คอจานวนเสนกราฟทจะวาด ในกรณทเปนการวาดกราฟเพยงหนงเสนกสามารถทจะกาหนดใหพารามเตอร x และ y เปนเวกเตอรแถวหรอเวกเตอรแนวตง กได ซงจะใหผลลพธออกมาเทากน เชน คาสง plot(t, cos(t)), plot(t', cos(t)'), หรอ plot(t, cos(t)') จะใหผลลพธเหมอนกน

Page 36: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

173

ตารางท 6.1 การกาหนดลกษณะของจดบนเสนกราฟ style = [j] ลกษณะของจด คาอธบาย

j = 0 . จด (point) j = -1 + บวก (plus) j = -2 × กากบาท (x-mark) j = -3 วงกลมบวก (plus-circle) j = -4 ♦ สเหลยมรปเพชรแบบทบ (black diamond) j = -5 สเหลยมรปเพชรแบบธรรมดา (diamond) j = -6 Δ สามเหลยมชขน (triangle up) j = -7 สามเหลยมชลง (triangle down) j = -8 สเหลยมรปเพชรบวก (plus-diamond) j = -9 ○ วงกลม (circle)

สวนพารามเตอร options จะมหรอไมมกได แตถามการเรยกใชงาน options จะมลกษณะการใชงานดงน

options = [style, axesflag, leg, rect, logflag, nax, frameflag]

โดยท

style มลกษณะการใชงานคอ style = [j] เมอคาของพารามเตอร j จะเปนตวกาหนดรปแบบของเสนกราฟแบบตางๆ ดงแสดงในตารางท 6.1 ตวอยางการใชงานเชน

-->x = 0:0.1:5; //เวกเตอร x มขนาด 1×51

-->u = [-0.8+sin(x); -0.4+sin(x); sin(x); ...

-->0.4+sin(x); 0.8+sin(x)]'; //เมทรกซ u มขนาด 51×5

-->plot2d(x, u, style=[-9, -7, -5, -3, -1])

-->x = 0:0.2:5; //เวกเตอร x มขนาด 1×26

-->y = [1.4+sin(x); 1.8+sin(x)]'; //เมทรกซ y มขนาด 26×2

-->plot2d(x, y, style=[-4, -6])

Page 37: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

174

รปท 6.6 ตวอยางรปกราฟแสดงการใชพารามเตอร style ในคาสง plot2d

ตารางท 6.2 ตวอยางการกาหนดลกษณะของสเสนกราฟ style = [j] สของเสนกราฟ

j = 1 สดา (black) j = 2 สนาเงน (blue) j = 3 สเขยว (green) j = 4 สไซแอน (cyan) เขยวผสมนาเงน j = 5 สแดง (red) j = 6 สมวงแดงเขม (magenta) j = 7 สเหลอง (yellow) j = 8 สขาว (white)

ผลลพธทไดแสดงในรปท 6.6 แตถาพารามเตอร j เปนเลขจานวนเตมบวก ผลลพธทไดจาก การใช style = [j] จะกลายเปนการกาหนดส ของเสนกราฟตามทกาหนดใน ตารางท 6.2 ตวอยางเชน

-->x = linspace(-2*%pi, 2*%pi, 100)'; -->plot2d(x, [sin(x), cos(x)], style=[1, 5]);

Page 38: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

175

รปท 6.7 ตวอยางรปก ราฟแสดงการใชคาสงกาหนดส ของเสนกราฟ

ตารางท 6.3 การกาหนดลกษณะของเสนแกนในหนาตางกราฟ axesflag = [j] คาอธบาย

j = 0 ไมตองแสดงเสนแกน (ทงเสนแกน x และเสนแกน y)

j = 1 แสดงเสนแกนพรอมขอมลของเสนแกน โดยทเสนแกน y จะแสดงอยทางดานซาย (คาโดยปรยาย )

j = 2 แสดงเสนแกน แตไมตองแสดงขอมลของเสนแกน j = 3 แสดงเสนแกนพรอมขอมลของเสนแกน โดยทเสนแกน y จะแสดงอยทางดานขวา j = 4 แสดงเสนแกน ณ ตาแหนงกงกลางของกรอบ (frame) รปภาพ

j = 5 เปนการกาหนดใหเสนแกน x และเสนแกน y จะตองตดกนทจด (0,0) ถาจด (0,0) ไมไดอยในกรอบรปภาพ เสนแกนจะไมแสดงออกมา

โดยคาสง linspace(vmin, vmax, num) จะเปนการแบงคาสงสด vmax กบค าต าสด vmin เปนจานวน num ตว ผลลพธของชดคาสงนแสดงในรปท 6.7 ซงจะไดกราฟสองเสน เสนหนงมสดา (สาหรบ j = 1) และอกเสนหนงมสแดง (สาหรบ j = 5)

axesflag มลกษณะการใชงานคอ axesflag = [j] โดยทคาของพารามเตอร j จะเปนตวกาหนด ลกษณะของเสนแกนในหนาตางกราฟ โดยมรปแบบตางๆ ตามทแสดงในตารางท 6.3 ตวอยางการใชงาน พารามเตอร axesflag มดงน

Page 39: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

176

รปท 6.8 ตวอยางรปกราฟแสดงการใชพารามเตอร axesflag ในคาสง plot2d

-->clf; x = 0:0.2:5;

-->y = [1.4+sin(x); 1.8+sin(x)]';

-->subplot(1,2,1); plot2d(x, y, style=[1,-4], axesflag=[0])

-->subplot(1,2,2); plot2d(x, y, style=[1,-4], axesflag=[2])

ผลลพธทไดแสดงในรปท 6.8

leg ใชในการใสขอความบรรยาย (description) เสนกราฟแตละเสน ซงมลกษณะการใชงาน คอ leg = "description 1 @description 2 @ ..." โดยทขอความทอยภายในเครองหมาย "..." จะใชบรรยายเสนกราฟแตละเสน และขอความบรรยายเสนกราฟแตละเสนจะถกคนดวย เครองหมาย @

rect ใชกาหนดขนาดของ กรอบรปภาพซงมลกษณะการใชงาน คอ rect = [xmin, ymin,

xmax, ymax] โดยท xmin และ xmax ใชกาหนดคาตาสดและคาสงสดของเสนแกน x ในขณะท ymin และ ymax ใชกาหนดคาตาสดและค าสงสดของเสนแกน y ตามลาดบ สาหรบตวอยางการใชงาน พารามเตอร leg และ rect มดงน

-->clf; x = 0:0.2:5;

-->y = [1.4+sin(x); 1.8+sin(x)]';

-->plot2d(x, y, style = [-2 -9], leg = "X-mark curve@Circle ...

-->curve", rect = [0.5,0,4.5,3]);

ซงผลลพธทไดแสดงในรปท 6.9

Page 40: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

177

รปท 6.9 ตวอยางรปกราฟแสดงการใชพารามเตอร leg และ rect ในคาสง plot2d

logflag ใชในการกาหนดลกษณะของเสนแกน x และเสนแกน y วาจะใหเปน สเกลแบบธรรมดาหรอสเกลแบบลอการทม (logarithm) โดยคาทเปนไดของ logflag มทงหมด สแบบ คอ "nn", "nl", "ln" และ "ll" เมอ n หมายถงใหใชสเกลแบบธรรมดา และ l หมายถง ใหใชสเกลแบบลอการทม (พารามเตอรตวแรกจะอางองถงเสนแกน x และพารามเตอรตวทสองจะอางถงเสนแกน y) ตวอยางการใชงาน พารามเตอร logflag มดงน

-->clf; x = 0:0.2:5;

-->y = [1.4+sin(x); 1.8+sin(x)]';

-->subplot(1, 2, 1);

-->plot2d(x, y, style=[-2 -9], leg="X-mark curve ...

-->@Circle curve", rect=[0.5,0.1,4.5, 3], logflag="nl");

-->subplot(1, 2, 2);

-->plot2d(x, y, style=[-2 -9], leg="X-mark curve ...

-->@Circle curve", rect=[0.5,0.1,4.5,3], logflag="ll");

ผลลพธทไดแสดงในรปท 6.10

Page 41: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

178

รปท 6.10 ตวอยางรปกราฟแสดงการใชพารามเตอร logflag ในคาสง plot2d

nax จะถกนามาใชเมอมการเรยกใชพารามเตอร axesflag = 1 โดย nax จะใชในการกาหนดลกษณะของ ปาย (label) ของเสนแกน x และเสนแกน y ซงมรปแบบการใชงานคอ nax = [nx, Nx, ny, Ny] โดยท Nx และ Ny เปนตวเลขจานวนเตมบวกทใชกาหนดจานวนขดหลก (main tics) ทจะปรากฎบนเสนแกน x และเสนแกน y ในขณะท nx และ ny เปนตวเลขจานวนเตมบวกทใชกาหนดจานวนขดยอย (subtics) ทจะปรากฎอยระหวางขดหลกสองขดบนเสนแกน x และเสนแกน y ตวอยางการใชงาน พารามเตอร nax มดงน

-->clf; x = 0:0.2:5;

-->y = [1.4+sin(x); 1.8+sin(x)]';

-->subplot(1, 2, 1);

-->plot2d(x, y, style=[-2 -9], leg="X-mark curve @Circle ...

-->curve", rect=[0.5, 0, 4.5, 3], nax=[3, 6, 2, 5]);

-->subplot(1, 2, 2);

-->plot2d(x, y, style=[-2 -9], leg="X-mark curve @Circle ...

-->curve", rect=[0.5, 0,4. 5, 3], nax=[5, 4, 1, 10]);

ผลลพธทไดแสดงในรปท 6.11

Page 42: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

179

รปท 6.11 ตวอยางรปกราฟแสดงการใชพารามเตอร nax ในคาสง plot2d

frameflag ใชควบคมขอบเขตของเสนแกน (axes boundaries) x และเสนแกน y โดยมลกษณะการใชงาน คอ frameflag = [j] โดยทคาของพารามเตอร j จะเปนตวกาหนดลกษณะขอบเขตของเสนแกนในหนาตางกราฟดงแสดงในตารางท 6.4

6.2.2 การตกแตงรปกราฟ ในการนาเสนอผลงานวจยหรอผลการทดลองโดยใชรปกราฟ บางครง อาจจะมความจาเปนทจะตองตกแตง รปแบบของกราฟใหมลกษณะตางๆ เชน เปลยนส และลกษณะของเสนกราฟ, ใสคาอธ บายลงไปในกราฟ, และอนๆ เพอใหอยในรปทสวยงาม และงายตอความเขาใจ การตกแตงรปกราฟ ในโปรแกรม SCILAB สามารถทาไดโดยใชเมนยอย Figure properties (ในเมนหลก Edit ของหนาตางกราฟ ) อยางไรกตามในสวนนจะขออธบายถงคาสง ตางๆ ทใชบอยในการจดรปแบบการแสดงผลของกราฟ (ซงมประโยชนในกรณทตองการตกแตงรปกราฟ อยาง งาย โดยเรว) ดงตอไปน

6.2.2.1 คาสง xtitle เปนคาสงทใชในการกาหนดชอของรปกราฟ , ชอของเสนแกน x, และชอของเสนแกน y โดยมรปแบบการใชงาน คอ

xtitle('title_name','x_axis','y_axis')

Page 43: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

180

ตารางท 6.4 การกาหนดลกษณะขอบเขตของเสนแกนในหนาตางกราฟ frameflag = [j] คาอธบาย

j = 0 ใชสเกลเดม (previous scale) ทใชในการวาดรปกราฟกอนหนาน ในการวาดกราฟรปใหม (เปนคาโดยปรยาย )

j = 1 ขอบเขต (range) ของหนาตางกราฟ จะถกกาหนดโดย พารามเตอร rect

j = 2 ขอบเขตของหนาตางกราฟ จะถกกาหนดโดยคาตาสดและคาสงสดขอ งขอมล ทใชในตวแปร x และ y

j = 3 เหมอนกบ j = 1 แตใชสเกล แบบสมมต (isometric scale) j = 4 เหมอนกบ j = 2 แตใชสเกล แบบสมมต

j = 5 เหมอนกบ j = 1 แตอาณาเขตของหนาตางกราฟจะม ขนาดขนเพอให ปายของเสนแกนสวยงาม (pretty axes)

j = 6 เหมอนกบ j = 2 แตอาณาเขตของหนาตางกราฟจะมขนาดขนเพอให ปายของเสนแกนสวยงาม

j = 7 เหมอนกบ j = 5 แตสเกลของกราฟใหมจะไปทบซอนสเกลของเดม j = 8 เหมอนกบ j = 6 แตสเกลของกราฟใหมจะไปทบซ อนสเกลของเดม

เมอ title_name คอชอของรปกราฟ, x_axis คอชอของเสนแกน x, และ y_axis คอชอของเสนแกน y

6.2.2.2 คาสง xgrid(j) เปนคาสงทใชในการใสเสนกรดเขาไปในรปกราฟ โดยเสนกรดจะมสตามทกาหนดโดยพารามเตอร j ซงเปนเลขจานวนเตมบวกตามทแสดงในตารางท 6.2 ตวอยางการใชงานคาสง xgrid เชน จากรปท 6.11 ดานซาย ถาตองการเพมเสนกรดส ดาเขาไปในรปกราฟกสามารถทาไดโดยใชคาสงตอไปน

-->clf; x = 0:0.2:5;

-->y = [1.4+sin(x); 1.8+sin(x)]';

-->plot2d(x, y, style=[-2 -9], rect=[0.5,0,4.5,3], nax=[3,6,2,5]);

-->xtitle('Two signals','Time (t)','Amplitude')

-->xgrid(1) //ใสเสนกรดส ดา (j = 1) เขาไปในรปกราฟ

Page 44: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

181

รปท 6.12 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง xgrid

ซงจะไดผลลพธตามทแสดงในรปท 6.12

6.2.2.3 คาสง xset

เปนคาสงท ใชในการปรบรปแบบการแสดงผลของเสนแกน x และเสนแกน y คาสงน มลกษณะการใชงานหลายรปแบบ เชน เปลยนรปแบบและขนาดของตวอกษรของเสนแกน, เปลยนความหนา (หรอความเขม) ของเสนแกน, และอนๆ ตวอยางการใชงานคาสงน เชน จากรปท 6.12 ถาตองการปรบรปแบบของเสนแกนกสามารถทาไดโดยการเพมคาสงตอไปนลงไป

-->xset("font", 5, 4) //เพมขนาดของตวอกษร ในเสนแกน x และเสนแกน y

-->xset("thickness", 3) //เพมขนาดของเสนแกน x และเสนแกน y

ซงผลลพธทไดแสดงในรปท 6.13 นอกจากนคาสง xset ยงมการใชงานอกหลายรปแบบทนาสนใจ ผสนใจสามารถศกษารายละเอยดการใชงานของคาสง xset เพมเตมไดจากคาสง help

Page 45: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

182

รปท 6.13 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง xset

6.2.2.4 คาสง plotframe เปนคาสงทใช สรางกรอบ (frame) สาหรบวาดรปกราฟ โดยมลกษณะการใชงานดงน

plotframe(rect, tics, [options])

โดยทความหมายของพารามเตอรแตละตว คอ rect เปนเวกเตอร [xmin, ymin, xmax, ymax] ทใชกาหนดคาตาสดและ

คาสงสดของเสนแกน x และ y tics เปนเวกเตอร [nx, Nx, ny, Ny] โดยท Nx และ Ny คอจานวนขดหลก

(main tics) ทจะแบงบน เสนแกน x และ y ในขณะท nx และ ny คอจานวน ขดยอย (subtics) ทจะแบงใน แตละชองของ Nx และ Ny

options มรปแบบการใชงานอยสามแบบ คอ

Page 46: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

183

o flags เปนเวกเตอรของตวแปรบลน (%t หรอ %f) ขนาด 1×2 ประกอบไปดวย [wantgrids, findbounds] โดยท wantgrids หมายถงตองการใหใสเสนกรดเขาไปในรปกราฟหรอไม และ findbounds หมายถงตองการใหมการปรบคาขอบเขตของกรอบรปภาพทกาหนดใน rect โดยอตโนมตหรอไม

o captions เปนเวกเตอรขนาด 1×3 ประกอบดวย [title, x-leg, y-leg] ใชกาหนดชอเรอง , ชอเสนแกน x, และชอเสนแกน y ของรปกราฟ โดยจะทาหนาทเทยบเทากบการใชคาสง xtitle

o subwins เปนเวกเตอรขนาด 1×4 ประกอบดวย [x, y, w, h] ใชในการกาหนดหนาตางกราฟยอย (sub-window) โดยท พารามเตอร x และ y แสดงตาแหนง จดพกดของหนาตางกราฟยอย w แสดงขนาดความกวาง (width) และ h แสดงขนาดความสง (height) ของหนาตางกราฟยอย

ตวอยางตอไปนแสดงลกษณะการใชงานของคาสง plotframe

-->clf; x = [0:0.2:9];

-->y = rand(x);

-->rect = [min(x), min(y), max(x), max(y)];

-->tics = [1, 10, 1, 5];

-->plotframe(rect, tics, [%f, %f], ["My plot", "x", "y"], ...

-->[0, 0, 0.5, 0.5])

-->plot2d(x, y, 2, "000") //รปท 6.14 ดานบนซาย

-->plotframe(rect, tics, [%t, %f], ["My plot with grids", ...

-->"x","y"],[0.5,0,0.5,0.5])

-->plot2d(x, y, 3, "000") //รปท 6.14 ดานบนขวา

-->plotframe(rect, tics, [%t, %t], ["My plot with grids and ...

-->automatic bounds", "x", "y"], [0, 0.5, 0.5, 0.5])

-->plot2d(x, y, 4, "000") //รปท 6.14 ดานลางซาย

-->plotframe(rect, tics, [%f, %t], ["My plot without grids ...

-->but with automatic bounds", "x", "y"], [0.5, 0.5, 0.5, 0.5])

-->plot2d(x, y, 5, "000") //รปท 6.14 ดานลางขวา

Page 47: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

184

รปท 6.14 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plotframe

โดยทคาสง tics = [1, 10, 1, 5] หมายถงกาหนด ใหเสนแกน x มสบขดหลกและมหนงขดยอยระหวางขดหลก สวนเสน แกน y มหาขดหลกและมหนงขดยอยระหวางขดหลก ผลลพธทไดจากชดคาสงน แสดงในรปท 6.14

6.2.2.5 คาสง xstring เปนคาสงทใชบรรจ สายอกขระเขาไปในรปกราฟตามรปแบบและตาแหนงทกาหน ด มลกษณะการใชงานดงน

xstring(x, y, str, angle, box)

โดยทพารามเตอร

Page 48: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

185

x และ y เปนเลขจานวนจรงทใชบอกจดพกด (coordinate point) เรมตนของสาย อกขระ โดยจดพกดเรมตน x = 0 และ y = 0 จะอยทมมลางดานซายของกรอบรปกราฟ

str เปนเมทรกซของสายอกขระทจะปรากฎในรปกราฟตามจดพกดทกาหนด angel เปนเลขจานวนจรงทใชแสดงมมองศา (ระดบความเอยง) ของตวสายอกขระใน

ทศทางตามเขมนาฬกา (คาโดยปรยาย คอ คา 0) box เปนเลขจานวนเตมทใชในการสรางกลองสเหลยม (box) มาครอบสายอกขระ

(คาโดยปรยาย คอ คา 0 ซงหมายถงไมตองมกลองสเหลยมมาครอบสายอกขระ )

ตวอยางการใชคาสง xstring มดงน

-->clf;

-->alphabet = ["P i y a K o v i n ta v e w a t"];

-->plot2d([0;0.6], [0;1.5], 0); //สรางรปกราฟขนมา โดยไมตองใหแสดงเสนกราฟ

-->xstring(0.1, 1.3, alphabet) //แสดงชอ "Piya" ทจดพกด x = 0.1 และ y = 1.8

-->xstring(0.2, 1.1, alphabet, 0, 1) //แสดงชอ "Piya" ในกลอง

-->xstring(0.3, 0.9, alphabet, 20) //ใหชอทแสดงออกมามมมเอยงเทากบ 20º

-->xset("font", 1, 1) //กาหน ดใหใชตวอกษรแบบสญลกษณ

-->xstring(0.1, 0.5, alphabet)

-->xset("font", 1, 3) //เปลยนขนาดของตวอกษร

-->xstring(0.2, 0.3, alphabet)

ผลลพธทไดแสดงในรปท 6.15

6.2.2.6 คาสง scf(j) เปนคาสงทใชกาหนดหนาตางกราฟหมายเลข j ใหเปนหนาตางกรา ฟทจะทางาน (active graphic

window) โดยท j เปนเลขจานวนเตมบวก แตถาหนาตางหมายเลขนนยงไมมหรอไมมการกาหนด คา พารามเตอร j) โปรแกรม SCILAB กจะสรางหนาตางกราฟหมายเลข j ขนมาใหม คาสง scf(j) จะทาหนาทเทยบเทากบการใชคาสง xset("window", j)

Page 49: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

186

รปท 6.15 รปกราฟแสดงผลลพธจากการใชคาสง xstring

6.2.2.7 คาสง clf(j)

เปนคาสงทมาจากคาวา “Clear current graphic figure” โดยจะทาหนาทลบรปกราฟทแสดงอยในหนาตางกราฟหมายเลข j ในกรณทไมมการกาหนดคาพารามเตอร j โปรแกรม SCILAB จะทาการลบรปกราฟทแสดงอยในหนาตางกราฟทกาลงทางานอย

ถาไมใชคาสง clf(j) กอนท จะสงใหโปรแกรม SCILAB วาดรปกราฟใหมลงไปในหนาตางกราฟหมายเลข j ผลลพธทไดคอ รปกราฟใหมทส งใหวาดจะไปทบซอนกบรปกราฟ เดมทแสดงอยในหนาตางกราฟหมายเลข j

6.2.2.8 คาสงอนๆ

คาสง xbasc ใชลบรปกราฟทแสดงอยในหนาตางกราฟ คาสงนมผล ลพธเทยบเทา กบการใชคาสง clf

คาสง xdel(j) ใชลบหนาตางกราฟหมายเลข j ในกรณทไมมการกาหนด คา j โปรแกรม SCILAB กจะทาการลบหนาตางกราฟทกาลงทางานอย

Page 50: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

187

x

y

( )yx,

r

θ

รปท 6.16 ความสมพนธระหวาง จด (x, y) ในระบบพกดฉาก และจด (r, θ) ในระบบพกดเชงขว

คาสง xget ใชเรยกดคาพารามเตอรตางๆ ทใชในการกาหนดรปแบบของ รปกราฟ กลาวคอคา พารามเตอรทงหมด ทใชในคาสง xset สามารถทจะถก เรยกออกมาดไดโดยใชคาสง xget

คาสง xgetech ใชเรยกดคาพารามเตอรตางๆ ทใชในการกาหนดขนาดหรอสเกล ของ รปกราฟ

6.2.3 กราฟเชงขว นอกจากการวาดกราฟสองมตแบบทวไปในระบบพกดฉาก x-y ตามทอธบายไวในหวขอทผานมาแลว โปรแกรม SCILAB ยงสามารถทจะวาดกราฟในระบบพกดเชงขว (polar coordinates) ไดดงแสดงตอไปน

โดยทวไป จด (x, y) ทแสดงถงตาแหนง (location) บนรปกราฟในระบบพกดฉากสามารถทจะเปลยนใหอยในรปของ จด (r, θ) ในระบบพกดเชงขวได โดยท r คอขนาด และ θ คอมมเรเดยน (เทยบกบแกน x ในทศทวนเขมนาฬกา) โดยอาศยกฎของตรโกณมต นนคอ จากรปท 6.16 จะไดวา

2 2r x y= + และ y1θ tanx

−= ⎛ ⎞⎜ ⎟⎝ ⎠

ในทานองเดยวกนจดพกด (r, θ) ในระบบพกดเชงขว กสามารถ ทจะแปลงกลบไปเปนจดพกด (x, y) ในระบบพกดฉากไดจากความสมพนธ ดงน

Page 51: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

188

( )x r cos θ= และ ( )y r sin θ=

การวาดกราฟเชงขวในโปรแกรม SCILAB สามารถทาไดโดยการใชคาสง

polarplot(theta, r, [options])

เมอพารามเตอร theta คอคามม θ (มหนวยเปนเรเดยน ), พารามเตอร r คอคาความยาวของรศม ,

และพารามเตอร options มรปแบบการใชงานคอ

options = [style, strf, leg, rect] โดยท style, leg, และ rect มลกษณะการใชงานตามทไดกลาวไวแลวในหวขอทผานมา strf = "xy0" (คาโดยปรยาย คอ strf = "030") โดยท

o x เปนตวควบคมการแสดงผลของคาอธบายในรปกราฟ (caption) มคาดงน x = 0 ไมตองม คาอธบายในรปกราฟ x = 1 แสดงคาอธบายในรปกราฟ ทกาหนดโดยพารามเตอร leg

o y มลกษณะการใชงานเหมอนพารามเตอร frameflag ตามทไดกลาวไวแลว ในหวขอทผานมา

ตวอยางการใชงานคาสง polarplot เชน

-->clf; t = 0:0.01:2*%pi;

-->polarplot(sin(7*t), cos(8*t))

ผลลพธแสดงในรปท 6.17

6.2.4 การวาดกราฟสองมตแบบพเศษ นอกจากนโปรแกรม SCILAB ยงไดเตรยมคาสงสาหรบการวาดกราฟสองมตแบบอนๆ ไวใช งานเฉพาะดานมากมายดงแสดงในตารางท 6.5 (ผสนใจสามารถศกษารายละเอยดเพมเตมของคาสงวาด กราฟสองมตเหลานไดจากคาสง help) ตวอยางการใชงานคาสงเหลาน เชน

Page 52: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

189

รปท 6.17 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง polarplot

ตารางท 6.5 ตวอยางคาสงในการวาดกราฟสองมตสาหรบการใ ชงานเฉพาะดาน

คาสง คาอธบาย fplot2d วาดกราฟทวไปแบบสองมต ทกาหนดโดยฟงกชนทางคณตศาสตร grayplot วาดกราฟสแสดงพนผว (surface) แบบสองมต fgrayplot วาดกราฟสแสดงพนผวแบบสองมต ทกาหนดโดยฟงกชนทางคณตศาสตร histplot วาดกราฟฮสโตแกรม (histogram plot) contour2d วาดกราฟคอนทวร (contour surface) จากรปกราฟสองมต champ วาดกราฟสนามเวกเตอรแบบสองมต (2-D vector field)

fchamp วาดกราฟสนามเวกเตอรแบบสองมต ทกาหนดโดยสมการอนพนธอนดบหนง (first-order ordinary differential equation)

bode วาดกราฟของโบดไดอะแกรม (Bode diagram) ทงกราฟแสดงขนาด (magnitude

plot) และกราฟแสดงมม (phase plot) ซงมประโยชนมากทางดานวศวกรรม gainplot วาดกราฟแสดงขนาดของโบดไดอะแกรม nyquist วาดกราฟไนควตซ (Nyquist plot) evans วาดกราฟอแวนรทโลคส (Evans root locus) plzr วาดกราฟโพล-ซโร (pole-zero plot)

Page 53: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

190

-->subplot(2, 2, 1);

-->champ(-5:5, -5:5, rand(11,11), rand(11,11), ...

-->rect = [-10,-10,10,10], arfact = 2); //รปท 6.18 ดานบนซาย

-->xtitle('2-D vector field plot');

-->s = poly(0, 's'); //กาหนดให ตวแปร s เปนตวแปรพหนาม

-->h = syslin('c', (s^2 + 2*0.9*10*s + 100)/(s^2 + ...

-->2*0.3*10.1*s + 102.01)); //กาหนดรปแบบ ฟงกชน ของระบบควบคม

-->subplot(2, 2, 2); nyquist(h, 0.01, 100); //รปท 6.18 ดานบนขวา

-->subplot(2, 2, 3); evans(h, 100); //รปท 6.18 ดานลาง ซาย

-->subplot(2, 2, 4); plzr(h); //รปท 6.18 ดานลางขวา

ผลลพธทไดจากชดคาสง นแสดงในรป ท 6.18

6.3 การวาดกราฟสามมต นอกจากการวาดกราฟสองมตแลว โปรแกรม SCILAB ยงไดเตรยมคาสง จานวนมากสาหรบการวาดกราฟสามมต ดงนน ในสวน นจะอธบายถงพนฐานในการวาดกราฟสามมต คาสงทใชในการ วาดกราฟสามมต พรอมทงแสดงตวอยางการวาดกราฟสามมตแบบตางๆ

6.3.1 พนฐานการวาดกราฟสามมต สมการคณตศาสตรแบบสามตวแปรใดๆ สามารถทจะแสดงใหอยในรปของกราฟสามมตได เพอ ใชแสดงความสมพนธของตวแปรทงส าม การใชงานคาสงวาดกราฟสามมตนนไมยากเพยงแตตองเขาใจ ถงรปแบบของขอมลทจะปอนใหกบคาสงเหลาน การวาดกราฟสามมตจะใชขอมลทงหมดสามชดสาหรบเสนแกน x, เสนแกน y, และเสนแกน z ทอยในพกดคารทเซยน (Cartesian coordinate)

x-y-z โดยเวกเตอร x จะเปนตวกาหนดคาในเสนแกน x, เวกเตอร y จะเปนตวกาหนดคาในเสน แกน y, และตวแปรตามทมคาเปลยนแปลงไปตามคา x และ y ซงกคอ ขนาดของคาบนเสนแกน z นนเอง ดงนน ตวแปรตาม z นจะ ตองมจานวนเทากบผลคณของจานวนขอมลในเวกเตอร x กบจานวนขอมลในเวกเตอร y

Page 54: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

191

รปท 6.18 ตวอยางรปกราฟแสดงผลลพธจากการใชชดคาสง สาหรบวาดกราฟสองมตทใชงานเฉพาะดาน

คาสงพนฐานสาหรบการวาดกราฟแบบสามมตในโปรแกรม SCILAB มรปแบบดงน

plot3d(x, y, z, [options])

โดยทพารามเตอร x และ y คอเวกเตอรทมขนาดเทากน และพารามเตอร z คอตวแปรตามทขนกบ คาของ x และ y ซงจะมจานวนเทากบผลคณของจานวนขอมลในเวกเตอร x กบจานวนขอมลในเวกเตอร y สาหรบพารามเตอร options มลกษณะการใชงานคอ

options = [alpha, theta, leg, flag, ebox]

Page 55: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

192

αθ

x

y

z

รปท 6.19 รปกราฟแสดงมมยกและมมกวาดในพกดทรงกลม

เมอพารามเตอร

alpha และ theta คอเลขจานวนจรงทใชในการกาหนดมมองศาของจดทกาลงถก พจารณา (observation point) ในระบบพกดทรงกล ม (spherical coordinate) ตามแสดงในรปท 6.19 เมอ o alpha แสดงมมยก (elevation angle) โดยคา alpha ทเปนบวก หมายถงมมท

ยกขน และคา alpha ทเปนลบ หมายถงมมทยกลง (คาโดยปรยาย คอ alpha = 35) o theta แสดงมมกวาด (azimuth angle) โดยคา theta ทเปนบวก หมายถงมมท

ทวนเขมนาฬกา และคา theta ทเปนลบ หมายถงมมทตามเขมนาฬกา (คาโดยปรยาย คอ theta = 45)

leg เปนพารามเตอรทใชในการใสขอความอธบายเสนกราฟแตละเสน ตามทกลาว ไวแลวในหวขอทผานมา

flag เปนเวกเตอรทประกอบไปดวยพารามเตอรสามตว คอ

flag = [mode, type, box]

โดยท

Page 56: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

193

o mode เปนเลขจานวนเตมทใชกาหนดสของพนผวในรปกราฟ เมอ mode > 0 พนผวในรปกราฟจะเปนสตามหมายเลขของ mode ตามตารางท 6.2

mode = 0 พนผวในรปกราฟจะไมมสหรอโปรงแส ง (transparent) mode < 0 พนผวในรปกราฟจะเปนสตามหมายเลขของ |mode| แตเสนแสดง

ขอบเขตของรปกราฟจะไมถกแสดง o type เปนเลขจานวนเตมทใชกาหนดสเกลของรปกราฟ เมอ

type = 0 สเกลทใชวาดกราฟสามมตเปนแบบธรรมดา type = 1 สเกลแบบอตโนมต โดยเสนแสดงขอบเขตจะถกกาหนดโดย คา พารามเตอร ebox type = 2 สเกลแบบอตโนมต โดยเสนแสดงขอบเขตจะถกกาหนดจาก ขอมลท

ใชในการวาดกราฟ (เปนคาโดยปรยาย ) type = 3 สเกลแบบสมมต โดยเสนแสดงขอบเขตจะถกกาหนดโดย คา

พารามเตอร ebox (คลาย type = 1) type=4 สเกลแบบสมมต โดยเสนแสดงขอบเขตจะถกกาหนดจากขอมลทใช

ในการวาดกราฟ (คลาย type = 2) type = 5 ความหมายเหมอนกบ type = 3 แตจะมขนาดใหญกวา type = 6 ความหมายเหมอนกบ type = 4 แตจะมขนาดใหญกวา

o box เปนเลขจานวนเตมทใชกาหนด ลกษณะของกรอบรปภาพ เมอ box = 0 ไมตองแสดงเสนแกนของรปกราฟ box = 1 เหมอนกบ box = 0

box = 2 เฉพาะเสนแกนทอยหลงพนผวของรปกราฟจะถกแสดงออกมา

box = 3 มการสรางกลองขนมาครอบรปกราฟ พรอม ทง ใสชอของเสน แกน (x, y, และ z) ลงไป box = 4 มการสรางกลองขนมาครอบรปกราฟ พรอม ทง ใสชอและสเกลของ

เสนแกนลงไป (เปนคาโดยปรยาย ) ebox เปนเวกเตอรทประกอบไปดวยพารามเตอรหกตวดงน

ebox = [xmin, xmax, ymin, ymax, zmin, zmax]

Page 57: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

194

ซงจะถกใชเพอกาหนดขอบเขตของรปกราฟ เมอ o xmin และ xmax คอ คาตาสดและคาสงสดของเสนแกน x o ymin และ ymax คอ คาตาสดและค าสงสดของเสนแกน y o zmin และ zmax คอ คาตาสดและคาสงสดของเสนแกน z

โดยทวไปแลว ebox มกใชในกรณท flag ถกกาหนดใหมคาเปน 1, 3, และ 5 ถาไมม การใช flag ในคาสง plot3d พารามเตอร ebox จะถกเพกเฉย

ตวอยางท 2 กาหนดให ตวแปร x และ y มคา ระหวาง 0 ถง 1 จงวาดกราฟสามมตจากสมการ

( ) ( )z 0.5 cos 2xπ cos 2yπ=

วธทา จากโจทย สามารถวาดกราฟสามมตไดโดยใชชดคาสงของโปรแกรม SCILAB ดงน

-->clf; x = linspace(0, 1, 21);

-->y = linspace(0, 1, 21);

-->z = abs(0.5 * cos(2*%pi*x)' * cos(2*%pi*y));

-->subplot(1, 2, 1); plot3d(x, y, z, flag = [4, 2, 4]); //รปท 6.20 ดานซาย

-->subplot(1, 2, 2); plot3d(x, y, z, alpha = 35, theta = 45, ...

-->flag = [0, 2, 3]); //รปท 6.20 ดานขวา

ผลลพธทไดจากชดคาสงเหลานแส ดงในรปท 6.2025

จากรปท 6.20 ดานซาย ถาตองการใหมการไลโทนสตามขนาดของคาในแกน z กสามารถทาไดโดยการใชคาสง plot3d1 ดงน

-->clf; plot3d1(x, y, z, theta = 35, alpha = 25, flag = [0, 2, 4]);

25 รปท 6.20 ดานขวามรปรางลกษณะเหมอนกบรปพนผวรางแห (mesh surface plot) ดงนนผใชสามาร ถวาดรปพนผวรางแหไดจากคาสงนเชนกน

Page 58: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

195

รปท 6.20 ตวอยางรปกราฟแสดงผลลพธจากการ ใชคาสง plot3d

รปท 6.21 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plot3d1

ซงจะไดผลลพธตามรปท 6.21

นอกจากนถาตองการทราบความสมพนธระหวางสกบขนาดของคาในแกน z กสามารถทาไดโดยใชคาสง colorbar ซงมรปแบบการใชงานคอ

Page 59: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

196

colorbar(umin, umax, [colminmax])

โดยทพารามเตอร umin เปนเลขจานวนจรงของคาตาสดขอ งขนาดของคาในแกน z umax เปนเลขจานวนจรงของคาสงสดของ ขนาดของคาในแกน z colminmax เปนตวเลอกทมรปแบบการใชงาน คอ

colminmax = [1 nb_colors]

เปนเวกเตอรขนาด 1×2 โดยท nb_colors คอจานวนสทจะใชในรปกราฟ

ตวอยางการใชงานคาสงน เชน (ตอเนองจากรปท 6.21)

-->clf; zmin = min(z);

-->zmax = max(z);

-->colorbar(zmin, zmax, [1 30]);

-->plot3d1(x, y, z, theta = 35, alpha = 25, flag = [0, 2, 4]);

ผลลพธทไดแสดงในรปท 6.22 ซงจะมแถบสแสดงความสมพนธระหวางสตางๆ กบขนาดของคา ในแกน z

นอกจากนโปรแกรม SCILAB ยงมคาสงทใชในการวาดภาพสามมตแบบอนอก มากมายตามทแสดงในตารางท 6.6 ตวอยางการใชงานคาสงเหลานเชน

-->clf; u = linspace(-%pi/2, %pi/2, 20);

-->v = linspace(0, 2*%pi, 10);

-->X = cos(u)' * cos(v);

-->Y = cos(u)' * sin(v);

-->Z = sin(u)' * ones(v);

-->subplot(2, 2, 1);

-->plot3d2(X, Y, Z); xtitle('plot3d2'); //รปท 6.23 ดานบนซาย

Page 60: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

197

รปท 6.22 ตวอยางรปกราฟแสดงผลลพธจากการใชคา สง colorbar รวมกบ plot3d1

ตารางท 6.6 ตวอยางคาสงในการวาดกราฟสามมตแบบทวไป

คาสง คาอธบาย plot3d2 วาดกราฟพนผวแบบมส plot3d3 วาดกราฟพนผวรางแห (mesh surface plot) surf วาดกราฟพนผวรางแห โดยมการไลโทนสตามขนาดของคาในแกน z fplot3d วาดกราฟพนผวทกาหนดโดยฟงกชนทางคณตศาสตร

fplot3d1 วาดกราฟพนผวทกาหนดโดยฟงกชนทางคณตศาสตร โดยมการไลโทนสตามขนาดของคาในแกน z

-->subplot(2, 2, 2);

-->plot3d3(X, Y, Z); xtitle('plot3d3'); //รปท 6.23 ดานบนขวา

-->subplot(2, 2, 3);

-->surf(X, Y, Z); xtitle('surf'); //รปท 6.23 ดานลางซาย

-->deff('z=f(x, y)', 'z = x^4 - y^4'); //สรางฟงกชนโดยใชคาสง deff

-->x = -3:0.2:3;

Page 61: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

198

รปท 6.23 ตวอยางรป กราฟสามมตแบบทวไป

-->y = x;

-->subplot(2, 2, 4);

-->fplot3d(x, y, f, alpha=5, theta=30); //รปท 6.23 ดานลางขวา

-->xtitle('fplot3d');

ผลลพธทไดจากชดคาสงเหลานแสดงในรป ท 6.23 สาหรบผสนใจสามารถศกษารายละเอยดการใชงานคาสงเหลานเพมเตมไดในคาสง help

6.3.2 กราฟคอนทวร กราฟคอนทวร (contour plot) หรอกราฟเสนชนความสง เปนกราฟทเกดจากการเฉอนรปกรา ฟสามมตแลวมองจากดานบนลงมาจะไดออกมาเปนเสนชนความสง โดยแตละเสน ชนความสง ทมส

Page 62: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

199

เดยวกนจะแสดงถงระดบความสงทเทากนในรปกราฟสามมต การวาดรปกราฟคอนทวรในโปรแกรม SCILAB สามารถทาไดโดยการใชคาสง

contour(x, y, z, nz, [options])

โดยทพารามเตอร x, y, และ z แสดงคาในเสนแกน x, เสนแกน y, และเสนแกน z ตามลาดบ สวน พารามเตอร nz เปนเลขจานวนเตมบวกทใชกาหนดจานวนระดบความสง (หรอจานวนเสน) ทตองการใหแสดงในรปกราฟคอนทวร และพารามเตอร options จะมรปแบบการใชงานคอ

options = [theta, alpha, leg, flag, ebox, zlev]

เมอ theta, alpha, leg, flag, ebox มรปแบบเหมอนกบทกลาวมาแลวขางตน zlev เปนเลขจานวนจรงทใชในการปรบขนาดคาของ เสนแกน z กลาวคอคาของ สมาชก

ทกสมาชกในตวแปรของเสนแกน z จะถกนาไปบวกรวมกบคา zlev กอนทจะ นาคา ของผลลพธทไดไปใชกาหนดขนาดคาของ เสนแกน z ในการแสดงผลของรปกราฟ

ตวอยางเชน ถาตองการวาดรปคอนทวรของกราฟสามมตในรปท 6.21 กสามารถทาไดโดยการใชคาสงตอไปน

-->clf; x = linspace(0, 1, 21);

-->y = linspace(0, 1, 21);

-->z = abs(0.5*cos(2*%pi*x)'*cos(2*%pi*y));

-->contour(x, y, z, 4)

ผลลพธทไดแสดงในรปท 6.24 สงเกตจะพบวาสวนทนนขนมาแตละอนในรปท 6.21 จะแสดงดวยเสนสสเสน (เนองจาก nz = 4) โดยทแตละเส นสจะแสดงคาระดบความสง (หรอขนาดของคาในแกน z) ทเทากน

Page 63: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

200

รปท 6.24 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plot3d1

ตารางท 6.7 ตวอยางคาสง วาดกราฟสามมตแบบพเศษสาหรบการใชงานเฉพาะดาน

คาสง คาอธบาย param3d วาดเสนโคงแบบองพารามเตอร (parametric curve) หนงเสน param3d1 วาดเสนโคงแบบองพารามเตอรหลายๆ เสนในรปกราฟเดยวกน hist3d วาดกราฟฮสโตแกรมแบบสามมต (3D histogram) fcontour วาดกราฟคอนทวรทกาหนดโดยฟงกชนทางคณตศาสตร

6.3.3 การวาดกราฟสามมตแบบพเศษ นอกจากนโปรแกรม SCILAB ยงไดเตรยมคาสง จานวนมากสาหรบการวาดกราฟสามมตแบบพเศษไวใชในงานเฉพาะดานโดยเฉพาะงานทางดานวศวกรรมและวทยาศาสตร ดงแสดงในตารางท 6.7 (ผสนใจสามารถศกษารายละเอยดเพมเตมของคาสงวาดกราฟสามมตเหลานไดจากคาสง help) ตวอยางการใชงาน คาสง เหลาน เชน

-->clf; t = [0:0.1:5*%pi]';

-->subplot(2, 2, 1);

Page 64: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

201

-->param3d(sin(t), cos(t), t/10, 35, 45, "X@Y@Z", [2,3]);

-->xtitle('param3d'); //รปท 6.25 ดานบนซาย

-->subplot(2, 2, 2);

-->param3d1([sin(t), sin(2*t)], [cos(t),cos(2*t)], ...

-->list([t/10, sin(t)], [3,2]), 35, 45, "X@Y@Z", [2,3]);

-->xtitle('param3d1'); //รปท 6.25 ดานบนขวา

-->subplot(2, 2, 3);

-->hist3d(6*rand(6,6));

-->xtitle('hist3d'); //รปท 6.25 ดานลาง ซาย

-->deff("[z] = f(x, y)", "z = sin(x)*cos(y)");

-->t = %pi*[-10:10]/10;

-->subplot(2, 2, 4);

-->fcontour(t, t, f, 4, ebox = [-4 4 -4 4 -1 1], flag = [0 1 4]);

-->xtitle('fcontour'); //รปท 6.25 ดานลางขวา

ผลลพธทไดจากชดคาสงเหลานแสดงในรป ท 6.25

6.4 การวาดกราฟแบบผสม ในการวาดกราฟบางครงมความจาเปนตองวาดกราฟสองแบบผสมกน เพอทจะไดสามารถอธบาย ความหมายของรปกราฟนนไดครบถวน โปรแกรม SCILAB สามารถทจะวาดกราฟลกษณะนได โดยการวาดกราฟทละรปลงไปทบซอนกน ดงแสดงในตวอยางตอไปน

-->clf; x = linspace(0, 1, 21);

-->y = linspace(0, 1, 21);

-->z = 2*abs(cos(2*%pi*x)'*cos(2*%pi*y));

-->rect = [min(x), max(x), min(y), max(y), min(z)-5, max(z)+1];

-->plot3d(x, y, z, theta = 35, alpha = 15, flag = [2,1,4], ebox = rect);

Page 65: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

202

รปท 6.25 ตวอยางรปกราฟแสดงผลลพธจากการใชชดคาสง สาหรบวาดกราฟสามมตทใชงานเฉพาะดาน

-->contour(x, y, z, 4, theta = 35, alpha = 15, flag = [1,1,4], ...

-->ebox = rect, zlev = -5);

ผลลพธทไดแสดงในรปท 6.26 ซงจะเหนไดวาการวาดกราฟแบบผสมนไมยงยาก ดงนนผใชสามารถ ทจะวาดกราฟแบบผสมใดๆ กไดโด ยใชคาสงวาดกราฟตางๆ ตามทไดอธบายไวขางตน เพอทจะได รปกราฟในแบบทตองการ

6.5 ตวอยางการวาดกราฟ ในสวนนจะยกตวอยางการวาดกราฟแบบตางๆ เพอใหเขาใจถงขนตอนในการวาดกราฟทมคณสมบต ตามทระบไว ดงตอไปน

Page 66: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

203

รปท 6.26 ตวอยางการวาดรป กราฟแบบผสม

ตวอยางท 3 ในเรองการสอสารดจทล (digital communication) ฟงกชนของรปสญญาณทพบบอย คอฟงกชน ซงก (sinc function) ซงมรปแบบตามสมการ

( )sin xy =

x

เมอ x เปนระยะหางจากจดกาเนด (origin point) ถากาหนดให –20 < x < 20 จงวาดรปกราฟของฟงกชนซงก น

วธทา กราฟของฟงกชนซงกสามารถทจะวาดโดยใชโปรแกรม SCILAB ได ดงน

-->clf;

-->x = -20:0.1:20;

-->x(find(x == 0)) = %eps;

-->y = sin(x)./x;

-->plot(x,y); xtitle("Sinc function","x","y = sin(x)/x");

-->xgrid(5); //ใสเสนกรดสแดงในหนาตางกราฟ

Page 67: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

204

รปท 6.27 รปสญญานของฟงกชน ซงก y = sin(x)/x

ในชดคาสงบรรทดทสาม คาสง find จะทาหนาทหาตาแหนงของตวแปร x ทมคาเปนศนยวาอย ตาแหนง ไหน จากนนกเปลยนคาของตวแปร x ทมคาเปนศนยให มคาเทากบ %eps แทน เพอปองกนการหารดวยคา 0 ของฟงกชน y ผลลพธทไดจากชดคาสงนแสดงในรป ท 6.27

ตวอยางท 4 ฟงกชน ซงกแบบสามมตสามารถแสดงไดดวยสมการ

( )sin dy =

d และ 2 2d = x + y

โดยท d คอระยะทางจากจดศนยกลางไปยงจดใดๆ ในพกดทรงกลม (ดรปท 6.19) จงวาดรปกราฟของฟงกชน ซงกแบบสามมต ถากาหนดให –6 < x < 6 และ –6 < y <6 และตองการใหรปกราฟทไดมการไลโทนส และมแถบสแสดงความสมพนธระหวางสตางๆ กบขนาดของคาใน เสนแกน z

วธทา รปกราฟของฟงกช นซงกแบบสามมตสามารถทจะวาดโดยใชโปรแกรม SCILAB ไดดงน

Page 68: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

205

รปท 6.28 รปสญญานของฟงกชน ซงกแบบสามมต

-->clf; x = -6:0.5:6;

-->y = -6:0.5:6;

-->[XX, YY] = ndgrid(x, y);

-->d = sqrt(XX.^2 + YY.^2);

-->d(find(d == 0)) = %eps;

-->ZZ = sin(d) ./ d;

-->zmin = min(ZZ);

-->zmax = max(ZZ);

-->colorbar(zmin, zmax, [1, 20]);

-->surf(XX, YY, ZZ);

คาสง ndgrid (บรรทดทสามของชดคาสงน ) จะทาหนาทในการสรางจดพกด (x,y) ทงหมดในชวงคาของเสนแกน x และเสนแกน y ผลลพธทไดจากชดคาสงนแสดงใน รปท 6.28

Page 69: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

206

φ

θ

x

y

z

ρ

( )zy,x,

รปท 6.29 รปแสดงพกดทรงกลม

ตวอยางท 5 จงวาดรปกราฟพนผวแบบมสของรปทรงกลม (sphere) บนระบบพกดคารทเซยน x–y–z ทมจดศนยกลางของทรงกลมทจดพกด (x, y, z) = (0, 0, 0) และมความยาวรศม (radius) เทากบ 1 หนวย

วธทา กอนอนใหพจารณาสมการของทรงกลมบนระบบพกดคารทเซยนดงน

2 2 2 2ρ+ + =x y z

โดยท (x, y, z) คอจดพกดในระบบพกดคารทเซยน หากตองการแปลงสมการของทรงกลมบนระบบพกดคารทเซยนใหอยในระบบพกดทรงกลม กสามารถทาไดดงน จา กรปท 6.29 จะไดวา

( ) ( )x ρcos θ sin φ=

( ) ( )y ρsin θ sin φ=

( )z ρcos φ=

โดยท ρ คอความยาวรศมของทรงกลม, θ คอมมกวาด (azimuth) หรอมมทเทยบกบแกน x มคาระหวาง 0 ถง 2π, และ φ คอมมยก (elevation) หรอมมทเทยบกบแกน z มคาระหวาง 0 ถง π

Page 70: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

207

รปท 6.30 ตวอยางรป กราฟทรงกลม

ดงนนเมอเขาใจถงความสมพนธระหวาง ระบบพกดคารทเซยนและระบบพกดทรงกลมแลว กจะทาใหสามารถวาดรปทรงกลมทมความยาวรศมเทาก บ 1 หนวยได โดยใชชดคาสงของโปรแกรม SCILAB ดงน

-->clf;

-->phi = linspace(0, %pi, 16);

-->theta = linspace(0, 2*%pi, 31);

-->rho = 1;

-->[PHI, THETA] = ndgrid(phi, theta);

-->X = rho * cos(THETA) .* sin(PHI);

-->Y = rho * sin(THETA) .* sin(PHI);

-->Z = rho * cos(PHI);

-->plot3d2(X,Y,Z,alpha=60)

ผลลพธทไดแสดงในรปท 6.30

Page 71: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

208

ตวอยางท 6 จงวาดรปกราฟพนผวแบบมสของรป ทรงหวงยาง (torus) ทมลกษณะเหมอนกบขนมโดนตบนระบบพกดคารทเซยน โดยกาหนดให มความยาวรศมของรปทรงหวงยาง ในระนาบ x–y เทากบ 1.4 หนวย และใน แนวแกน z เทากบ 0.5 หนวย และจดศนยกลางของรป ทรงหวงยาง อยทจดพกด (x, y, z) = (0, 0, 0)

วธทา กอนอนใหพจารณาสมการของรป ทรงหวงยาง บนระบบพกดคารทเซยน ดงน

( )22 2 2 2c x y z a− + + =

เมอ (x, y, z) คอจดพกดในระบบพกดค ารทเซยน, a คอความยาวรศมของรปทรงหวงยาง ในระนาบ x–y, และ c คอความยาวรศมของวงกลมในแนวแกน z เนองจากการเตรยมขอมลเพอวาดรปทรงหวงยาง ในระบบพกดอน จะงายกวาการเตรยมขอมล เพอวาดรปในระบบพกดคารทเซยน ดงนนขอมลของตวแปร x, y, และ z ควรทจะตองถกแปลงใหอยในรปของตวแปรใหมทเหมาะสมดงน

( )( ) ( ) x a ccos cos θφ= +

( )( ) ( ) y a ccos sin θφ= +

( ) z csin φ=

โดยทตวแปร θ และ φ จะมคาอยระหวาง 0 ถง 2π การแปลงสมการแบบนจะเรยกวา สมการองพารามเตอร (parametric equation) จากนนกสามารถวาดรป ทรงหวงยาง ตามทโจทยตองการได โดยใชชดคาสงของโปรแกรม SCILAB ดงน

-->clf; phi = linspace(0, 2*%pi, 21);

-->theta = linspace(0, 2*%pi, 21);

-->a = 1.4;

-->c = 0.5;

-->[PHI, THETA] = ndgrid(phi, theta);

-->X = (a + c*cos(PHI)) .* cos(THETA);

Page 72: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

209

รปท 6.31 ตวอยางรป กราฟทรงหวงยาง

-->Y = (a + c * cos(PHI)) .* sin(THETA);

-->Z = c * sin(PHI);

-->plot3d2(X, Y, Z, alpha = 60, flag = [4, 2, 4]);

ผลลพธทไดแสดงในรปท 6.31

ตวอยางท 7 กาหนดให ( ) ( )( ) ( )-sin xf x = 2+cos x e เมอ 0 ≤ x ≤ 4π จงวาดกราฟเชงเสน

และกราฟลอการทม (ทงในแนวแกน x และแกน y)

วธทา กราฟเชงเสนและกราฟลอการทมสามารถหาไดจากชดคาสงดงน

-->clf; x = 0:0.1:4*%pi;

-->y = (2 + cos(x)).*exp(-sin(x));

-->subplot(1, 2, 1); plot2d(x, y); //รปท 6.32 ดานซาย

-->subplot(1, 2, 2); plot2d(x, y, logflag="ll"); //รปท 6.32 ดานขวา

Page 73: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

210

รปท 6.32 รปกราฟของฟงกชน ( ) ( )( ) ( )-sin xf x = 2+cos x e

ผลลพธทไดแสดงในรปท 6.32

ตวอยางท 8 วาดกราฟเสนโคงกลบกหลาบ (rose curve) ทกาหนดโดยสมการ ( )r 5cos 4θ= เมอ 0 ≤ θ ≤ 2π ในระบบพกดเชงขว

วธทา กราฟเสนโคงกลบกหลาบนสามารถหาไดจากชดคาสงดงน

-->clf;

-->theta = 0:0.01:2*%pi;

-->r = 5*cos(4*theta);

-->polarplot(theta, r)

ผลลพธทไดแสดงในรปท 6.33

Page 74: E-Book - SCILAB NEWhome.npru.ac.th/piya/webscilab/file/book/Sample-Thai-SCILAB.pdf · คู่มือโปรแกรมภาษา scilab สําหรับผ้เรูิ่มต้น

211

รปท 6.32 รปกราฟเสนโคงกลบกหลาบ ( )r 5cos 4θ=

6.6 สรป ในบทนไดอธบายถงการใชคาสงตางๆ ทใชในการวาดกราฟสองมต (เชน คาสง plot, plot2d,

polarplot, contour2d, และ plzr เปนตน) และกราฟสามมต (เชน คาสง plot3d,

countour, และ hist3d) พรอมทง กลาวถง พารามเตอรตางๆ ทใชใน คาสงเหลาน เพอ ใหสามารถนาไปประยกตใชงานไดอยางถกตองและตรง ตามความตองการ

ดงนน จะเหนไดวาโปรแกรม SCILAB สามารถวาดกราฟไดหลายรปแบบจงเหมาะอยางยง สาหรบการนามาใชในการวาดรปกราฟ เพอใชในการนาเสนอผลงานวจยและผลงานทางวชาการ โดยเฉพาะอยางยงงานทางดานวศวกรรมและวทยาศาสตร

6.7 แบบฝกหดทายบท 6.1 กาหนดให y = 4x2 โดยท 1 ≤ x ≤ 100 จงวาดกราฟทมรปแบบตางๆ ดงน

6.1.1) กราฟเชงเสน