방정식 중 일차 방정식
은 너무 간단해서 공식이라고 까지 하지 않지만, 이차 방정식은 해를 구하기가 쉽지 않다. 따라서 근의 공식이 있다. 공식의 유도와 이를 활용하여 해를 구하는 코딩을 해보자. 다음 내용을 먼저 알아야 한다.
이차 방정식의 일반적인 형태는 다음과 같다.
위 수식에서 a, b, c는 실수인 상수이다. 이제 근을 구해보자. 양변을 a나누고 제곱식을 만들기 위해 수식을 약간 변형한다.
위의 식에서 제곱식을 풀면 아래와 같은 근의 공식을 얻을 수 있다.
루트안의 값에 따라 근이 달라진다. 따라서 그 값을 판별식이라고 한다. 판별식이 양수이면 2개의 실근, 영이면 1개의 실근, 음수이면 2개의 허근을 갖는다.
근의 공식이 있기 때문에 코딩은 어렵지 않다. 단지 a 가 0인 경우 예외처리, 그리고 판별식에 따라 값을 다르게 출력하면 된다.
- 인수분해
- 제곱근
- (선택) 허수
이차 방정식과 근의 공식
이차 방정식의 일반적인 형태는 다음과 같다.
위 수식에서 a, b, c는 실수인 상수이다. 이제 근을 구해보자. 양변을 a나누고 제곱식을 만들기 위해 수식을 약간 변형한다.
위의 식에서 제곱식을 풀면 아래와 같은 근의 공식을 얻을 수 있다.
루트안의 값에 따라 근이 달라진다. 따라서 그 값을 판별식이라고 한다. 판별식이 양수이면 2개의 실근, 영이면 1개의 실근, 음수이면 2개의 허근을 갖는다.
이차 방정식 (ax^2 + bx + c = 0)
해는?
근의 공식이 있기 때문에 코딩은 어렵지 않다. 단지 a 가 0인 경우 예외처리, 그리고 판별식에 따라 값을 다르게 출력하면 된다.
<!DOCTYPE html>
<html>
<title>이차 방정식</title>
<body>
<h4>이차 방정식 (ax^2 + bx + c = 0)</h4>
<form>
a: <input type="text" id="a" value="1"><br><br>
b: <input type="text" id="b" value="2"><br><br>
c: <input type="text" id="c" value="0"><br><br>
<input type="button" id="find_x" value="해 구하기"><br><br>
</form>
<p id="result">해는? </p>
<script>
document.getElementById("find_x").addEventListener("click", calc);
function calc() {
// 입력된 문자열을 숫자로 바꾸기
a = Number(document.getElementById("a").value);
b = Number(document.getElementById("b").value);
c = Number(document.getElementById("c").value);
if (isNaN(a) || isNaN(b) || isNaN(c)) {
document.getElementById("result").innerHTML = "숫자를 입력하세요.";
return;
}
if (a == 0) {
document.getElementById("result").innerHTML = "2차 방정식이 아닙니다.";
}
else {
var det = b * b - 4 * a * c;
if (det > 0) {
var x1 = (- b + Math.sqrt(det))/(2 * a);
var x2 = (- b - Math.sqrt(det))/(2 * a);
document.getElementById("result").innerHTML = "x1 = " + x1 + ", x2 = " + x2;
}
else if (det == 0)
{
var x = -b/(2 * a);
document.getElementById("result").innerHTML = "x = " + x + " (중근)";
}
else {
var x_r = -b/(2 * a);
var x_i = Math.sqrt(-det)/(2 * a);
document.getElementById("result").innerHTML = "x1 = " + x_r + " + i*(" + x_i + "), x2 = " + x_r + " - i*(" + x_i + ")";
}
}
}
</script>
</body>
</html>
댓글
댓글 쓰기