วันพฤหัสบดีที่ 4 กันยายน พ.ศ. 2557

การเขียนโปรแกรมด้วย Casio fx-5800P ตอนที่ 4 - ฟังก์ชั่นที่สำคัญในงานสำรวจ

ฟังก์ชั่นเป็นสิ่งสำคัญอย่างยิ่งในการเขียนโปรแกรมงานสำรวจ ในบทความนี้จะขออธิบายเฉพาะฟังก์ชั่นที่จำเป็นในงานสำรวจทั่วไปเท่านั้น


ฟังก์ชั่นตรีโกณมิติ sin(), cos(), tan()

รูปแบบการใช้ :


sin(ค่ามุม)

cos(ค่ามุม)

tan(ค่ามุม)

ผลลัพธ์ที่ได้จะออกมาเป็นค่า sine, cosine และ tangent ของมุมนั้นๆ



ฟังก์ชั่นส่วนกลับของตรีโกณมิติ sin¹(), cos¹(), tan¹()

รูปแบบการใช้ :

sin¹(ค่า sin)

cos¹(ค่า cos)

tan¹(ค่า tan)

ผลลัพธ์ออกมาเป็นค่ามุมของ sin, cos, tan นั้นๆ



ฟังก์ชั่น ■, ³, x², x, x¹

- รากที่สอง () เรียกใช้โดย กดปุ่ม "■"
ตัวอย่าง :
√(25)
ผลลัพธ์เท่ากับ 5

- รากที่สาม (³) เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย "("
ตัวอย่าง :
³√(27)
ผลลัพธ์เท่ากับ 3

- รากที่ x () เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย "x"
ตัวอย่าง :
8x√(256)   // รากที่ 8 ของ 256
ผลลัพธ์เท่ากับ 2 

- กำลังสอง (x²) เรียกใช้โดย กดปุ่ม "x²"
ตัวอย่าง :
7²
ผลลัพธ์เท่ากับ 49

- ยกกำลัง (x) เรียกใช้โดย กดปุ่ม "x"
ตัวอย่าง :
8^(5)
ผลลัพธ์เท่ากับ 32768

- ส่วนกลับของกำลัง (x¹) เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย ")"
ตัวอย่าง :
8¹
ผลลัพธ์เท่ากับ 0.125



ฟังก์ชั่นแปลงพิกัดฉากกับพิกัดเชิงขั้ว pol(), rec()

polar คือคำสั่งแปลงค่าพิกัดฉากไปเป็นพิกัดเชิงขั้ว ส่วน rectangular ก็คือการแปลงค่าจากพิกัดเชิงขั้วไปเป็นพิกัดฉาก หรือถ้าจะอธิบายอย่างง่ายในทางสำรวจ pol() คือคำสั่งหาค่า ระยะทาง และ Azimuth จาก ΔN กับ ΔE ส่วน rec() ก็คือคำสั่งหาค่า ΔN และ ΔE จาก ระยะทาง กับ Azimuth

รูปแบบการใช้  polar : เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย "+"


pol(ΔN,ΔE )

หลังจากใช้คำสั่ง pol() แล้ว ค่าระยะทางจะถูกเก็บไว้ที่ตัวแปร I(ไอ) ส่วนค่า Azimuth จะถูกเก็บไว้ที่ตัวแปร J

ตัวอย่าง : ที่จุด A มีพิกัดฉาก N = 100, E = 150 และที่จุด B มีพิกัดฉาก N = 45, E = 83 จงหาค่า Azimuth และ ระยะทางจากจุด A ไปจุด B

วิธีคำนวณ : เนื่องจากต้องการคำนวณจากจุด A ไปจุด B ดังนั้น ΔN = 45 - 100 และ ΔE = 83 - 150 (ค่า ΔN และ ΔE นั้น จะใช้ปลายทางลบต้นทางเสมอ) เมื่อได้ ΔN และ ΔE แล้วจึงใช้คำสั่ง

pol(45-100,83-150)

ผลลัพธ์จะแสดงออกมาหน้าจอดังนี้ 

r = 86.68333173
ϴ = -129.3824194

จากผลลัพธ์ค่า r คือระยะทาง ส่วน ϴ ก็คือค่า Azimuth ซึ่งค่า Azimuth นี้ก็คือค่ามุมที่เปิดจากทิศเหนือ(ศูนย์องศา) ผลลัพธ์จากตัวอย่างนี้ ค่า Azimuth ออกมาติดลบ หมายความว่าเป็นการเปิดมุมทวนเข็มนาฬิกาวิธีแก้คือนำค่า Azimuth ที่ได้บวกด้วย 360 ก็จะเป็นค่า Azimuth ที่ถูกต้องแบบตามเข็มนาฬิกา แต่ถ้าค่า ϴ เป็นค่าบวกก็แสดงว่าเปิดตามเข็มนาฬิกา ไม่ต้องบวก 360

