1. พื้นฐานของฟังก์ชัน sin ในภาษา C
ในภาษา C การคำนวณฟังก์ชันตรีโกณมิติสามารถทำได้โดยใช้ไลบรารีมาตรฐาน math.h
ซึ่งในบรรดาฟังก์ชันเหล่านี้ ฟังก์ชัน sin ใช้สำหรับหาค่าไซน์ของมุม บทความนี้จะแนะนำวิธีใช้ฟังก์ชัน sin ในภาษา C การประยุกต์ใช้งาน และวิธีการสร้างฟังก์ชัน sin ขึ้นมาเอง
1.1 ฟังก์ชัน sin คืออะไร?
ฟังก์ชัน sin รับค่ามุมในหน่วยเรเดียนและส่งคืนค่าของไซน์ มุมในหน่วยเรเดียนเป็นการวัดมุมโดยใช้ค่าคงที่ทางคณิตศาสตร์ π (พาย) และหากต้องการแปลงจากองศามาเป็นเรเดียน จำเป็นต้องใช้สูตรแปลง
2. พื้นฐานของไลบรารี math.h ในภาษา C
เพื่อใช้ฟังก์ชันตรีโกณมิติ ให้เพิ่ม math.h
ในโค้ด ซึ่งจะช่วยให้สามารถใช้ฟังก์ชัน sin และฟังก์ชันคณิตศาสตร์อื่น ๆ ได้
#include <stdio.h>
#include <math.h>
int main() {
double angle = 1.57; // เรเดียนที่เท่ากับ 90 องศา
double result = sin(angle);
printf("sin(1.57) = %fn", result);
return 0;
}
โค้ดนี้จะแสดงค่าไซน์ของมุม 90 องศา (1.57 เรเดียน) เป็น 1.000000
2.1 การแปลงระหว่างองศาและเรเดียน
สูตรแปลงองศาเป็นเรเดียนคือ:
#define DEG_TO_RAD(deg) ((deg) / 180.0 * 3.141592653589793)
int main(void) {
double deg = 90.0;
double rad = DEG_TO_RAD(deg);
printf("sin(%f องศา) = %fn", deg, sin(rad));
return 0;
}
โปรแกรมนี้จะแปลง 90 องศาเป็นเรเดียน และใช้ค่านั้นกับฟังก์ชัน sin

3. ตัวอย่างการประยุกต์: การสร้างคลื่นไซน์
คลื่นไซน์เป็นรูปคลื่นที่ใช้บ่อยในการสังเคราะห์เสียงและการประมวลผลสัญญาณ โค้ดต่อไปนี้จะแสดงวิธีสร้างคลื่นไซน์และพิมพ์ค่าของแต่ละจุดตัวอย่าง (sample)
#include <stdio.h>
#include <math.h>
int main() {
int samples = 100;
double frequency = 1.0;
double amplitude = 1.0;
double phase = 0.0;
double sampleRate = 100.0;
for (int i = 0; i < samples; i++) {
double t = i / sampleRate;
double value = amplitude * sin(2 * M_PI * frequency * t + phase);
printf("ตัวอย่าง %d: %fn", i, value);
}
return 0;
}
โปรแกรมนี้สร้างคลื่นไซน์ตามความถี่และอัตราสุ่ม (sample rate) ที่กำหนด ซึ่งสามารถนำข้อมูลที่ได้ไปใช้กับงานประมวลผลสัญญาณหรือเสียง
4. การสร้างฟังก์ชัน sin เอง: การขยายแบบ Maclaurin
ในภาษา C สามารถสร้างฟังก์ชัน sin ขึ้นมาเองได้ ซึ่งมีประโยชน์ในกรณีที่ไม่สามารถใช้ไลบรารีมาตรฐาน หรือจำเป็นต้องปรับแต่ง การขยายแบบ Maclaurin เป็นการประมาณค่าฟังก์ชัน sin ด้วยสมการพหุนาม
4.1 ฟังก์ชัน sin โดยใช้การขยาย Maclaurin
สมการประมาณฟังก์ชัน sin ด้วยการขยาย Maclaurin คือ:
ตัวอย่างโค้ดภาษา C ตามสมการนี้:
#include <stdio.h>
#include <math.h>
double factorial(int n) {
double result = 1.0;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
double my_sin(double x) {
double result = 0.0;
for (int i = 0; i < 10; i++) { // คำนวณ 10 พจน์
int power = 2 * i + 1;
double term = pow(x, power) / factorial(power);
if (i % 2 == 0) {
result += term;
} else {
result -= term;
}
}
return result;
}
int main() {
double angle = 1.57;
printf("sin(1.57) = %fn", my_sin(angle));
return 0;
}
โปรแกรมนี้คำนวณค่า sin โดยใช้การขยาย Maclaurin ซึ่งความแม่นยำขึ้นอยู่กับจำนวนพจน์ที่ใช้ โดยประมาณ 10 พจน์ก็เพียงพอสำหรับความแม่นยำสูง
5. ข้อผิดพลาดและข้อควรระวัง
การคำนวณด้วยตัวเลขทศนิยมแบบลอย (floating-point) อาจเกิดปัญหาความแม่นยำ โดยเฉพาะเมื่อค่ามีขนาดเล็กหรือใหญ่เกินไป ในการสร้างฟังก์ชัน sin เอง จำนวนพจน์ที่มากขึ้นจะทำให้ต้นทุนการคำนวณสูงขึ้น อีกทั้ง การขยายแบบ Maclaurin อาจให้ความแม่นยำต่ำเมื่อมุมมีค่ามากกว่า ±π ดังนั้นควรทำการปรับมุมให้อยู่ในช่วงที่เหมาะสมก่อนคำนวณ
6. สรุป
บทความนี้ได้อธิบายตั้งแต่พื้นฐานการใช้ฟังก์ชัน sin ในภาษา C การประยุกต์ใช้งาน ไปจนถึงการสร้างฟังก์ชัน sin เองด้วยการขยาย Maclaurin การใช้ฟังก์ชันตรีโกณมิติในภาษา C สามารถนำไปใช้ได้หลากหลาย เช่น การจำลองฟิสิกส์ และการประมวลผลเสียง อีกทั้งการสร้างฟังก์ชันเองยังช่วยให้เข้าใจโครงสร้างการทำงานของฟังก์ชันได้ลึกซึ้งยิ่งขึ้น หวังว่าจะเป็นประโยชน์ต่อโครงการของผู้อ่าน