polyval

Полиномиальная оценка

Синтаксис

y = polyval(p,x)
[y,delta] = polyval(p,x,S)
y = polyval(p,x,[],mu)
[y,delta] = polyval(p,x,S,mu)

Описание

пример

y = polyval(p,x) оценивает полиномиальный p в каждой точке в x. Аргумент p является вектором длины n+1, элементы которого являются коэффициентами (в убывающих степенях) полинома th-степени n:

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

Полиномиальные коэффициенты в p могут быть вычислены в различных целях функциями как polyint, polyder и polyfit, но можно задать любой вектор для коэффициентов.

Чтобы оценить полином в матричном смысле, используйте polyvalm вместо этого.

пример

[y,delta] = polyval(p,x,S) использует дополнительную выходную структуру S, произведенный polyfit, чтобы сгенерировать ошибочные оценки. delta является оценкой стандартной погрешности в предсказании будущего наблюдения в x p(x).

пример

y = polyval(p,x,[],mu) или [y,delta] = polyval(p,x,S,mu) используйте дополнительный вывод mu, произведенный polyfit, чтобы сосредоточить и масштабировать данные. mu(1) является mean(x), и mu(2) является std(x). Используя эти значения, polyval сосредотачивает x в нуле и масштабирует его, чтобы иметь модульное стандартное отклонение,

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

Используйте 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, чтобы соответствовать первому полиному степени к данным. Задайте два выходных параметров, чтобы возвратить коэффициенты для линейной подгонки, а также структуры оценки погрешности.

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

Оцените аппроксимацию полиномом первой степени в p в точках в x. Задайте структуру оценки погрешности как третий вход так, чтобы 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 с тремя выходными параметрами, чтобы соответствовать полиному 5-й степени, использующему центрирование и масштабирование, которое улучшает числовые свойства проблемы. polyfit сосредотачивает данные в year в 0 и масштабирует его, чтобы иметь стандартное отклонение 1, который избегает плохо обусловленной матрицы Вандермонда в подходящем вычислении.

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

Используйте polyval с четырьмя входными параметрами, чтобы оценить p с масштабированными годами, (year-mu(1))/mu(2). Постройте результаты против исходных лет.

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
Поддержка комплексного числа: Да

Точки запроса, заданные как вектор. polyval оценивает полиномиальный p в точках в x и возвращает соответствующие значения функции в y.

Типы данных: single | double
Поддержка комплексного числа: Да

Структура оценки погрешности. Этой структурой является дополнительный вывод от [p,S] = polyfit(x,y,n), который может использоваться, чтобы получить ошибочные оценки. S содержит следующие поля:

Поле Описание
RТреугольный фактор от разложения QR матрицы Вандермонда x
dfСтепени свободы
normrНорма невязок

Если данные в y случайны, то оценкой ковариационной матрицы p является (Rinv*Rinv')*normr^2/df, где Rinv является инверсией R.

Центрирование и масштабирование значений, заданных как двухэлементный вектор. Этим вектором является дополнительный вывод от [p,S,mu] = polyfit(x,y,n), который используется, чтобы улучшить числовые свойства подбора кривой и оценки полиномиального p. Значением mu(1) является mean(x) и mu(2), является std(x). Эти значения используются, чтобы сосредоточить точки запроса в x в нуле с модульным стандартным отклонением.

Задайте mu, чтобы оценить p в масштабированных точках, (x - mu(1))/mu(2).

Выходные аргументы

свернуть все

Значения функции, возвращенные как вектор, одного размера как точки запроса x. Вектор содержит результат оценки полиномиального p в каждой точке в x.

Стандартная погрешность для прогноза, возвращенного как скаляр. Обычно интервал y ± Δ соответствует примерно 68%-му интервалу прогноза для будущих наблюдений за большими выборками и y ± 2Δ примерно 95%-й интервал прогноза.

Если коэффициенты в p являются оценками наименьших квадратов, вычисленными polyfit, и ошибки во вводе данных к polyfit независимы, нормальны, и имеют постоянное отклонение, то y ± Δ является, по крайней мере, 50%-м интервалом прогноза.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a