JavaScriptでn個の抵抗器の合成抵抗を計算する方法
物理学において、直列に接続された抵抗器(たとえば3個)の合成抵抗 R は、各抵抗値の単純な合計として次のように表されます。
R = R1 + R2 + R3
一方、並列接続された抵抗器の合成抵抗は、各抵抗の逆数の和として求められます。
1/R = 1/R1 + 1/R2 + 1/R3
したがって、合成抵抗そのものは次の式で計算できます。
R = 1 / ((1/R1) + (1/R2) + (1/R3))
そこで本記事では、'series'(直列)または 'parallel'(並列)という文字列と、任意の個数の抵抗値を受け取り、それらの合成抵抗を返すJavaScript関数を作成します。
コード例
以下がこの関数の実装例です。
const r1 = 5, r2 = 7, r3 = 9;
const equivalentResistance = (combination = 'parallel', ...resistors) => {
if (combination === 'parallel') {
// 並列接続:各抵抗の逆数の合計の逆数が合成抵抗
const inverseSum = resistors.reduce((acc, val) => acc + (1 / val), 0);
return 1 / inverseSum;
}
// 直列接続:抵抗値の単純な合計
return resistors.reduce((acc, val) => acc + val, 0);
};
console.log(equivalentResistance('parallel', r1, r2, r3));
console.log(equivalentResistance('series', r1, r2, r3));出力結果
コンソールには以下のように出力されます。
2.202797202797203 21
コードの解説
- 可変長引数(...resistors) を使用することで、抵抗器が何個あっても柔軟に対応できます。
- 直列接続の場合は、
reduce()を使ってすべての抵抗値を単純に加算します。 - 並列接続の場合は、まず各抵抗の逆数を合計し、その総和の逆数を取ることで正確な合成抵抗を求めます。
reduce()の第2引数に初期値0を渡しているため、配列が空でもエラーにならず安全に動作します。
このように、式の意味を正しく理解して実装することで、直列・並列どちらの回路にも対応できる汎用的な関数になります。
-
JavaScriptで配列の中央値を計算する方法をわかりやすく解説
中央値(メジアン)とは、数値データを小さい順に並べたときにちょうど中央に位置する値のことです。JavaScriptで配列の中央値を求めるには、まず配列をソートし、その後要素数に応じて処理を分けます。要素数が奇数の場合は中央の1つの要素を、偶数の場合は中央に近い2つの要素の平均値を中央値として返します。中央値の計算手順配列をソートする - 数値配列の場合、sort() メソッドに比較関数 (a, b) => a - b を渡して正しく昇順ソートします。中央のインデックスを求める - Math.floor(arr.length / 2) で中央位置を整数として取得します。要素数の判定を行う
-
JavaScriptで配列の平均値を計算する方法
JavaScriptで配列の平均値を求めるには、配列内のすべての要素を合計し、その合計を配列の長さ(要素数)で割ります。要素の合計を求めるには、forEach()メソッドやreduce()メソッドを使うと簡単に実装できます。コード例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initia