Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Calculating resistance of n devices - JavaScript
In Physics, the equivalent resistance of resistors varies based on their connection type. When resistors are connected in series, their resistances add directly:
R_series = R1 + R2 + R3
For parallel connections, we use the reciprocal formula:
1/R_parallel = (1/R1) + (1/R2) + (1/R3)
We need to create a JavaScript function that calculates equivalent resistance for any number of resistors in either series or parallel configuration.
Series Connection Implementation
For series resistors, we simply sum all resistance values:
const calculateSeries = (...resistors) => {
return resistors.reduce((total, resistance) => total + resistance, 0);
};
// Test with 3 resistors
console.log("Series (5?, 7?, 9?):", calculateSeries(5, 7, 9) + "?");
Series (5?, 7?, 9?): 21?
Parallel Connection Implementation
For parallel resistors, we calculate the sum of reciprocals, then take the reciprocal of the result:
const calculateParallel = (...resistors) => {
const reciprocalSum = resistors.reduce((sum, resistance) => sum + (1/resistance), 0);
return 1 / reciprocalSum;
};
// Test with same resistors
console.log("Parallel (5?, 7?, 9?):", calculateParallel(5, 7, 9).toFixed(3) + "?");
Parallel (5?, 7?, 9?): 2.268?
Complete Solution
Here's the complete function that handles both connection types:
const equivalentResistance = (combination = 'series', ...resistors) => {
if (resistors.length === 0) return 0;
if (combination === 'parallel') {
const reciprocalSum = resistors.reduce((sum, resistance) => {
return sum + (1/resistance);
}, 0);
return 1 / reciprocalSum;
}
// Default to series connection
return resistors.reduce((total, resistance) => total + resistance, 0);
};
// Test both configurations
const r1 = 5, r2 = 7, r3 = 9;
console.log("Series resistance:", equivalentResistance('series', r1, r2, r3) + "?");
console.log("Parallel resistance:", equivalentResistance('parallel', r1, r2, r3).toFixed(3) + "?");
// Test with different values
console.log("Parallel (10?, 20?):", equivalentResistance('parallel', 10, 20).toFixed(2) + "?");
Series resistance: 21? Parallel resistance: 2.268? Parallel (10?, 20?): 6.67?
Comparison of Connection Types
| Connection Type | Formula | Result (5?, 7?, 9?) |
|---|---|---|
| Series | R? + R? + R? | 21? |
| Parallel | 1/(1/R? + 1/R? + 1/R?) | 2.268? |
Key Points
- Series connections increase total resistance
- Parallel connections decrease total resistance below the smallest individual resistor
- The function uses rest parameters (...resistors) to accept any number of resistance values
- Always validate input to avoid division by zero in parallel calculations
Conclusion
This function efficiently calculates equivalent resistance for both series and parallel configurations. Series adds resistances directly, while parallel requires reciprocal calculations to find the equivalent value.