ดังนั้นคำตอบของตัวอย่างนี้ก็คือ ระยะทางเท่ากับ 86.683 เมตร และ Azimuth เท่ากับ 230.6175806 องศา หรือ 230° 37' 3.29"


รูปแบบการใช้  rectangular : เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย "-"

rec(Distance,Azimuth)

หลังจากใช้คำสั่ง rec() แล้ว ค่า ΔN  จะถูกเก็บไว้ที่ตัวแปร I(ไอ) ส่วนค่า Δจะถูกเก็บไว้ที่ตัวแปร J

ตัวอย่าง : ตั้งกล้องที่จุด A มีพิกัดฉาก N = 540, E = 410 เซ็ต 0 ที่ทิศเหนือแล้วเปิดมุมราบตามเข็มนาฬิกาไปที่จุด B เป็นมุม 157° 24' 35" วัดระยะทางจากจุด A ไปจุด B ได้ 58.37 เมตร จงหาค่าพิกัดที่จุด B

วิธีคำนวณ : หาค่า ΔN และ ΔE โดยใช้คำสั่ง

rec(58.37,157°24°35°)

ผลลัพธ์จะแสดงออกมาหน้าจอดังนี้ 


X = -53.89158585    // ΔN

Y = 22.42217372    // ΔE


ผลลัพธ์ที่ได้ ค่า X คือ Δ ส่วน ก็คือค่า Δซึ่งค่าที่ได้นี้ยังไม่ใช่ค่าพิกัดฉากเนื่องจากเป็นเพียงค่าผลต่างของค่า N และ E จากจุดตั้งกล้องไปยังจุดปลายทาง ต้องนำค่านี้ไปบวกด้วยพิกัดต้นทางด้วยสูตร 


Nจุดปลาย = Nจุดต้น Δ
Eจุดปลาย Eจุดต้น ΔE


หรือ


NB = NA ΔN
EB = EA + ΔE

ดังนั้นตัวอย่างนี้ค่า NB จึงเท่ากับ 540 + (-53.89158585) = 486.108 และค่า EB เท่ากับ 410 + 22.42217372 = 432.422


ฟังก์ชั่นคณิตศาสตร์

- Absolute Abs() ค่าสัมบูรณ์หรือค่าที่ไม่มีเครื่องหมายลบ

รูปแบบการใช้ : เรียกใช้โดย กดปุ่ม "function"  "1:MATH"  เลื่อนลง  "1:Abs"
ตัวอย่าง :
Abs(5.4-9.3)
ผลลัพธ์เท่ากับ 3.9


- Integer Part Extraction Int() การถอดส่วนของจำนวนเต็มหรือการตัดทศนิยมออกไป
รูปแบบการใช้ : เรียกใช้โดย กดปุ่ม "function"  "1:MATH"  เลื่อนลง  "2:Int"
ตัวอย่าง :
Int(-7.504)
ผลลัพธ์เท่ากับ -7


- Fractional Part Extraction Frac() การถอดส่วนของเศษทศนิยมหรือการตัดจำนวนเต็มออกไปแต่ยังคงเครื่องหมายบวก/ลบไว้
รูปแบบการใช้ : เรียกใช้โดย กดปุ่ม "function"  "1:MATH"  เลื่อนลง  "3:Frac"
ตัวอย่าง :
Frac(-7.504)
ผลลัพธ์เท่ากับ -0.504


- Largest Integer Intg() หาค่าจำนวนเต็มที่มากที่สุดแต่ไม่เกินค่านั้น
รูปแบบการใช้ : เรียกใช้โดย กดปุ่ม "function"  "1:MATH"  เลื่อนลง  "4:Intg"
ตัวอย่าง :
Intg(7.504)
ผลลัพธ์เท่ากับ 7
Intg(-7.504)
ผลลัพธ์เท่ากับ -8    // เพราะ -8 เป็นจำนวนเต็มที่มีค่ามากที่สุดแต่น้อยกว่า -7.504


การปัดเศษทศนิยม

- ตั้งค่าการแสดงผลทศนิยมด้วย Fix เป็นการกำหนดการแสดงผลจำนวนทศนิยมตามที่กำหนด
รูปแบบการตั้งค่า : เรียกใช้โดย กดปุ่ม "SHIFT"  "MODE"  "6:Fix"  จำนวนทศนิยม
ตัวอย่าง : ตั้งค่าการแสดงผลทศนิยม 3 ตำแหน่งโดย "SHIFT"  "MODE"  "6:Fix"  3
กดค่า π  "EXE"
ผลลัพธ์เท่ากับ 3.142
หรือลองตั้งค่าการแสดงผลทศนิยม 6 ตำแหน่งโดย "SHIFT"  "MODE"  "6:Fix"  6
กดค่า π  "EXE"
ผลลัพธ์เท่ากับ 3.141593

ทั้งนี้ผลที่แสดงออกมาเป็นเพียงการปัดเศษเพื่อแสดงผลทางทางจอภาพเท่านั้นแต่ผลลัพธ์จริงๆ ไม่ได้มีการปัดเศษแต่อย่างใด ลองมาดูตัวอย่างต่อไป

