ในฟิสิกส์ การคำนวณความต้านทานเทียบเท่า (equivalent resistance) มี 2 รูปแบบการต่อ:
1. ต่ออนุกรม (Series)
R = R1 + R2 + R3 + ...
2. ต่อขนาน (Parallel)
1/R = 1/R1 + 1/R2 + 1/R3 + ... R = 1 / (1/R1 + 1/R2 + 1/R3 + ...)
ตัวอย่างโค้ด
const r1 = 5, r2 = 7, r3 = 9;
const equivalentResistance = (combination = 'parallel', ...resistors) => {
if (combination === 'parallel') {
// ผิดพลาดในโค้ดต้นฉบับ: ต้องใช้ 1/(sum of 1/R) ไม่ใช่ (1/acc) + (1/val)
// โค้ดที่ถูกต้อง:
const sumInverse = resistors.reduce((acc, val) => acc + 1/val, 0);
return 1 / sumInverse;
}
// ต่ออนุกรม: บวกค่าทั้งหมด
return resistors.reduce((acc, val) => acc + val, 0);
};
console.log(equivalentResistance('parallel', r1, r2, r3)); // ~2.027
console.log(equivalentResistance('series', r1, r2, r3)); // 21
แก้ไขโค้ดต้นฉบับ
โค้ดต้นฉบับมีข้อผิดพลาดในการคำนวณแบบขนาน ใช้ (1/acc) + (1/val) ซึ่งไม่ถูกต้อง วิธีที่ถูกต้องคือหาผลรวมของ 1/R ก่อน แล้วค่อยหาค่าผกผัน
ผลลัพธ์ (โค้ดที่แก้ไขแล้ว)
2.0277777777777777 // parallel 21 // series
ประยุกต์ใช้: การออกแบบวงจรไฟฟ้า การคำนวณระบบอิเล็กทรอนิกส์