การแกไขโจทย้ คณ์ตศาสตริ และฟ์...
TRANSCRIPT
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 1
การแกไขโจทยคณตศาสตรและฟสกสดวย โปรแกรม SCILAB (2)
ผศ.ดร.ปยะ โควนททววฒน
[email protected]://home.npru.ac.th/piyahttp://www.scilab.org
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 2
ขอบเขตของเนอหาการเขยนโปรแกรมดวย SCILAB การใชคาสงการวนลป
การใชคาสงทดสอบเงอนไข
การพฒนาฟงกชน
ไฟลสครปตและไฟลฟงกชน
พนฐานการวาดกราฟการวาดกราฟสองมต
การวาดกราฟสามมต
ตวอยางการประยกตใชงาน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 3
การเขยนโปรแกรมดวย SCILABการใชคาสงการวนลป
การใชคาสงทดสอบเงอนไข
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 4
คาสงการวนลป
การเขยนโปรแกรมโดยทวไป บางครงมความจาเปนตองคานวณชดคาสงบางอยางซาเปนจานวนหลายๆ รอบ ดงนนการใชคาสงวนลป (loop) จงมความจาเปนมากสาหรบการพฒนาโปรแกรม
ใน SCILAB คาสงสาหรบการวนลปม 2 แบบคอ คาสง for
คาสง while
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 5
คาสง for
ตวอยาง:-->L = 5;-->x = [ ];-->for i = 1:L--> x(i) = i;-->end
-->x'
for variable = expression
instruction_1;
instruction_n;end
รปแบบการใชงาน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 6
คาสง for – แบบฝกหด
จงเขยนโปรแกรมโดยใชคาสง for ในการหาผลรวมของเลขจานวนเตมคตงแตคา 1 ไปเรอยๆ เปนจานวน N = 10 ครง นนคอหาคา y จาก
( )…elementsN
12N531y +++++=
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 7
คาสง while
คลายกบคาสง for เพยงแต คาสง while จะมการทดสอบเงอนไขใน expression ทกๆ รอบของการวนซา
ตวอยาง:-->L = 5;
-->x = [ ];
-->i = 1;
-->while i <= L
--> x(i) = i;
--> i = i + 1;
-->end
-->x'
while expression
instruction_1;
instruction_n;end
รปแบบการใชงาน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 8
คาสง while – แบบฝกหด
จงเขยนโปรแกรมโดยใชคาสง while ในการหาผลรวมของเลขจานวนเตมคตงแตคา 1 ไปเรอยๆ เปนจานวน N = 10 ครง นนคอหาคา y จาก
( )…elementsN
12N531y +++++=
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 9
คาสงทดสอบเงอนไข
มประโยชนมากสาหรบการเขยนโปรแกรมคอมพวเตอรทซบซอน
ใน SCILAB คาสงสาหรบการ ทดสอบเงอนม 2 แบบคอ
คาสง if
คาสง select - case
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 10
คาสง if
คาสง if ⇒ ทดสอบเงอนไขความสมพนธวาเปนจรงหรอเปนเทจ
ลกษณะการใชงานแบบท 1
if expression then
instruction_1;
instruction_n;end
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 11
คาสง if (ตอ)
ลกษณะการใชงานแบบท 2
if expression then
instruction_1;
else
instruction_2;
end
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 12
คาสง if (ตอ)
ลกษณะการใชงานแบบท 3
if expression_1 then
instructions_1;
elseif expression_2 then
instructions_2;
else
instruction_3;
end
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 13
คาสง if – ตวอยาง-->N = 3;-->A = [ ];-->for i = 1:N --> for j = 1:N --> if i < j then--> A(i, j) = 3; --> elseif i == j then --> A(i, j) = 2; --> else --> A(i, j) = 1;--> end--> end-->end
จงสรางเมทรกซขนาด 3x3 โดยท
• ทกอลเมนตทอยใตเสนทแยงมมหลก มคาเปน 1
• ทกอลเมนตทในแนวเสนทแยงมมหลก มคาเปน 2
• ทกอลเมนตทอยเหนอเสนทแยงมมหลก มคาเปน 3
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
211321332
A
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 14
แบบฝกหด
จงเขยนไฟลฟงกชน (โดยใชคาสง if) เพอหาคาสงสดของเลขจานวนจรงสามจานวน
จงเขยนไฟลฟงกชนทมรปแบบการเรยกใชงานคอ
[a, b, c, d] = MoneyExchange(m)
เพอทาหนาทเปลยนจานวนเงน m บาท ใหเปน
ธนบตรใบละ 100 บาทจานวน a ใบ
ธนบตรใบละ 20 บาทจานวน b ใบ
เหรยญสบบาทจานวน c เหรยญ
เหรยญหนงบาทจานวน d เหรยญ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 15
การเขยนโปรแกรมดวย SCILABการพฒนาฟงกชน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 16
การพฒนาฟงกชน
การพฒนาฟงกชนขนมาใชงานรวมกบโปรแกรม SCILAB
ไฟลสครปต (File script) และไฟลฟงกชน (File function) เปนสงทมประโยชนมากในการพฒนาโปรแกรม
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 17
ไฟลสครปตเปนไฟลขอมลทรวบรวมคาสงตางๆ ทตองการใหโปรแกรม SCILAB ทางานบรรจไวในไฟลเดยวสะดวกตอการทางานทตองการแบงแยกสวนของขนตอนการทางานแตละขนตอนใหชดเจน เพอจะไดงายตอการตรวจสอบและแกไข
การตรวจสอบและแกไขในไฟลสครปตทาไดงายโดยการใชโปรแกรม เอดเตอรทวไปเชน Notepad, WordPad หรอ “Scipad”
เปนไฟลทปดทายดวย .sce
ใชคาสง exec ในการเรยกไฟลสครปตไปประมวลผล การทางานของไฟลสครปตจะเทยบเทากบการปอนคาสงผานโปรแกรม SCILAB โดยตรงตามปกตทละคาสงทอยในไฟลสครปต
ตวแปรทงหมดทใชในไฟลสครปต ⇒ ตวแปรประเภทโกลบอล
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 18
ไฟลฟงกชนทาหนาทเสมอนเปนฟงกชนหนงโปรแกรม SCILAB
เปนไฟลทปดทายดวย .sci (เรยกวา “Sci-file”)
ใชโปรแกรม เอดเตอรทวไปเชน Notepad, WordPad หรอ “Scipad” ในการเขยนหรอแกไขไฟลฟงกชน
ใชคาสง exec หรอ getf ในการเรยกไฟลฟงกชนไปประมวลผล
ตวแปรทงหมดทใชในไฟลฟงกชนจะถอวาเปนตวแปร ประเภทโลคอล
ทาใหผพฒนาโปรแกรมสามารถสรางฟงกชนใหมๆ ขนมาใชงานไดอยางเปนอสระจากผอน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 19
รปแบบและขอกาหนดการเขยนไฟลฟงกชน
ตองเรมตนดวยคาวา “function” สวนคาปดทาย “endfunction” จะมหรอไมมกได
ชอของฟงกชนนนคอ “function_name” จะตองเหมอนกบชอของ SCI-file (ชอ “function_name.sci” ) ทกประการ
function [y1, y2, ..., yn] = function_name(x1, x2, ..., xm)
instruction_1;
instruction_n;
endfunction
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 20
ไฟลฟงกชน – ตวอยางจงสรางฟงกชนเพอหาผลรวมของเลขจานวนเตมบวกตงแตคา 1 ถงคา N ทมการเรยกใชงานดงน
y = MySum(N)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 21
ไฟลฟงกชน – วธทาเปด SciPad เพอเขยนไฟลฟงกชนดงน
บนทกขอมลนในชอไฟล MySum.sci
function [y] = MySum(N)y = 0;for i = 1:N
y = y + i;end endfunction
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 22
ทดลองใชงาน
-->y = MySum(10)
-->exists('MySum')
-->exec('MySum.sci'); //เทากบ getf('MySum.sci')
-->exists('MySum')
-->y = MySum(5)
คาสง exists ⇒ ใชในการยนยนการมอยจรงของไฟล
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 23
การเขยนฟงกชนแบบอน ไลน
สามารถกาหนดฟงกชนเขาไปทหนาตางคาสงไดเลย เมอกาหนดเสรจแลวสามารถเรยกใชงานไดทนท ไมตองทาการโหลดคาสง
วธการเขยนฟงกชนแบบอน ไลนเรมตนฟงกชนดวยคาสงวา function และลงทายดวย endfunction
ตวอยาง:-->clear;
-->function [y] = MySum(N); y = 0; for i = 1:N; ...
-->y = y + i; end; endfunction;
-->y = MySum(5)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 24
นอกจากนยงสามารถใชคาสง deff
ตวอยาง:-->clear;
-->deff('y = MySum(N)', 'y=0; for i = 1:N; y=y + i; end')
-->y = MySum(5)
deff('[เอาตพต] = function_name(อนพต)', 'ชดคาสง')
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 25
คาสง tic และ toc
คาสง tic เปนคาสงทใชในการจบเวลาเรมตนการทางาน ของชดคาสง
คาสง toc ซงจะทาหนาทในการหยดเวลาทตงไวจากการใช คาสง tic พรอมทงแสดงผลของเวลาทใชไปออกหนาจอ
ตวอยาง:-->tic-->deff('[y] = fsum(N)', 'y=0; for i=1:N, y=y+1; end');-->y = fsum(100)-->toc
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 26
การเขยนโปรแกรมดวย SCILABเทคนคการพฒนาฟงกชน
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 27
เทคนคการพฒนาฟงกชน
โปรแกรม SCILAB เปนโปรแกรมททางานบนพนฐานของเมทรกซ
พยายามใชประโยชนจากโครงสรางของเมท รกซใหมากทสด พยายามหลกเลยงการใชคาสงวนลปตางๆ ใหมากทสด
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 28
เทคนคการพฒนาฟงกชน – ตวอยาง
จงหาคา y จาก
∑=
⎟⎟⎠
⎞⎜⎜⎝
⎛ −+=200000
1i2
2
5i12i3iy
-->y = 0;-->tic-->for i=1:200000-->y = y + (3*i^2 + 2*i - 1)/(5*i^2);-->end-->toc-->y
แบบท 1
-->tic-->i = 1:200000;-->y = sum((3*i.^2 + 2*i - 1)./(5*i.^2));-->toc-->y
แบบท 2
แบบไหนทางานเรวกวา ?
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 29
การวาดกราฟสองมตพนฐานการวาดกราฟสองมต
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 30
พนฐานการวาดกราฟสองมต
คาสง plot ⇒ วาดกราฟสองมตบนระบบพกดฉาก x-y
plot(x, y) หรอ plot(y)
โดยทพารามเตอร x = 1:size(y,'*')
ตวอยาง:-->t = 0:0.01:2;-->f = 1;-->y = sin(2*%pi*f*t);-->plot(t, y) -->xtitle('A sinusoidal wave', 'Time (t)', 'Amplitude')
( )fty π2sin=
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 31
หนาตางกราฟ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 32
การกอปปรปกราฟเลอกเมน File ⇒ Copy to clipboard ⇒ EnhMetafile
Paste ในตาแหนงทตองการ
การแกไขรปกราฟเลอกเมน Edit ⇒ Figure Properties ⇒ จะไดหนาตาง Figure Editor ออกมา
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 33
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 34
การเปลยนคณลกษณะของเสนกราฟ
ในหนาตาง Figure Editor ⇒ Edit properties for: ⇒Polyline(1)
เปลยนส ⇒ แทป Style ⇒ Line color:
เปลยนลกษณะของเสนกราฟ ⇒ แทป Style ⇒ Line:
เปลยนรปแบบของเสนกราฟ ⇒ แทป Style ⇒ Mark style: และ Mark size:
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 35
พนฐานการวาดกราฟการวาดกราฟสองมต
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 36
การวาดกราฟสองมตแบบทวไปคาสงวาดกราฟสองมตอกแบบหนงทนาสนใจคอ
โดยทไมม i วาดกราฟเชงเสนโดยใชสเกลแบบธรรมดา
หรอสเกลแบบลอการทม (Logarithm scale)
i = 2 วาดกราฟขนบนได (Step function)
i = 3 วาดกราฟแทง (Vertical bar)
i = 4 วาดกราฟเชงเสนโดยใชลกศรแสดงทศทางของเสนกราฟ
plot2di(x, y, [options])
options = [style, axesflag, leg, rect, logflag, nax, frameflag]
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 37
style = [j] โดยทคาของพารามเตอร j จะเปนตวกาหนดรปแบบของเสนกราฟ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 38
style = [j] ⇒ ถา j > 0
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 39
axesflag = [j] โดยทคาของพารามเตอร j จะเปนตวการกาหนดลกษณะของเสนแกนในหนาตางกราฟ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 40
leg = " description 1 @description 2 ..." ใชในการใส ขอความบรรยาเสนกราฟแตละเสน
rect = [xmin, ymin, xmax, ymax] ใชกาหนดขนาดของเฟรมรปภาพ
xmin และ xmax ใชกาหนดคาตาสดและคาสงสดของเสนแกน x
ymin และ ymax ใชกาหนดคาตาสดและคาสงสดของเสนแกน y
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 41
logflag ใชในการกาหนดลกษณะของเสนแกน x และเสนแกน y ใหใชสเกลแบบธรรมดาหรอสเกลแบบลอการทม
logflag ม 4 แบบไดแก "nn", "nl", "ln" หรอ "ll"
พารามเตอรตวแรกจะอางถงเสนแกน x และพารามเตอรตวทสองจะอางถงเสนแกน y โดยท
n หมายถงใหใชสเกลแบบธรรมดา
l หมายถงใหใชสเกลแบบลอการทม
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 42
-->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");
ตวอยาง
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 43
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 44
คาสง subplot
คาสง subplot(m, n, k) ⇒ สรางหนาตางกราฟยอยจานวน m (แถว) x n (คอลมน) หนาตาง โดยใหหนาตางลาดบท k ทางานลาดบของหนาตางจะเรมตนจากมมบนซาย แลวเรยงจากซายไปขวา และจากบนลงลาง
1 2 3
4 5 6
subplot(2, 3, 2)
subplot(2, 3, 6)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 45
คาสงในการจดการรปกราฟ
xtitle('title_name', 'x_axis', 'y_axis') ⇒ กาหนดชอของรปกราฟ ชอของเสนแกน x และชอของเสนแกน y
xgrid(j) ⇒ ใสเสนกรด ส j (ตารางหนา 14) เขาไปในรปกราฟ
scf(j) ⇒ กาหนดใหหนาตางกราฟหมายเลข j เปนหนาตางทางาน
clf(j) ⇒ ลบรปกราฟทแสดงอยในหนาตางกราฟหมายเลข j
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 46
กราฟเชงขว
โดยทวไปเราสามารถทจะเปลยนจด (x, y) ทแสดงถงตาแหนงบนรปกราฟในระบบพกดฉากใหเปนลกษณะเชงขวทกาหนดโดยจดพกด (r, θ) ไดโดยท r คอขนาดและ θ คอมม ตามความสมพนธดงน
x
y
( )yx,
r
θ22 yxr += ⎟
⎠⎞
⎜⎝⎛= −
xytanθ 1
( )θrcosx = ( )θrsiny =
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 47
การวาดกราฟเชงขวทาไดโดยการใชคาสง
โดยทtheta คอคามม θ
r คอคาความยาวของรศม
options มรปแบบการใชงานดงน
polarplot(theta, r, [options])
options = [style, strf, leg, rect]
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 48
กราฟเชงขว – ตวอยาง
-->t = 0:0.01:2*%pi;
-->polarplot(sin(7*t), cos(8*t))
Example: r = sin(2θ)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 49
การวาดกราฟสองมตแบบพเศษ
วาดกราฟโพล-ซโร (Pole-zero plot)plzr
วาดกราฟอแวนรทโลคส (Evans root locus)evans
วาดกราฟไนควตซ (Nyquist plot)nyquist
วาดกราฟแสดงขนาดของโบดไดอะแกรมgainplot
วาดกราฟของโบดไดอะแกรม (Bode diagram) ทงกราฟแสดงขนาด (Magnitude plot) และกราฟแสดงมม (Phase plot) ซงมประโยชนมากทางดานวศวกรรมควบคมอตโนมต (Automatic control engineering)
bode
วาดกราฟสนามเวกเตอรแบบสองมต (2-D vector field)champ
วาดกราฟคอนทวร (Contour surface) จากรปกราฟสองมต contour2d
วาดกราฟสแสดงพนผว (Surface) แบบสองมตgrayplot
วาดกราฟทวไปแบบสองมต ทกาหนดโดยฟงกชนทางคณตศาสตรfplot2d
ความอธบายคาสง
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 50
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 51
แบบฝกหดกาหนดให y = 4x2 โดยท 0 ≤ x ≤ 100 จงวาดกราฟตอไปนกราฟเชงเสน กราฟลอการทมในแนวแกน x กราฟลอการทมในแนวแกน yกราฟลอการทมทงในแนวแกน x และแกน y
กาหนดให a และ b เปนเลขจานวนจรง และ 0 ≤ θ ≤ 2π จงวาดกราฟของสมการตอไปนในระบบพกดเชงขว
( )θ2sin2r +=
( )2θsin3r =
2θr =
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 52
การวาดกราฟสามมต
ไมยากเพยงแตตองเขาใจถงรปแบบของขอมลทจะปอนใหกบคาสง
ใชขอมลทงหมดสามชดสาหรบเสนแกน x, เสนแกน y และเสนแกน z ทอยในพกดคารทเซยน x-y-zเวกเตอร x เปนตวกาหนดคาในเสนแกน x
เวกเตอร y เปนตวกาหนดคาในเสนแกน y
ตวแปรตาม z มคาเปลยนแปลงไปตามคา x และ y ดงนนคา zนจะมจานวนเทากบผลคณของจานวนขอมลในเวกเตอร x กบจานวนขอมลในเวกเตอร y
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 53
คาสงพนฐานสาหรบการวาดกราฟแบบสามมต
โดยทx และ y คอเปนเวกเตอรทมขนาดเทากน
z เปนตวแปรตามทข นกบคา x และ y มขนาดจานวนเทากบผลคณ ของจานวนขอมลในเวกเตอร x กบจานวนขอมลในเวกเตอร y
options มลกษณะการใชคอ
plot3d(x, y, z, [options])
options = [alpha, theta, leg, flag, ebox]
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 54
alpha และ theta เปนคาจานวนจรงในการกาหนดมมองศาของจดทกาลงถกพจารณาในระบบพกดทรงกลม
alpha แสดงมมยก (Elevation angle) alpha > 0 ⇒ มมทยกขน
alpha < 0 ⇒ มมทยกลง
คาดฟอลตคอ alpha = 35
theta แสดงมมกวาด (Azimuth angle) theta > 0 ⇒ มมททวนเขมนาฬกา
theta < 0 ⇒ มมทตามเขมนาฬกา
คาดฟอลตคอ theta = 45
αθ
x
y
z
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 55
ตวอยาง: จงวาดกราฟของสมการ -->x = linspace(0, 1, 21); //ขนาด 1x21
-->y = linspace(0, 1, 21); //ขนาด 1x21
-->z = abs(0.5*cos(2*%pi*x)'*cos(2*%pi*y)); //ขนาด 21x21
-->plot3d(x, y, z);
linspace(a, b, c) ⇒ แบงระยะจากคา a ถงคา b ออกเปน c ชวง
( ) ( )y]2cos*x2cos*0.5z ππ=
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 56
0.00
0.25
0.50
Z
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
X
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
Y
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 57
0.00
0.25
0.50
Z
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
X
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
Y
ถาเราตองการใหมการไลโทนสตามขนาดของคาในแกน z กสามารถทาไดโดยการใชคาสง plot3d1 ดงน -->clf;
-->plot3d1(x, y, z);
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 58
ถาตองการทราบความสมพนธระหวางสกบขนาดของคาใน แกน z เรากสามารถทาไดโดยใชคาสง colorbar ซงมรปแบบการใชงานคอ
umin = คาตาสดของขนาดของคาในแกน z umax = คาสงสดของขนาดของคาในแกน z colminmax = [1 nb_colors] เปนเวกเตอรขนาด 1x2 โดยท
nb_colors คอจานวนสทจะใชในรปกราฟ
colorbar(umin, umax, [colminmax])
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 59
ตวอยาง:-->zmin = min(z);-->zmax = max(z);-->clf; -->colorbar(zmin, zmax, [1 30]);-->plot3d1(x, y, z);
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 60
1.9e-033
0.13
0.25
0.38
0.5
0.00
0.25
0.50
Z
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
X
0.00.1
0.20.3
0.40.5
0.60.7
0.80.9
1.0
Y
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 61
การแกโจทยสมการการเคลอนท
สมการ การเคลอนทของวตถทมความเรงคงท
เมอ s = ระยะทาง(เมตร) a = ความเรง (เมตร/วนาท2)v = ความเรวปลาย(เมตร/วนาท) u = ความเรวตน(เมตร/วนาท)t = เวลา (วนาท)
2
22
212
atuts
asuvatuv
uts
+=
+=+=
=
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 62
ตวอยางการแกโจทยสมการการเคลอนทคนขบรถคนหนงรอไฟเขยวอยทสแยก ทนททสญญาณไฟเปลยนเปนสเขยวเขา เยยบคนเรงเพอออกรถทนท ถาความเรงของรถเขามคาเทากบ 5 m/s2
ก) เขาใชเวลาเทาไรทเยยบคนเรงจนกระทงเขามความเรวเทากบ 25m/sข) เมอรถเขามความเรวเทากบ 25m/s รถเขาหางจากสแยกเปนระยะทางเทาไร
ขอ ก).-->t = [0:1:20];-->u= 0;-->a= 5;-->v =u+ a*t;-->t(find(v==25))-->plot(t,v)// กราฟแสดงความสมพนธระวางเวลากบความเรว
ขอ ข).-->s = u*t+0.5*a*t^2;-->s(find(t==5)) -->plot(t,s) //กราฟแสดงความสมพนธระหวาง
ระยะทางกบเวลา
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 63
การวาดกราฟของภาคตดกรวยสมการวงกลม
สมการวงร
สมการพาราโบลา
222 )()( rkxhy =−+−
)(4)( 2 kychx −±=− )(4)( 2 hxcky −±=−
1)()(
1)()(
2
2
2
2
2
2
2
2
=−+−
=−+−
aky
bhx
bky
ahx
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 64
ตวอยางการวาดกราฟของวงกลมจากสมการ
ยายขางหาคา y จะได
-->x = [2:0.1:6];-->y1 = -sqrt(4-(x-4)^2)+3;-->y2 = sqrt(4-(x-4)^2)+3;-->plot(x, y1)-->plot(x, y2)
222 2)4()3( =−+− xy
3)4(4 2 +−−±= xy
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 65
ตวอยางการวาดกราฟวงรจากสมการ
ยายขางหาคา y จะได
-->x = [-3:0.1:5];-->y1 = -sqrt((1-(x-1)^2/16)*4)+4;-->y2 = sqrt((1-(x-1)^2/16)*4)+4;-->plot(x,y1)-->plot(x,y2)
14)4(
16)1( 22
=−+− yx
44).16)1(1(2
+−−±= xy
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 66
การวาดกราฟบาราโบลาจากสมการ
ยายขางหาคา y จะได
-->x= [-15:0.1:23];-->y = ((x- 4)^2)/(-16)+5;-->plot(x,y)ขอควรระวง ถาสมการใดทมคาเปน บวกและลบ จะตองสราง
สมการ 2 สมการคอ สมการทเปนบวกบวกและลบ
)5(16)4( 2 −−=− yx
516)4( 2
+−−= xy
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 67
การประยกตของภาคตดกรวยตวอยาง จงหาจดตดของวงกลม (y-1)2+(x-2)2 = 4 และเสนตรง y = 3x-2
x = [0:0.01:4];y1 = -sqrt(4-(x-2)^2)+1; // สมการวงกลมy2 = sqrt (4-(x-2)^2)+1; // สมการวงกลมy3 = 2*x-2 ; // สมการเสนตรงplot(x,y1)plot(x,y2)plot(x,y3)find(abs(y1-y3)<0.01) // หาตาแหนงท y1 = y3find(abs(y2-y3)<0.01) // หาตาแหนงท y2 = y3x(find(abs(y1-y3)<0.01)) //คา x เมอ y1 = y3x(find(abs(y2-y3)<0.01)) //คา x เมอ y2 = y3y3(find(abs(y1-y3)<0.01)) //คาy3 เมอ y1 = y3y3(find(abs(y2-y3)<0.01)) //คา y3 เมอ y2 = y3
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 68
ตวอยางการประยกตใชงานอนๆ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 69
ตวอยางการประยกตใชงาน
เวกเตอรและเมทรกซ Logical เมอนามาคานวณทางคณตศาสตรกบคาสเกลาร เวกเตอรและเมทรกซเหลานสามารถแทนไดดวยเวกเตอรและเมทรกซของคาสเกลารทมอลเมนตเปนคา 0 กบคา 1 โดยทคา 0 จะใชแทนถอยคาทเปนเทจ
คา 1 จะใชแทนถอยคาทเปนจรง
ตวอยาง-->x = [1>2 1<3 2>=3 3<=3 2==3 1<>2];
-->2*x
-->2*[0 1 0 1 0 1]
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 70
การใชงานเวกเตอรและเมท รกซ Logical สาหรบวาดกราฟ
การแกไขปญหาคาอนนต
การแกไขปญหาการหารดวยคาศนย
การสรางกราฟแบบไมตอเนอง
การตดขอมลบางสวนของกราฟ
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 71
การแกไขปญหาคาอนนต
ตวอยาง:
-->x = -3*%pi/2:%pi/100:3*%pi/2;
-->y = tan(x);
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 72
วธแกไข
-->x = -3*%pi/2:%pi/100:3*%pi/2;
-->y = tan(x);
-->y = y .* (abs(y)<1e10);
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 73
การแกไขปญหาการหารดวยคาศนย
ตวอยาง: การวาดกราฟ y = sin(x)/x
-->x = -20:0.1:20;
-->y = sin(x)./x;
!--error 27
division by zero...
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 74
วธแกไข
-->x = -15:0.1:15;
-->x = x + (x==0)*%eps;
-->y = sin(x)./x;
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 75
การสรางกราฟแบบไมตอเนอง
ตวอยาง: ตองการแสดงกราฟเฉพาะคาบวกของ y = sin(x)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 76
วธแกไข
-->x = [-15:0.1:15];
-->y = sin(x);
-->y = y.*(y>=0);
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 77
การตดขอมลบางสวนของกราฟ
ตวอยาง 1:
-->x = [-15:0.01:15];
-->y = sin(x);
-->y = y.*(abs(y)<=0.95);
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 78
ตวอยาง 2:
-->x = [-15:0.01:15];
-->y = sin(x);
-->y = y.*(y<=-0.95 | y>=0.95);
-->plot(x, y)
ผศ.ดร.ปยะ โควนททววฒน มหาวทยาลยราชภฏนครปฐม 79
THANK YOU