Professional Documents
Culture Documents
MATLAB
MATRIX LABORATORY
อาจารยชยั พร ตั้งทอง
ภาควิชาคณิตศาสตร คณะวิทยาศาสตร
มหาวิทยาลัยเชียงใหม
2
การใชงานเบื้องตน
MATLAB
หากตองการตรวจสอบหรือดูคาตัวแปรทีก่ ําหนดไว
ก็สามารถกระทําไดโดยการพิมพตัวแปรทีต่ องการดูคาขอมูล
บนหนาตางคําสั่งไดโดยตรง
เราสามารถนําคา A ไปคํานวณตอได
จากตัวอยางจะเห็นวาคาของ B จะมีคาเทากับ 14
เกิดจากการนําคา A = 12 บวก 2
จะไดวาเราสามารถกําหนดคาของตัวแปรใหเทากับนิพจน
ของตัวแปรอืน่ ได
3
คําสั่ง disp
โปรแกรม MATLAB สามารถแสดงคาขอมูลในรูปแบบตัวอักษรหรือตัวเลขไดโดยกําหนด
เปนชื่อตัวแปรหรือขอความไดดวยการใชคําสั่ง dispโปรแกรม MATLAB จะตรวจสอบตัวอักษร
หรือขอความที่อยูในเครื่องหมายคําพูดของคําสั่งนี้แลวทําการแสดงตัวอักษรหรือขอความที่อยูใน
วงเล็บ แตถาไมมีเครื่องหมายคําพูดอยูในวงเล็บ โปรแกรม MATLAB จะแปรความหมายของ
ตัวอักษรหรือขอความที่อยูในวงเล็บเปนคาขอมูลแลวแสดงคานั้นออกมา ตัวอยางเชน
ตัวดําเนินการ
ตัวดําเนินการเปรียบเทียบและตรรกะ
เครื่องหมายพิเศษ
เครื่องหมายหรือสัญลักษณที่นิยมใชบอยในโปรแกรม MATLAB สวนใหญจะเปน
เครื่องหมาย % และ ; เครื่องหมาย % จะเอาไวใชแสดงหมายเหตุ ทุกอยางที่อยูตามหลังเครื่องหมาย
นี้ในบรรทัดเดียวกัน โปรแกรมจะไมสนใจความหมาย เรามักจะเอาไวใชเขียนคําอธิบายความหมาย
ของโปรแกรมที่เราเขียนขึ้น สวนเครื่องหมาย ; จะเอาไวใชแยกเมตริกซหรือคําสั่ง และใชสําหรับ
เปนคําสั่งไมใหแสดงคาผลลัพธที่ไดจากการประมวลผล
เครื่องหมาย รายละเอียด
. จุดทศนิยม
() กําหนด subscripts
= กําหนดคา
[] สรางเวกเตอรและเมตริกซ
: สรางเวกเตอร
… กระทําคําสั่งยังบรรทัดตอไป
, แยก element ภายในเมตริกและ subscripts
ฟงกชนั คณิตศาสตรพื้นฐานและคาตัวแปรเฉพาะ
โปรแกรม MATLAB ไดกําหนดคาตัวแปรเฉพาะที่จําเปนตอการใชงานในการคํานวณโดย
คาตัวแปรเฉพาะนี้จะใชในการคํานวณบอยมาก ดังนั้นเพื่อความสะดวกและไมใหเสียเวลาจึงได
สรางฟงกชันและคาตัวแปรนําไปใชงานไดทันที คาตัวแปรเฉพาะในโปรแกรม MATLAB
ตัวแปร รายละเอียด
pi π = 22/7
i −1
Inf ∞
NaN Not-a-Number
เก็บผลจากการคํานวณคาปจจุบันใด ๆ ที่
Ans
ไมไดทําการกําหนดชื่อตัวแปรของผลลัพธ
6
ฟงกชนั ในการคํานวณทางพีชคณิต
sqrt(x) เปนฟงกชันในการหารากที่สองของ x
ตัวอยางเชน fix(–1.2) = –1
fix(0.99) = 0
fix(1.5) = 1
fix(1.89) = 1
ตัวอยางเชน floor(–1.2) = –2
floor(–1.9) = –2
floor(0.99) = 0
floor(1.45) = 1
7
round(x) เปนคําสั่งใชหาจํานวนเต็มบวกโดยการปดเศษทศนิยมตามนัยสําคัญของจุดทศนิยม
ตัวอยางเชน round(–1.12) = –1
round(–1.54) = –2
round(0.55) = 1
round(1.01) = 1
ตัวอยางเชน
เศษที่ไดจากการหาร 10 ดวย 2 คือ 0
เศษที่ไดจากการหาร 10 ดวย 4 คือ 2
เศษที่ไดจากการหาร 10 ดวย 6 คือ 4
เศษที่ไดจากการหาร 25 ดวย 6 คือ 1
ตัวอยางเชน
−2 =2
4.5 = 4.5
1 + 2 i = 1 + 4 = 5 = 2.2361
3 + 4 i = 9 + 16 = 25 = 5
8
คําสั่งหรือฟงกชันที่ใชในการหาคาทางตรีโกณมิติ
การหาคาทางตรีโกณมิติเปนการหาคาโดยการใชความสัมพันธของวงกลมหนึ่งหนวยที่มี
การวัดมุมเปนหนวยองศาและ Radian แตในการคํานวณของโปรแกรม MATLAB จะใชการ
คํานวณในหนวยของ radian ดังนั้นกอนการคํานวณถาคุณใชหนวยองศาก็ควรเปลี่ยนใหเปนหนวย
ของ radian กอนการคํานวณซึ่งสามารถกระทําไดโดยการเทียบบรรญัติไตรยางคไดดังนี้ คือ
180 องศา เทากับ π หรือ pi เรเดียน
ถา x องศา เทากับ x*pi/180 เรเดียน
เชน ถาตองการเปลี่ยนมุม 75 องศาเปนเรเดียนก็สามารถเปลี่ยนไดโดยการแทนคา x เปน
75 องศา ดังนัน้ จะไดคาเรเดียนเปน 75*pi/180 เทากับ 1.309 เรเดียน ซึง่ คา pi มีคาเทากับ 3.1416
ความสัมพันธระหวางคาตาง ๆ ในทางตรีโกณมิตกิ ําหนดเปนคา sine, cosine, tangent,
arcsine, หรือ อินเวอรสของ sine, arccosine หรืออินเวอรสของ cosine, และ arctangent หรืออิน
เวอรสของ tangent การหาคาตาง ๆ เหลานีจ้ ะอาศัยความสัมพันธของสามเหลี่ยมมุมฉากเปนสําคัญ
ฟงกชันในการคํานวณคาทางตรีโกณมิติมีดงั นี้
คําสั่ง รายละเอียด
ฟงกชันนีใ้ ชคาํ นวณหาคา sine ของ x โดยที่คา x ตองอยูใน
sin(x)
หนวยของเรเดียน
ฟงกชันนีใ้ ชคาํ นวณหาคา cosine ของ x โดยที่คา x ตองอยู
cos(x)
ในหนวยของเรเดียน
ฟงกชันนีใ้ ชคาํ นวณหาคา tangent ของ x โดยที่คา x ตองอยู
tan(x)
ในหนวยของเรเดียน
ฟงกชันที่ใชในการคํานวณคาอินเวอรสของ sine ซึ่งผลที่ได
asin(x) จากการคํานวณจะเปนมุมเรเดียนที่อยูระหวาง -π/2 ถึง π/2
โดยที่คา x จะตองอยูในชวง -1 ถึง 1
ฟงกชันที่ใชในการคํานวณคาอินเวอรสของ cosine ซึ่งผลที่
acos(x) ไดจากการคํานวณจะเปนมุมเรเดียนที่อยูระหวาง 0 ถึง π
โดยที่คา x จะตองอยูในชวง -1 ถึง 1
ฟงกชันที่ใชในการคํานวณคาอินเวอรสของ tangent ซึ่งผลที่
atan(x) ไดจากการคํานวณจะเปนมุมเรเดียนที่อยูระหวาง -π/2 ถึง
π/2 โดยที่คา x จะตองอยูใ นชวง -1 ถึง 1
9
การหาคาฟงกชันไฮเพอรโบลิก
ฟงกชันไฮเพอรโบลิกเปนฟงกชัน Natural Logarithm function ซึ่งฟงกชันนี้จะสัมพันธกัน
กับคา ex เมื่อคา e มีคาประมาณ 2.71828 คา ex นี้สามารถหาไดโดยใชฟง กชัน exp(x)
การหาคาฟงกชันไฮเพอรโบลิก มีคําสั่งดังนี้
คําสั่ง รายละเอียด
sinh(x) ฟงกชันนีใ้ ชสําหรับการหาคาไฮเพอรโบลิก sine ของ x
cosh(x) ฟงกชันนีใ้ ชสําหรับการหาคาไฮเพอรโบลิก cosine ของ x
tanh(x) ฟงกชันนีใ้ ชสําหรับการหาคาไฮเพอรโบลิก tangent ของ x
การหาคาฟงกชันลอการิทึม มีคําสั่งดังนี้
คําสั่ง รายละเอียด
log(x) ฟงกชันนีใ้ ชสําหรับการหาคา natural logarithm ของ x
ฟงกชันนีใ้ ชสําหรับการหาคา common logarithms
log10(x)
(logarithm ฐาน10) ของ x
ตัวอยางเชน
ln(2) = 0.6931
log10(2) = 0.3010
10
การสรางอารเรย
ในการกําหนดคาตัวแปรและขอมูลตาง ๆ ของโปรแกรม MATLAB สวนใหญจะทําการ
เก็บขอมูลตาง ๆ ไวในอารเรยขอมูลที่เปนเวกเตอรและเมตริกซซึ่งมีความสําคัญมาก และเรา
สามารถสรางอารเรยขอมูลไดดังตอไปนี้คอื
x = [x1]
เชน x = [100]
เปนเมตริกซทมี่ ี 1 แถว 1 หลัก
x = [x1 x2 … xn]
หรือ
x = [x1,x2,…,xn]
เชน x = [ 0 1 2 3 4]
เปนเมตริกซทมี่ ี 1 แถว 5 หลัก
11
เชน x = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
เปนเมตริกซทมี่ ี 3 แถว 3 หลัก
เชน A = 1:5
จะไดเมตริกซขนาด 1 แถว 5 หลัก
โดยที่ A = [ 1 2 3 4 5 ]
12
ตัวอยางเชน A = 1:2:9
จะไดเมตริกซ A = [ 1 3 5 7 9 ]
หรือ B = 0:−2: −8
จะไดเมตริกซ B = [ 0 −2 −4 −6 −8 ]
คณิตศาสตรที่เกี่ยวกับอารเรย
โปรแกรม MATLAB จะใชเครื่องหมายทางคณิตศาสตร ในการคํานวณคาตาง ๆ
ตัวอยางเชน การคํานวณระหวางคาสเกลารกับสเกลาร อารเรยกับอารเรย คาสเกลารกบั อารเรย เปน
ตน โดยในหัวขอนี้จะกลาวถึงการดําเนินการคํานวณคาตาง ๆ ดังตอไปนี้
การดําเนินการระหวางคาสเกลารกับอารเรย
การคํานวณคาสเกลารกับอารเรยนี้จะเหมือนกับการคํานวณทางคณิตศาสตรทั่วไปโดย
คาสเกลารจะทําการบวก การลบ การคูณ และการหาร กับทุก ๆ คาในอารเรยที่ทําการคํานวณ
ตัวอยางเชน
13
การดําเนินการระหวางคาอารเรยกับอารเรย
การดําเนินการทางคณิตศาสตรระหวางอารเรยจะไมงายเหมือนการดําเนินการระหวาง
อารเรยกับคาสเกลารทั้งนี้เพราะการดําเนินการระหวางอารเรยกับอารเรยจะตองพิจารณาขนาดหรือ
มิติของอารเรยที่จะตองทําการคํานวณดวย ตัวอยางเชน การบวก การลบ และการหาร จะตองกระทํา
ในอารเรยที่มมี ิติเทากัน สวนการคูณนัน้ จะตองพิจารณาวาจํานวนหลักของอารเรยหรือเมตริกซแรก
จะตองมีจํานวนหลักเทากับจํานวนแถวของอารเรยหรือเมตริกซหลังจึงจะทําการคํานวณไดและการ
ยกกําลังจะพิจารณาวาอารเรยที่ทําการคํานวณนั้นจะตองมีจํานวนแถว และจํานวนหลักเทากันจึงจะ
ทําการคํานวณได
ถาเปนการคํานวณแบบจุดตอจุด (element by element or dot product: จะกระทําระหวาง
ตําแหนงทีต่ รงกันของเมตริกซ) จะพิจารณาวาอารเรยที่ทําการคูณ หารและยกกําลัง แบบจุดตอจุด
(element by element) จะตองมีขนาดเทากัน การดําเนินการแบบจุดนีจ้ ะใชเครื่องหมาย ( “.” ) ไว
หนาเครื่องหมายที่จะทําการดําเนินการ ตัวอยางเชน การคูณจะใชเครื่องหมาย ( “.*” ) และ การหาร
จะใชเครื่องหมาย ( “./” ) สําหรับผลลัพธที่ไดจากการบวกและการลบอารเรยทั่ว ๆ ไปและการ
ดําเนินการแบบจุดจะใหคาผลลัพธเทากัน ดังนั้นโปรแกรม MATLAB จึงไมนําการบวกและการลบ
แบบจุดตอจุดมาใชงาน สวนการคูณ การหารและการยกกําลังในการคํานวณแบบอารเรยทั่วไปแบบ
จุดตอจุดนั้นจะทําใหผลลัพธที่ตางกัน เชน
A*B หมายถึงการคูณเมตริกซธรรมดาคือนําแถวของเมตริกซแรกคูณกับหลักของเมตริกซหลัง
A.*B หมายถึงการนําสมาชิกตําแหนงตรงกันคูณกัน
A^2 หมายถึง A*A สวน A.^2 หมายถึงนําสมาชิกแตละตัวของ A มายกกําลังสอง
A/B หมายถึง A*B-1 สวน A./B หมายถึงนําสมาชิกตําแหนงตรงกันหารกัน
14
zeros(size(A)) คําสั่งนี้จะใชสรางเมตริกซศูนยที่มีขนาดเทากับขนาดเมตริกซ A ใด ๆ
⎡1 2 3⎤
เชนหากเรามีเมตริกซ A = ⎢ ⎥
⎣4 5 6⎦
ซึ่งมีขนาด 2×3
หากตองการเมตริกซ 0 ที่มีขนาดเดียวกับ A
ใชคําสั่ง zeros(size(A))
15
เมตริกซที่เปนหนึ่งทั้งหมด : จะใชคําสั่งตอไปนี้
ones(n) คําสั่งนี้ใชสรางเมตริกซที่มีคาเปนหนึ่งทั้งหมดซึ่งเปนเมตริกซจัตุรัสที่มีขนาด n×n
eye(size(A)) คําสั่งนี้ใชสรางเมตริกซเอกลักษณที่มีขนาดเทากับเมตริกซ A
17
การจัดการอารเรยโดยทั่วไป
ในเมื่ออารเรยหรือเมตริกซเปนพื้นฐานของโปรแกรม MATLAB จะมีหลายวิธีที่ใชสาํ หรับ
จัดการอารเรยหรือเมตริกซเพื่อสรางประสิทธิภาพในการทํางาน ในสวนนี้จะกลาวถึงการจัดการ
เมตริกซในโปรแกรม MATLAB ซึ่งมีดังตอไปนี้
A(r,c) = k กําหนดใหแถวที่ r หลักที่ c ของเมตริกซ A มีคาเทากับ k
A(:) การนําหลักทั้งหมดของเมตริกซมาตอกันเปนหลักเดียว
21
สมการโพลิโนเมียล
สมการโพลิโนเมียลที่อยูใ นรูปของสมการมาตรฐานจะเปนดังนี้
f (x) = anxn + an-1 + … + a1x + a0
เราจะกําหนดใหเมตริกซ A เปนเมตริกซสัมประสิทธิ์ของพหุนาม ซึ่งเราจะใช A แทน f(x)
โดยที่ A = [an an-1 … a1 a0] หาก f(x) เปนพหุนามกําลัง n เมตริกซ A จะมีขนาด 1×n+1
การหารากของสมการโพลิโนเมียล
จะหารากคําตอบของสมการ f(x) = 0
คําสั่ง รายละเอียด
คํานวณหารากของสมการโพลิโนเมียล เมื่อ A เปนคาสัมประสิทธิ์ของ
roots(A) สมการโพลิโนเมียลที่เรียงจากเลขยกกําลังมากไปนอยซึ่งเราเรียก A วาเปน
เวกเตอรสัมประสิทธิ์
4 3 2
รากของสมการ f ( x ) = x + x − 7 x − x + 6 = 0
คือ −3, −1, 2 และ 1
5
รากของสมการโพลิโนเมียล f ( x ) = x − 4 x + 5 = 0
คือ −1.6304, −0.2371+1.5155i, −0.2371−1.5155i,
1.0523+0.4426i และ 1.0523−0.4426i
22
หรือ
การเปลี่ยนกลับจากรากของสมการโพลิโนเมียลไปเปนสมการโพลิโนเมียล
ถาเรามีคารากของสมการโพลิโนเมียลแตไมทราบวาฟงกชันของโพลิโนเมียลที่สอดคลอง
กับคารากของเรานั้นวามีสมการเปนเชนไร ใชฟงกชัน poly
คําสั่ง รายละเอียด
การเปลี่ยนกลับจากรากของสมการโพลิโนเมียลไปเปนสมการโพลิโน
poly(A)
เมียล เมื่อ A คือ รากของโพลิโนเมียลที่ตองการหาสมการโพลิโนเมียล
การหาอนุพันธ
คําสั่ง รายละเอียด
diff(f) การหาอนุพนั ธของฟงกชัน f
diff(f,n) การหาอนุพนั ธของฟงกชัน f อันดับที่ n
d 4
(x ) = 4 x3
dx
d2 4 2
( x ) = 12 x
dx 2
d
(cos x ) = − sin x
dx
d4
(cos x ) = cos x
dx 4
d x 1
( xy + x 2 + ) = y + 2 x +
dx y y
d 2 xy 2 xy
2 ( e − sin( x + y )) = y e + sin( x + y )
dx
24
การอินทิเกรต
คําสั่ง รายละเอียด
int(f(x)) ∫ f ( x )dx
int(f(x,y),x) ∫ f ( x , y )dx
b
int(f(x),a,b) ∫ f ( x )dx
a
b
int(f(x,y),x,a,b) ∫ f ( x , y )dx
a
3 x4
∫ ( x + 1)dx = 4 + x + C
2 2 x3 2 x2y
∫ ( x + y + xy )dx = 3 + y x + 2 + C
4
3
∫ ( x )dx = 64
0
2π
− 2 (cos 2 ( πy ) − 1)
∫ (sin( xy ))dx = y
0
25
หาคําตอบของสมการเชิงอนุพันธอันดับหนึ่ง
คําสั่ง รายละเอียด
แกสมการเชิงอนุพันธอันดับหนึ่ง โดยการใส
dsolve(‘eqn’)
สมการลงไปในเครื่องหมายคําพูด (‘eqn’)
แกสมการเชิงอนุพันธอันดับหนึ่ง โดยการใส
dsolve(‘eqn’,’cond’) สมการลงไปในเครื่องหมายคําพูด (‘eqn’)
และใสเงื่อนไขตามลงไป(’cond’)
คําตอบของสมการเชิงอนุพนั ธ
dy
+ ty = 0
dt
−t 2 / 2
คือ y = C1e
คําตอบของสมการเชิงอนุพนั ธ
dy
+ 5 y = 9e 2 t ; y ( 0 ) = 4
dt
9 2 t 19 −5 t
คือ y = e + e
7 7
26
diary
คําสั่ง diary เปนคําสั่งที่ใชเก็บคําสั่งที่เราใชในการทํางานแตละครั้ง วิธีการใชคือ
กอนที่จะทํางานให พิมพคําสั่ง diary แลวตามดวยชื่อไฟลที่ตองการจะเก็บไว จากนั้นก็ทํางาน
ตามปกติ โปรแกรมจะทําการบันทึกขอมูลทุกอยางที่เราพิมพลงไป หลังจากเสร็จสิ้นการทํางานแลว
อยากจะยกเลิกการบันทึก ใหใชคําสั่ง diary off โปรแกรมก็จะหยุดบันทึกทั้งหมด
27
M-file
คําสั่ง รายละเอียด
clear เซตคาเริ่มตนใหมใหตวั แปรทั้งหมด
n=input(‘text’) รับคา n ทางแปนพิมพ
if condition
module1 การเช็คเงื่อนไขวาจริงหรือเท็จ
else ถาจริงทํา module1 ถาเท็จทํา module2
module2 เปนตน
end
if condition
module1
elseif condition
module2 เปนการเช็คเงือ่ นไขที่มากกวา 1 เงื่อนไข
else
module3
end
for k=start:stop การทําซ้ําเทากับจํานวนรอบที่ใสลงไป
module โดย k จะเริ่มตนที่คา start และจบที่คา stop
end เพิ่มคา k ทีละ 1
for k=start:step:stop การทําซ้ําเทากับจํานวนรอบที่ใสลงไป
module โดย k จะเริ่มตนที่คา start และจบที่คา stop
end เพิ่มคา k เทากับคาของ step ที่ใส