Main Content

polyval

설명

예제

y = polyval(p,x)x의 각 점에서 다항식 p를 계산합니다. 인수 p는 길이가 n+1인 벡터이며, 이 벡터의 요소는 n차 다항식의 계수이며 다항식의 차수를 기준으로 내림차순으로 정렬되어 있습니다.

p(x)=p1xn+p2xn1+...+pnx+pn+1.

p의 다항식 계수는 polyint, polyder, polyfit과 같은 함수에 의해 다양한 목적으로 계산될 수 있으며, 계수에 대해 임의의 벡터를 지정할 수 있습니다.

행렬 방식으로 다항식을 계산하려면 polyvalm을 사용하십시오.

예제

[y,delta] = polyval(p,x,S)polyfit으로 생성되는 선택적 출력 구조체 S를 사용하여 오차 추정값을 생성합니다. deltap(x)x에 대한 향후 관측값을 예측할 때 사용되는, 표준 오차에 대한 추정값입니다.

예제

y = polyval(p,x,[],mu) 또는 [y,delta] = polyval(p,x,S,mu)polyfit으로 생성되는 선택적 출력값 mu를 사용하여 데이터를 정규화합니다. mu(1)mean(x)이고, mu(2)std(x)입니다. 이러한 값을 사용하여 polyvalx의 중심을 0에 두고 단위 표준편차를 갖도록 스케일링합니다.

x^=xx¯σx.

이 정규화 변환은 다항식의 수치적 속성을 향상시킵니다.

예제

모두 축소

x=5,7,9에서 다항식 p(x)=3x2+2x+1을 계산합니다. 다항식 계수는 벡터 [3 2 1]로 표현될 수 있습니다.

p = [3 2 1];
x = [5 7 9];
y = polyval(p,x)
y = 1×3

    86   162   262

정적분 계산하기

I=-13(3x4-4x2+10x-25)dx.

다항식 피적분 함수 3x4-4x2+10x-25를 표현하는 벡터를 만듭니다. x3 항이 없으므로 계수는 0입니다.

p = [3 0 -4 10 -25];

polyint에서 적분 상수 0을 사용하여 다항식을 적분합니다.

q = polyint(p)
q = 1×6

    0.6000         0   -1.3333    5.0000  -25.0000         0

적분 한계에서 q를 계산하여 적분의 값을 구합니다.

a = -1;
b = 3;
I = diff(polyval(q,[a b]))
I = 49.0667

데이터 점 집합에 선형 모델을 피팅하고 95% 예측 구간의 추정값을 포함하는 결과를 플로팅합니다.

샘플 데이터 점 (x,y)로 구성된 벡터를 몇 개 만듭니다. polyfit을 사용하여 1차 다항식을 데이터에 피팅합니다. 선형 피팅의 계수와 오차 추정값 구조체를 반환하는 2개의 출력값을 지정합니다.

x = 1:100; 
y = -0.3*x + 2*randn(1,100); 
[p,S] = polyfit(x,y,1)
p = 1×2

   -0.3142    0.9614

S = struct with fields:
           R: [2x2 double]
          df: 98
       normr: 22.7673
    rsquared: 0.9407

x의 점에서의 p의 1차 다항식 피팅을 계산합니다. polyval이 표준 오차의 추정값을 계산하도록 오차 추정값 구조체를 세 번째 입력값으로 지정합니다. 표준 오차 추정값이 delta에 반환됩니다.

[y_fit,delta] = polyval(p,x,S);

원래 데이터, 선형 피팅, 그리고 95% 예측 구간 y±2Δ를 플로팅합니다.

plot(x,y,'bo')
hold on
plot(x,y_fit,'r-')
plot(x,y_fit+2*delta,'m--',x,y_fit-2*delta,'m--')
title('Linear Fit of Data with 95% Prediction Interval')
legend('Data','Linear Fit','95% Prediction Interval')

1750년에서 2000년 사이의 인구 데이터 테이블을 만들고 데이터 점을 플로팅합니다.