ตั้งค่าการแสดงผลทศนิยม 1 ตำแหน่งโดย "SHIFT"  "MODE"  "6:Fix"  1
กดค่า π  "EXE"
ผลลัพธ์เท่ากับ 3.1 จากนั้นกดค่า
Ansx100000  "EXE"
ผลลัพธ์เท่ากับ 314159.3

จากผลลัพธ์จะเห็นได้ว่าการตั้งค่า Fix นั้นเป็นเพียงการแสดงผลการปัดเศษออกมาทางจอภาพเท่านั้นไม่ได้เป็นการปัดเศษค่าจริงแต่อย่างใด


- การตั้งค่าการแสดงผลทศนิยมปกติ Norm1 หรือ Norm2 คือการยกเลิกค่า Fix หรือกำหนดการแสดงผลกลับไปเป็นแบบปกติ ตั้งค่าโดย


สำหรับ Norm1 : "SHIFT"  "MODE"  "8:Norm"  "1"
สำหรับ Norm2 : "SHIFT"  "MODE"  "8:Norm"  "2"

ข้อแตกต่างระหว่าง Norm1 กับ Norm2 ตามที่คู่มือระบุคือ
Norm1 : 10²>|x|,|x|10¹ 
Norm2 : 10>|x|,|x|10¹

ลองมาทดสอบความแตกต่างของการตั้งค่าทั้งสองแบบตามตัวอย่างนี้

ตั้งค่าเป็น Norm1 แล้วทดสอบโดย


0.3  "EXE" ผลลัพธ์เป็น 0.3
0.099  "EXE" ผลลัพธ์เป็น 0.099
0.001  "EXE" ผลลัพธ์เป็น 1x10³
0.00074  "EXE" ผลลัพธ์เป็น 7.4x10

ต่อมาตั้งค่าเป็น Norm2 แล้วทดสอบโดย


0.3  "EXE" ผลลัพธ์เป็น 0.3
0.099  "EXE" ผลลัพธ์เป็น 0.099
0.001  "EXE" ผลลัพธ์เป็น 0.001
0.00074  "EXE" ผลลัพธ์เป็น 0.00074

จากผลการทดสอบค่าการแสดงผลทั้งสองแบบ ขอสรุปแบบเข้าใจไปเองว่า การตั้งค่า Norm1 นั้น ถ้าจำนวนเลขศูนย์หลังทศนิยมมีตั้งแต่ 2 ตัวขึ้นไป ผลลัพธ์จะเป็นการปัดค่าเป็นเลขชี้กำลัง(x10) ฉะนั้นโดยส่วนตัวคิดว่าการตั้งค่า Norm2 น่าจะเหมาะกับการเขียนโปรแกรมงานสำรวจมากกว่า


- Rounding Function Rnd() เป็นการปัดเศษทศนิยมแบบถาวรหรือเป็นการปัดเศษทศนิยมจริงๆ ไม่ใช่แบบ Fix เมื่อปัดเศษแล้วค่าจะเป็นไปตามผลลัพธ์ที่แสดงออกมาทางหน้าจอ คำสั่ง Rnd() จะใช้ร่วมกับ Fix เมื่อกำหนดค่า Fix ไว้เท่าไร คำสั่ง Rnd() ก็จะปัดเศษเท่านั้น

รูปแบบการใช้  : เรียกใช้โดย กดปุ่ม "SHIFT" ตามด้วย "0"
ตัวอย่าง : จากตัวอย่างการตั้งค่า Fix ตั้งค่าการแสดงผลทศนิยม 3 ตำแหน่งแล้ว
กดค่า π  "EXE"
ผลลัพธ์เท่ากับ 3.142 จากนั้นกดค่า
Ansx100000  "EXE"
ผลลัพธ์เท่ากับ 314159.265

จากนั้นลองทดสอบการใช้คำสั่ง Rnd() โดย
Rnd(π)  "EXE"
ผลลัพธ์เท่ากับ 3.142 จากนั้นกดค่า
Ansx100000  "EXE"
ผลลัพธ์เท่ากับ 314200.000

จะเห็นว่าหลังจากใช้คำสั่ง Rnd(π) ค่า π ได้ถูกปัดเศษเป็น 3 ตำแหน่งไปอย่างถาวร



จากทั้ง 4 บทความที่ผ่านมานี้ถ้าได้ลองอ่านและทำตามตัวอย่างทั้งหมดอย่างเข้าใจแล้ว ผู้เขียนคิดว่าน่าจะเพียงพอสำหรับการเริ่มเขียนโปรแกรมที่เป็นของตัวเองได้ ในบทต่อๆ ไปจะเป็นตัวอย่างการเขียนโปรแกรมที่พบบ่อยในงานสำรวจ



ไม่มีความคิดเห็น:

แสดงความคิดเห็น