C:
การทำงานกับตัวเลขซับซ้อน
วิธีการ:
ในภาษา C, จำนวนเชิงซ้อนได้รับการสนับสนุนโดย Standard Library, โดยเฉพาะ <complex.h>
ในการใช้งาน, ประกาศตัวแปรด้วยชนิด double complex
(หรือ float complex
สำหรับความแม่นยำเดี่ยว) นี่คือวิธีการดำเนินการพื้นฐาน:
#include <stdio.h>
#include <complex.h>
int main() {
double complex z1 = 1.0 + 2.0*I; // ประกาศตัวเลขเชิงซ้อน 1+2i
double complex z2 = 1.0 - 2.0*I; // ประกาศอีกตัวเลขเชิงซ้อนหนึ่ง 1-2i
// การบวก
double complex sum = z1 + z2;
printf("ผลรวม: %.2f + %.2fi\n", creal(sum), cimag(sum)); // ผลลัพธ์: ผลรวม: 2.00 + 0.00i
// การคูณ
double complex product = z1 * z2;
printf("ผลคูณ: %.2f + %.2fi\n", creal(product), cimag(product)); // ผลลัพธ์: ผลคูณ: 5.00 + 0.00i
// จำนวนเชิงซ้อนสลับสัญกรณ์
double complex conjugate = conj(z1);
printf("จำนวนเชิงซ้อนสลับสัญกรณ์ของ z1: %.2f + %.2fi\n", creal(conjugate), cimag(conjugate)); // ผลลัพธ์: จำนวนเชิงซ้อนสลับสัญกรณ์ของ z1: 1.00 - 2.00i
// ขนาด
double magnitude = cabs(z1);
printf("ขนาดของ z1: %.2f\n", magnitude); // ผลลัพธ์: ขนาดของ z1: 2.24
// ขั้นตอน
double phase = carg(z1);
printf("ขั้นตอนของ z1: %.2f\n", phase); // ผลลัพธ์เป็นเรเดียน
return 0;
}
โปรดทราบว่า I
เป็นค่าคงที่ที่แสดงถึงหน่วยจินตภาพใน <complex.h>
ฟังก์ชั่นเช่น creal()
และ cimag()
ใช้เพื่อแยกส่วนจริงและส่วนจินตภาพตามลำดับ ในขณะที่ conj()
ดำเนินการคำนวณจำนวนเชิงซ้อนสลับสัญกรณ์ สำหรับขนาดและขั้นตอน (อาร์กิวเมนต์) ของจำนวนเชิงซ้อน cabs()
และ carg()
ถูกใช้
การศึกษาเจาะลึก
การสนับสนุนจำนวนเชิงซ้อนใน C เป็นสิ่งที่ค่อนข้างใหม่ เนื่องจากมีการบรรจุมาตรฐานใน C99 ก่อนหน้านี้ การเลขคณิตของจำนวนเชิงซ้อนใน C นั้นยุ่งยาก บ่อยครั้งที่ต้องใช้โครงสร้างข้อมูลและฟังก์ชั่นที่กำหนดเอง การรวม <complex.h>
และชนิดข้อมูลเชิงซ้อนให้ความสามารถที่สำคัญในการเพิ่มขีดความสามารถของภาษาสำหรับการใช้งานวิทยาศาสตร์และวิศวกรรม อย่างไรก็ตาม ควรทราบว่าภาษาบางตัว เช่น Python นั้นมีการสนับสนุนจำนวนเชิงซ้อนที่เข้าใจง่ายกว่าโดยใช้ชนิดข้อมูลที่ให้มาและชุดฟังก์ชั่นไลบรารีที่หลากหลายมากขึ้น แม้กระนั้น ประสิทธิภาพและการควบคุมที่ C มอบให้ทำให้เป็นตัวเลือกที่ต้องการสำหรับการทำงานคอมพิวเตอร์ประสิทธิภาพสูง แม้ว่าจะหมายถึงการจัดการกับไวยากรณ์สำหรับการคำนวณเชิงซ้อนที่ค่อนข้างมากกว่าก็ตาม