polyval

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

Описание

пример

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

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

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

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

пример

[y,delta] = polyval(p,x,S) использует дополнительную структуру output 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.

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

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

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

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

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

Для просмотра документации необходимо авторизоваться на сайте