Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

polyval

説明

y = polyval(p,x) は、多項式 px の各点で評価します。引数 p は、長さ n+1 のベクトルで、その要素は n 次多項式の係数 (降べきの順) です。

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

p の多項式係数は、さまざまな目的に応じて polyintpolyderpolyfit などの関数で計算できますが、係数には任意のベクトルを指定できます。

多項式を行列として評価するには、代わりに polyvalm を使用します。

[y,delta] = polyval(p,x,S) は、polyfit で生成されたオプションの出力構造体 S を使用して誤差推定値を生成します。delta は、p(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 をゼロにセンタリングし、それが以下の単位標準偏差をもつようにスケーリングします。

x^=xx¯σx.

このセンタリングとスケーリングの変換により、多項式の数値特性が改善されます。

すべて折りたたむ

多項式 p(x)=3x2+2x+1 を点 x=5,7,9 で評価します。この多項式の係数はベクトル [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];

0 に等しい積分定数を使用して、polyint で多項式を積分します。

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); 

x の各点で p の 1 次多項式近似を評価します。polyval の 3 番目の入力として誤差推定の構造体を指定し、標準誤差の推定値を計算します。標準誤差の推定値は 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')

Figure contains an axes object. The axes object with title Linear Fit of Data with 95% Prediction Interval contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent 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')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

3 出力の polyfit を使用し、センタリングとスケーリングを使用して 5 次の多項式をあてはめます。これにより問題の数値特性が向上します。polyfityear のデータを 0 にセンタリングし、標準偏差が 1 になるようにスケーリングします。これにより近似計算において悪条件のヴァンデルモンド行列を避けることができます。

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

polyval を 4 入力で使用し、p をスケーリングされた年 (year-mu(1))/mu(2) に対して評価します。結果を元の年に対してプロットします。

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

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

多項式係数。ベクトルとして指定します。たとえば、ベクトル [1 0 1] は多項式 x2+1 を表し、ベクトル [3.13 -2.21 5.99] は多項式 3.13x22.21x+5.99 を表します。

詳細については、多項式の作成および評価を参照してください。

データ型: single | double
複素数のサポート: あり

クエリ点。ベクトルとして指定します。polyval は多項式 px の各点で評価し、対応する関数値を y に返します。

データ型: single | double
複素数のサポート: あり

誤差推定の構造体。この構造体は [p,S] = polyfit(x,y,n) のオプションの出力で、誤差推定値の取得に使用できます。S には以下のフィールドがあります。

フィールド説明
Rx のヴァンデルモンド行列の QR 分解によって得られる三角因子
df自由度
normr残差のノルム

データ 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 のクエリ点が単位標準偏差をもち、ゼロ センタリングされるために使用されます。

mu を指定して、スケーリングされた点 (x - mu(1))/mu(2)p を評価します。

出力引数

すべて折りたたむ

関数値。クエリ点 x と同じサイズのベクトルとして返されます。このベクトルには、多項式 px の各点で評価した結果が格納されます。

予測の標準誤差。クエリ点 x と同じサイズのベクトルとして返されます。一般的に、y ± Δ の区間は大規模サンプルの将来の観測値のほぼ 68% 予測区間、y ± 2Δ はほぼ 95% 予測区間にそれぞれ対応します。

p の係数が polyfit により計算された最小二乗推定値で、かつ polyfit へのデータ入力の誤差が一定の分散をもつ独立した正規分布の場合、y ± Δ は少なくとも 50% 予測区間です。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入