JavaScriptで二次方程式の解(根)を求める方法
二次方程式の解を求めるJavaScript関数
本記事では、3つの数値(二次方程式における二次項の係数、一次項の係数、定数)を引数として受け取り、二次方程式の解を求めるJavaScript関数を作成します。
解が実数の場合はその解を配列で返し、実数解が存在しない場合は false を返す仕様とします。
解の求め方の基本
二次方程式 ax² + bx + c = 0 の解は、判別式 D = b² − 4ac を使って判定できます。
- D > 0 の場合:異なる2つの実数解を持つ
- D = 0 の場合:重解(1つの実数解)を持つ
- D < 0 の場合:実数解を持たない(虚数解)
実数解が存在する場合は、解の公式 x = (−b ± √D) / 2a から2つの解を計算します。
コード例
以下が実際の実装コードです。
const coefficients = [3, 12, 2];
const findRoots = co => {
const [a, b, c] = co;
const discriminant = (b * b) - 4 * a * c;
if(discriminant < 0){
// 実数解は存在しない
return false;
};
const d = Math.sqrt(discriminant);
const x1 = (d - b) / (2 * a);
const x2 = ((d + b) * -1) / (2 * a);
return [x1, x2];
};
console.log(findRoots(coefficients));
出力結果
コンソールへの出力は以下の通りです。
[ -0.17425814164944628, -3.825741858350554 ]
コードの解説
この関数の処理の流れを順に見ていきましょう。
- 係数の取り出し: 分割代入を使い、配列から係数 a、b、c を取り出します。
- 判別式の計算: b² − 4ac を計算して、実数解の有無を判定します。
- 虚数解の判定: 判別式が負の場合、実数解が存在しないため
falseを返します。 - 解の計算:
Math.sqrt()で判別式の平方根を求め、解の公式に代入して2つの解を算出します。
このように、判別式による条件分岐と解の公式を組み合わせることで、あらゆる二次方程式の実数解を簡単に求めることができます。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時