Notice
Recent Posts
Recent Comments
Link
완숙의 블로그
다항식 (Polynomial) 본문
다항식 표현
다항식은, 다음과 같은 형태의 함수이다.𝑓(𝑥) =𝑎𝑛𝑥𝑛+𝑎𝑛−1𝑥𝑛−1+⋯+𝑎1𝑥+𝑎0 (𝑎𝑛, 𝑎𝑛−1, ... , 𝑎1, 𝑎0 은 실수, n은 음이 아닌 정수)Matlab은 다항식을 열벡터로 인지한다.계수를 원소로 가지는 열벡터로 존재한다. n차 다항식은 길이가 (n+1) * 1 크기 (상수항까지) 인 열벡터로 인지한다.ex) 2x^2 -4x + 10=> [2 -4 10]T이것은 선형대수에서의 표기방식과 흡사하다.따라서 계수행렬을 생각하는 것이 곧 다항식을 만드는 것과 동일하다.다항식 = 계수행렬
함수값
결과값이 궁금할 때는 Polyval 함수를 사용하면 된다.결과값 = polyval(계수행렬, Input Value)
Input Value는 1차원 리스트여도 가능하다.p = [1.0 -12.1 40.59 -17.015 -71.95 35.88];x = -1.5:0.1:6.7;y = polyval(p, x);plot(x,y)근행렬
해당 방정식의 근이 알고 싶을 때는 어떻게 하면 될까?roots함수를 사용하면 된다.매트랩에서 다항식은 계수행렬로 대표되므로,근행렬 = roots(계수행렬)
p = [1.0 -12.1 40.59 -17.015 -71.95 35.88];r = roots(p)r = 6.5000 4.0000 2.3000 -1.2000 0.5000근을 아는 경우
근을 알 때 방정식을 추정하고 싶으면 어떻게 할까?계수행렬 = poly(근행렬)
r = [6.5 4 2.3 -1.2 0.5];p = poly(r)p =1.0000 -12.1000 40.5900 -17.0150 -71.9500 35.8800다항식의 사칙연산
다항식의 사칙연산에 대해 알아보자.
덧셈, 뺄셈
행렬에서 차원이 다를 경우 덧셈, 뺄셈이 불가능하다. 그래서 같은 크기로 벡터를 만들어줘야 한다.p1 = [ 3 15 0 -10 -3 15 -40 ];p2short = [ 3 0 -2 -6 ];p2 = [ zeros(1,length(p1)-length(p2short)) p2short ]% p2 = 0 0 0 3 0 -2 -6 %ans =3 15 0 -7 -3 13 -46곱셈
함수의 곱셈은 convolution을 사용한다. 사용은 conv 함수이다. convolution에 대해서는 포스팅을 따로 할 예정이다. 지금은 그냥 인정(ㅠ)하고 넘어가자.p1 = [ 3 15 0 -10 -3 15 -40 ];p2 = [ 3 0 -2 -6 ];pm = conv(p1, p2)ans =9 45 -6-78-99 65-54-12-10240나눗셈
나눗셈은 deconv함수를 사용한다.u=[2 9 7 -6];v = [ 1 3 ];[a b] = deconv(u, v)a =2 3 -2b =0 0 0 0a 는 몫의 계수행렬, b 는 나머지의 계수행렬이다. 영행렬이 나온 것을 봐서 나누어 떨어졌음을 알 수 있다.
'Programing Language > Matlab' 카테고리의 다른 글
수치적 적분 (Numerical integration) (0) | 2018.12.12 |
---|---|
최대 최소점 찾기 (Finding a Minimum or a Maximum of a Function) (0) | 2018.12.12 |
방정식 풀기 (Solving an Equation with One Variable) (0) | 2018.12.12 |
보간법 (Interpolation) (0) | 2018.12.12 |
다항식 곡선 피팅 (Curve Fitting with Polynomials) (0) | 2018.12.12 |
Comments