Force polynomial fit through multiple points
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a set of x, y data that I want to fit to a quadratic polynomial. Is it possible to force the fit through BOTH zero points?
3 Kommentare
Kye Taylor
am 29 Apr. 2013
Bearbeitet: Kye Taylor
am 29 Apr. 2013
Remember that a third order polynomial has the form
g(x) = a*x^3 + b*x^2 + c*x + d
A second order polynomial has the form
f(x) = a*x^2 + b*x + c
This same second order polynomial can be written
f(x) = a*(x-x1)*(x-x2)
where x1 and x2 are the roots of the polynomial and a is the coefficient on x^2. So the model y(x) = constant*(x-x1)*(x-x2) is exactly what you want.
Antworten (1)
Kye Taylor
am 29 Apr. 2013
Bearbeitet: Kye Taylor
am 30 Apr. 2013
I assume your data is given by two row vectors xData and yData, given for example by
xData = linspace(-2,2);
yData = 2.3*(xData-1).*(xData+1) + 0.2*rand(size(xData));
Then, since you know the roots, try this
% the roots you know
x1 = 1;
x2 = -1;
% the coefficient that makes the model
% y(x) = a*(x-x1)*x-x2) fit the data with
% smallest squared-error In other words
% a minimizes l2-error in a*designMatrix - yData'
designMatrix = ((xData-x1).*(xData-x2))';
a = designMatrix\yData'
plot(xData, yData, 'ko', xData, a*designMatrix, 'r-')
legend('Data','Model')
0 Kommentare
Siehe auch
Kategorien
Mehr zu Polynomials finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!