Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
คมอโปรแกรมภาษา 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
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
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
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
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
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
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
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
บทท 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
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 สามารถทางานไดอยางรวดเรวและมประสทธภาพมากทสด
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
4
รปท 1.1 หนาตางคา สงของโปรแกรม SCILAB
รปท 1.2 หนาตาง เอดเตอรทชอ “SciPad” ของโปรแกรม SCILAB
(Open file) เรยกไฟลทมอยในสารบบขนมาใชงาน
(Copy) สาเนาขอมลในสวนทผใชเลอกในหนาตางคาสง
(Paste) นาขอมลทสาเนาไวมาวางในหนาตาง คาสง
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 จะทาการคนหาไฟลตางๆ หรอบนทกไฟลลงไป เกบไว
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) เพอใชในการเขยนหรอแกไขโปรแกรม
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
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 “_” (สญลกษณอนหามใช) ชวยในการกาหนดชอของ ตวแปรกได
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 จะไดผลลพธเปน
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)
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)
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) มฟงกชน อะไรบาง กใหปอนคาสงดงน
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) มฟงกชนอะไรบาง กใหปอนคาสงดงน
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) ของไฟลทจะบนทกขอมลให
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;
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 คอชอไฟล (จะตองระบเสนทางของไฟลทตองการเรยกมาใชงานใหถกตองครบถวน) ภายในเครองหมาย '…' หรอเครองหมาย "…" ตวอยางเชน
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.
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
บทท 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)
166
รปท 6.1 ตวอยางหนาตางกราฟทใชแสดงผลรปภาพของโปรแกรม SCILAB
รปท 6.2 รายละเอยดของเมนหลกแตละอนในหนาตางกราฟ
Save … บนทกรปกราฟลงไปเกบไว ในไฟลตามรปแบบของโปรแกรม SCILAB (โดยทวไป จะเปนไฟลทปดทายดวย .scg)
Export บนทกรปกราฟลงไปในไฟลทเปนรปแบบเฉพาะ (specific format) เชน Postscript, Xfig, GIF, BMP, และ PPM เปนตน
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 ลบรปกราฟทแสดงอยในหนาตางกราฟ
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)
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
170
รปท 6.3 สญญาณไซนซอยด y = sin(2πft)
รปท 6.4 สญญาณ sin(2πft) และ cos(2πft)
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
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)') จะใหผลลพธเหมอนกน
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])
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]);
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 มดงน
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
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
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
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')
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) เขาไปในรปกราฟ
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
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 มรปแบบการใชงานอยสามแบบ คอ
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 ดานลางขวา
184
รปท 6.14 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plotframe
โดยทคาสง tics = [1, 10, 1, 5] หมายถงกาหนด ใหเสนแกน x มสบขดหลกและมหนงขดยอยระหวางขดหลก สวนเสน แกน y มหาขดหลกและมหนงขดยอยระหวางขดหลก ผลลพธทไดจากชดคาสงน แสดงในรปท 6.14
6.2.2.5 คาสง xstring เปนคาสงทใชบรรจ สายอกขระเขาไปในรปกราฟตามรปแบบและตาแหนงทกาหน ด มลกษณะการใชงานดงน
xstring(x, y, str, angle, box)
โดยทพารามเตอร
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)
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 กจะทาการลบหนาตางกราฟทกาลงทางานอย
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) ในระบบพกดฉากไดจากความสมพนธ ดงน
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) ตวอยางการใชงานคาสงเหลาน เชน
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)
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
191
รปท 6.18 ตวอยางรปกราฟแสดงผลลพธจากการใชชดคาสง สาหรบวาดกราฟสองมตทใชงานเฉพาะดาน
คาสงพนฐานสาหรบการวาดกราฟแบบสามมตในโปรแกรม SCILAB มรปแบบดงน
plot3d(x, y, z, [options])
โดยทพารามเตอร x และ y คอเวกเตอรทมขนาดเทากน และพารามเตอร z คอตวแปรตามทขนกบ คาของ x และ y ซงจะมจานวนเทากบผลคณของจานวนขอมลในเวกเตอร x กบจานวนขอมลในเวกเตอร y สาหรบพารามเตอร options มลกษณะการใชงานคอ
options = [alpha, theta, leg, flag, ebox]
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]
โดยท
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]
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) ดงนนผใชสามาร ถวาดรปพนผวรางแหไดจากคาสงนเชนกน
195
รปท 6.20 ตวอยางรปกราฟแสดงผลลพธจากการ ใชคาสง plot3d
รปท 6.21 ตวอยางรปกราฟแสดงผลลพธจากการใชคาสง plot3d1
ซงจะไดผลลพธตามรปท 6.21
นอกจากนถาตองการทราบความสมพนธระหวางสกบขนาดของคาในแกน z กสามารถทาไดโดยใชคาสง colorbar ซงมรปแบบการใชงานคอ
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 ดานบนซาย
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;
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) หรอกราฟเสนชนความสง เปนกราฟทเกดจากการเฉอนรปกรา ฟสามมตแลวมองจากดานบนลงมาจะไดออกมาเปนเสนชนความสง โดยแตละเสน ชนความสง ทมส
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) ทเทากน
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);
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);
202
รปท 6.25 ตวอยางรปกราฟแสดงผลลพธจากการใชชดคาสง สาหรบวาดกราฟสามมตทใชงานเฉพาะดาน
-->contour(x, y, z, 4, theta = 35, alpha = 15, flag = [1,1,4], ...
-->ebox = rect, zlev = -5);
ผลลพธทไดแสดงในรปท 6.26 ซงจะเหนไดวาการวาดกราฟแบบผสมนไมยงยาก ดงนนผใชสามารถ ทจะวาดกราฟแบบผสมใดๆ กไดโด ยใชคาสงวาดกราฟตางๆ ตามทไดอธบายไวขางตน เพอทจะได รปกราฟในแบบทตองการ
6.5 ตวอยางการวาดกราฟ ในสวนนจะยกตวอยางการวาดกราฟแบบตางๆ เพอใหเขาใจถงขนตอนในการวาดกราฟทมคณสมบต ตามทระบไว ดงตอไปน
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); //ใสเสนกรดสแดงในหนาตางกราฟ
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 ไดดงน
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
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 ถง π
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
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);
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 ดานขวา
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
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) กราฟเชงเสน