앞에서 일차 방정식
을 배웠다. 정확한 용어로 이야기 하자면 일원 일차 방정식이다. 이제 연립 방정식에 대해서 배워보자.
이원 일차 연립방정식에서 "원"이라는 것은 미지수의 개수를 뜻하고, "차"라는 것은 미지수의 지수가 1승이라는 것이다. 일원 일차 연립방정식은 해가 무조건 존재한다. 미지수가 두 개인 이원 일차 방정식은 해가 무수히 많다. 따라서 추가적인 방정식이 필요하다.
여기서는 깊이 있게 이야기 못하지만, 일반적으로 미지수의 개수와 방정식의 개수가 같아야 해가 존재한다 (특수한 경우에는 아래의 수식 유도에서도 나오겠지만, 해가 없을 수도, 무수히 많을 수도 있다.). 이원 일차 연립방정식의 일반적인 형식은 아래와 같다. 여기서 x, y는 미지수이고, a, b, c, d, p, q는 상수이다.
연립방정식을 푸는 방법은 가감법과 대입법이 있다고 배웠다. 여기서는 가감법을 이용해서 풀어보자. 먼저 y를 없애보자. 첫번째 수식에 d를, 두번째 수식에는 b를 곱하여 두 식을 빼면 된다.
위의 수식은 일차 방정식 의 해와 동일하다.
유사한 방법으로 원래 수식에서 x를 없애 보자.
x에서와 동일하게 ad - bc 의 값에 따라 해가 달라진다. 따라서 ad - bc 를 판별식(Determinant, det)라고 한다. 판별식이 0이 아니면 y는 아래의 해를 갖는다.
최종 정리하면 아래와 같다.
이원 일차 연립 방정식
코드는 매우 간단하다. det를 구하고, 편의를 위해서 x_temp와 y_temp를 정의하고 사용하였다.
이원 일차 연립방정식
이원 일차 연립방정식에서 "원"이라는 것은 미지수의 개수를 뜻하고, "차"라는 것은 미지수의 지수가 1승이라는 것이다. 일원 일차 연립방정식은 해가 무조건 존재한다. 미지수가 두 개인 이원 일차 방정식은 해가 무수히 많다. 따라서 추가적인 방정식이 필요하다.
여기서는 깊이 있게 이야기 못하지만, 일반적으로 미지수의 개수와 방정식의 개수가 같아야 해가 존재한다 (특수한 경우에는 아래의 수식 유도에서도 나오겠지만, 해가 없을 수도, 무수히 많을 수도 있다.). 이원 일차 연립방정식의 일반적인 형식은 아래와 같다. 여기서 x, y는 미지수이고, a, b, c, d, p, q는 상수이다.
연립방정식을 푸는 방법은 가감법과 대입법이 있다고 배웠다. 여기서는 가감법을 이용해서 풀어보자. 먼저 y를 없애보자. 첫번째 수식에 d를, 두번째 수식에는 b를 곱하여 두 식을 빼면 된다.
위의 수식은 일차 방정식 의 해와 동일하다.
- ad - bc = 0 이고 dp - bq = 0 이면 모든 x가 해가 되고,
- ad - bc = 0 이고 dp - bq 가 0이 아니면 어떤 x도 해가 될 수 없다.
- ad - bc 가 0이 아니면 아래와 같은 해를 갖는다.
유사한 방법으로 원래 수식에서 x를 없애 보자.
x에서와 동일하게 ad - bc 의 값에 따라 해가 달라진다. 따라서 ad - bc 를 판별식(Determinant, det)라고 한다. 판별식이 0이 아니면 y는 아래의 해를 갖는다.
최종 정리하면 아래와 같다.
-
이면 해는
-
이고,
이면
해는 부정 -
일 때,
이거나
이면
해는 불능
이원 일차 연립 방정식
ax + by = p
cx + dy = q
답은?
코드는 매우 간단하다. det를 구하고, 편의를 위해서 x_temp와 y_temp를 정의하고 사용하였다.
<!DOCTYPE html>
<html>
<title>이원 일차 연립 방정식</title>
<body>
<h4>이원 일차 연립 방정식<br>ax + by = p<br>cx + dy = q</h4>
<form>
a: <input type="text" id="a" value="1"><br>
b: <input type="text" id="b" value="1"><br>
p: <input type="text" id="p" value="2"><br><br>
c: <input type="text" id="c" value="2"><br>
d: <input type="text" id="d" value="1"><br>
q: <input type="text" id="q" value="3"><br><br>
<input type="button" id="solve" value="해 구하기"><br><br>
</form>
<p id="result">답은? </p>
<script>
document.getElementById("solve").addEventListener("click", calc);
function calc() {
// 입력된 문자열을 숫자로 바꾸기
a = Number(document.getElementById("a").value);
b = Number(document.getElementById("b").value);
p = Number(document.getElementById("p").value);
c = Number(document.getElementById("c").value);
d = Number(document.getElementById("d").value);
q = Number(document.getElementById("q").value);
if (isNaN(a) || isNaN(b) || isNaN(p) || isNaN(c) || isNaN(d) || isNaN(q)) {
document.getElementById("result").innerHTML = "숫자를 입력하세요.";
return;
}
var det = a * d - b * c;
var x_temp = d * p - b * q;
var y_temp = a * q - c * p;
if (det == 0) {
if (x_temp == 0 && y_temp == 0) {
document.getElementById("result").innerHTML = "해가 무수히 많습니다(부정).";
}
else {
document.getElementById("result").innerHTML = "해가 없습니다(불능).";
}
}
else {
var x = x_temp/det;
var y = y_temp/det;
document.getElementById("result").innerHTML = "(x, y) = (" + x + ", " + y + ")";
}
}
</script>
</body>
</html>
댓글
댓글 쓰기