방정식의 근 구하기
방정식의 근 구하기 (Finding Roots)
Octave는 주어진 다항식의 근(root)을 찾을 수 있어요. 다항식의 동반 행렬(companion matrix)을 계산한 다음(정의는 compan 함수 참고) 그 행렬의 고유값을 구하는 방식으로 동작합니다. Octave 매뉴얼 28.2절을 정리해 볼게요.
출처: Finding Roots
본문
roots
r = roots (c)
다항식 c의 근을 계산해요. N개의 성분을 가진 벡터 c에 대해 다음 다항식의 근을 돌려줍니다:
c(1) * x^(N-1) + ... + c(N-1) * x + c(N)
예를 들어 다음 코드는 이차 다항식 p(x) = x^2 - 5의 근을 찾아요:
c = [1, 0, -5];
roots (c)
⇒ 2.2361
⇒ -2.2361
실제 근은 +/- sqrt(5), 즉 대략 +/- 2.2361이라는 점을 기억하세요.
See also: poly, compan, fzero.
polyeig
z = polyeig (C0, C1, …, Cl)
[v, z] = polyeig (C0, C1, …, Cl)
차수 l의 다항식 고유값 문제(polynomial eigenvalue problem)를 풀어요. n×n 행렬 다항식
C(s) = C0 + C1*s + … + Cl*s^l
이 주어졌을 때 polyeig는 고유값 문제
(C0 + C1*z + … + Cl*z^l) v = 0
를 풉니다. 고유값 z는 행렬 다항식의 영점(zero)이라는 점에 주의하세요. z는 n*l개의 원소를 가진 행 벡터이고, v는 고유벡터에 해당하는 열을 가진 행렬(n x n*l)이에요.
See also: eig, eigs, compan.
compan
A = compan (c)
다항식 계수 벡터 c에 대응하는 동반 행렬을 계산해요. 동반 행렬은:
_ _
| -c(2)/c(1) -c(3)/c(1) ... -c(N)/c(1) -c(N+1)/c(1) |
| 1 0 ... 0 0 |
| 0 1 ... 0 0 |
A = | . . . . . |
| . . . . . |
| . . . . . |
|_ 0 0 ... 1 0 _|
동반 행렬의 고유값은 다항식의 근과 같아요.
See also: roots, poly, eig.
mpoles
[multp, idxp] = mpoles (p)
[multp, idxp] = mpoles (p, tol)
[multp, idxp] = mpoles (p, tol, reorder)
p에서 고유한 극(pole)과 그에 연관된 중복도(multiplicity)를 식별해요. 기본적으로 출력은 가장 큰 크기의 극에서 가장 작은 크기로 정렬됩니다. 두 극은 그 차이가 상대 허용오차 tol보다 작으면 배수(multiple)로 간주해요:
abs (p1 - p0) / abs (p0) < tol
극이 0이면 스케일링을 하지 않고 tol을 절대 허용오차로 해석해요. tol의 기본값은 0.001이에요. 선택적 매개변수 reorder가 false/0이면 극은 정렬되지 않습니다.
출력 multp는 극의 중복도를 지정하는 벡터예요. multp(n)은 N번째 극 p(idxp(n))의 중복도를 나타냅니다.
예를 들어:
p = [2 3 1 1 2];
[m, n] = mpoles (p)
⇒ m = [1; 1; 2; 1; 2]
⇒ n = [2; 5; 1; 4; 3]
⇒ p(n) = [3, 2, 2, 1, 1]
See also: residue, poly, roots, conv, deconv.
더 알아보기
- octave-polynomial-manipulations — 다항식 다루기 (별도 문서)
- octave-linear-algebra — 선형대수 전반 (별도 문서)
- octave-functions-of-a-matrix — 행렬 지수·로그·제곱근 등