year = (1750:25:2000)';
pop = 1e6*[791 856 978 1050 1262 1544 1650 2532 6122 8170 11560]';
T = table(year, pop)
T=11×2 table
    year       pop   
    ____    _________

    1750     7.91e+08
    1775     8.56e+08
    1800     9.78e+08
    1825     1.05e+09
    1850    1.262e+09
    1875    1.544e+09
    1900     1.65e+09
    1925    2.532e+09
    1950    6.122e+09
    1975     8.17e+09
    2000    1.156e+10

plot(year,pop,'o')

polyfit을 3개의 출력값과 함께 사용하고, 문제의 수치적 속성 향상을 위해 정규화를 사용하여 5차 다항식을 피팅합니다. polyfityear의 데이터 중심을 0에 두고 표준편차 1을 갖도록 스케일링합니다. 이를 통해 피팅 계산 시 조건이 나쁜 방데르몽드 행렬(Vandermonde Matrix)을 방지할 수 있습니다.

[p,~,mu] = polyfit(T.year, T.pop, 5);

polyval을 4개의 입력값과 함께 사용하여 스케일링된 연도 (year-mu(1))/mu(2)에 대해 p를 계산합니다. 원래 연도에 대해 결과를 플로팅합니다.

f = polyval(p,year,[],mu);
hold on
plot(year,f)
hold off

입력 인수

모두 축소

다항식 계수로, 벡터로 지정됩니다. 예를 들어, 벡터 [1 0 1]은 다항식 x2+1을 나타내고 벡터 [3.13 -2.21 5.99]는 다항식 3.13x22.21x+5.99를 나타냅니다.

자세한 내용은 다항식을 만들고 계산하기 항목을 참조하십시오.

데이터형: single | double
복소수 지원 여부:

쿼리 점으로, 벡터로 지정됩니다. polyvalx에 포함된 점에서 다항식 p를 실행하고 대응하는 함수 값을 y에 반환합니다.

데이터형: single | double
복소수 지원 여부:

오차 추정값 구조체입니다. 이 구조체는 [p,S] = polyfit(x,y,n) 구문의 두 번째 출력값입니다. Spolyval에 대한 입력값으로 지정하여 오차 추정값을 구합니다. S는 다음 표에 있는 필드를 포함합니다.

필드설명
Rx의 방데르몽드 행렬에 대한 QR 분해의 (치환된) 삼각 R 인수
df자유도
normr잔차의 노름(Norm)
rsquared결정계수(unadjusted R-squared)

y의 데이터가 확률적 데이터인 경우 p의 공분산 행렬 추정값은 (Rinv*Rinv')*normr^2/df입니다. 여기서 RinvR의 역행렬입니다.

정규화 값으로, 요소를 2개 가진 벡터로 지정됩니다. 이 벡터는 [p,S,mu] = polyfit(x,y,n)의 선택적 출력값으로, 다항식 p의 피팅 및 실행의 수치적 속성을 향상시키는 데 사용할 수 있습니다. 값 mu(1)mean(x)이고, mu(2)std(x)입니다. 이러한 값은 x에서 쿼리 점 중심을 0에 두고 단위 표준편차를 적용하는 데 사용됩니다.

스케일링된 점 (x - mu(1))/mu(2)에서 p를 실행하도록 mu를 지정합니다.

출력 인수

모두 축소

함수 값으로, 쿼리 점 x와 같은 크기를 갖는 벡터로 반환됩니다. 이 벡터는 x의 각 점에서 다항식 p를 실행한 결과를 포함합니다.

예측에 대한 표준 오차로, 쿼리 점 x와 같은 크기를 갖는 벡터로 반환됩니다. 일반적으로 구간 y ± Δ는 다량의 샘플에 대한 향후 관측값의 경우 대략 68% 예측 구간에 대응하고, y ± 2Δ는 대략 95% 예측 구간에 대응합니다.

p의 계수가 polyfit으로 구한 최소제곱해 추정값이고 polyfit에 대한 데이터 입력값의 오차가 독립적이며 등분산 정규분포를 이루는 경우 y ± Δ는 최소 50% 예측 구간입니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