Curve Fitting & Interpolation

Post on 24-Feb-2016

119 views 6 download

description

Curve Fitting & Interpolation. Chapter 15. Above: GPS time series from southern California after removing several curve fits to the data. Curve Fitting in Earth Sciences. Fitting curves to data is very common in Earth sciences Has applications in virtually all subdiscipline - PowerPoint PPT Presentation

Transcript of Curve Fitting & Interpolation

Curve Fitting & Interpolation Chapter 15

Above: GPS time series from southern California after removing several curve fits to the data

Curve Fitting in Earth SciencesFitting curves to data is very common in Earth sciences

• Has applications in virtually all subdiscipline

Two things to keep in mind:• Data is noisy• Data is discrete (non-continuous)

• Curve fitting can help overcome these issues (to some degree)

Empirical Modeling:• A type of modeling that involves fitting

a curve to data and then using the equation of the curve to predict values

From Wells & Coppersmith (1994)

Extrapolations of Future Global Warming, IPCC (2007)

Curve Fitting in MATLABMATLAB provides several built-in functions to fit curves• Many require the “Curve Fitting Toolbox”, or other

toolboxes.• We will only use the basic curve fitting functions that are part of

standard MATLAB

• We will focus on• polyfit, polyval, corrcoef, roots

polyfit• Fits data with a polynomial curve of a user-specified degree

Math Refresher: Polynomials• Polynomials come in different orders or degrees

• 0th order: a single constant value• Examples: y = 4 y = 2.75 y = -12.1

• 1st order: a linear equation (independent var is to 1st power)• Examples: y = 4x y = 3.2x + 7 y = -8.2x – 21.3

• 2nd order: a quadratic equation• Examples: y = 5x2 y = 2.9x2 + 7 y = -1.8x2 – 7.4x + 1.4

• 3rd order: a cubic equation• Examples: y = 7x3 y = 4.6x3 + 2 y = 2.4x3 + 3.5x2 + 3.2x + 7.3

• nth order: a polynomial where “n” is the largest exponent

• Can be represented as a row vector in MATLAB• Interpreted by “polyval” as coefficients of a polynomial

[3 2.7 1 −5.7 ] 3 𝑥3+2.7 𝑥2+𝑥−5.7

Using Polynomials: polyval• Lets make data for:

• Using polyval requires a lot less typing

• Saves time!

Linear Equations With polyval• A first order polynomial is a linear equation

𝒚=𝟑 .𝟕𝟓𝒙+𝟎 .𝟐𝟓

Finding Roots of Polynomials• Roots of a function: Where function = 0

• Useful in sciences because we often want to know where parameters return to zero

• Also useful for finding min/max of data and equations

• 1st order polynomial: 1 root• 2nd order polynomial: 0, 1, or 2 roots• 3rd order polynomial: up to 3 roots• nth order polynomial: up to n roots

Warning!• Some polynomials have no

real roots, but do have roots with imaginary numbers• Recall, the discriminant

• b2 – 4ac

𝒚=𝒙𝟐+𝟔 𝒙+𝟖

Finding Roots of Polynomials

• This means that…

• Discriminant > 0𝒙𝟐−𝟔 𝒙+𝟖=(𝒙−𝟐 ) (𝒙−𝟒 )

𝒙𝟐−𝟔 𝒙+𝟖Polynomial

Finding Roots of Polynomials

• This means that…

• Has no real roots!• Discriminant < 0

𝟒 𝒙𝟐−𝟐 𝒙+𝟔

𝟒 𝒙𝟐−𝟐 𝒙+𝟔Polynomial

Finding Roots of Polynomials

• This means that…

• Has 4 real roots!𝒙𝟒−𝟐𝟑𝒙𝟐−𝟏𝟖𝒙+𝟒𝟎

𝒙𝟒−𝟐𝟑 𝒙𝟐−𝟏𝟖 𝒙+𝟒𝟎Polynomial

Polynomial Thoughts• Polynomials are easy to deal with in MATLAB• As the order of the polynomial increases…

• So does the complexity of the curve

• Remember the Taylor Series?• You can fit any function with an infinite series of polynomials• More polynomials = better fit

• Polyfit is similar except it fits a single polynomial to data

1st polyfit ExampleA Simple Test…• Fit 5 collinear

points with linear equation

Fitting Data With polyfit• Use polyfit to perform a least

squares fit of a 1st order polynomial

• i.e. a linear fit

Calculating Correlation CoefficientsWhile there are better ways to evaluate goodness of fit…• It is beyond our scope to cover

all methods for goodness of fit• Take a Stats course!

• Correlation coefficient, R, is one commonly used measure• R2 = tells the % of your data’s

variance that is explained by a linear fit

• R2 = 0.95 means 95% of your data variance is explained by linear fit.• What is good enough? Depends

on the situation

A Test of polyfitMake synthetic data with noise

• See if fit is reasonable

Fitting Non-Linear Data

Fitting Non-Linear Data• Increasing the

order of the polynomial allows for more complex curves to be fit• Be careful to not

over-fit your data!

• MATLAB will give a warning if the result is poorly conditioned

Fitting High Order PolynomialsOccasionally, we may want to fit high order polynomials to data• Typically, this is done to model the shape of a feature, not a data trend

To avoid poorly conditioned polynomial warnings, we can:• Ask polyfit to scale the data before fitting

E.g.

• Forces mean of x to be zero• Forces standard deviation of x to be 1• Improves fitting algorithm

• Tell polyval about the scaling to reconstruct the correct y-values

WARNING!: The polynomial coefficients are not the best fit of the original data. They are best fit of the scaled data.

Fitting High Order Polynomials

These are the best fit coefficients of the

RESCALED data

not

Interpolating and ExtrapolatingWhat if data is unevenly spaced?• How could you estimate an evenly spaced data set?

• Interpolate it

• Interpolation: The process of estimating values in between data points

What if data is limited in range?• How could you estimate data beyond your data range?

• Extrapolate values• Very prone to errors. Should always be done with extreme caution

• Extrapolation: The process of estimating values beyond the bounds of your data

• MATLAB provides several ways to interpolate data• I will only cover using “interp1” and “polyfit”

Interpolating: Using a Best Fit CurveYou can use a best fit curve to interpolate• Make sure the curve fits data well• Best fit curves tend to smooth data

• Will not honor your collected data points! • This is why formal interpolation is typically

preferred

• Be careful about extrapolating!

Linear Interpolationinterp1: interpolates 1D data• See also interp2 and interp3 for 2D/3D• interp1 has several options

• Read the documentation• We will only use linear or spline methods

Interpolation With SplinesLinear Interpolation

• Resultant data is boxy• Min/Max will not exceed the original data

Interpolation using splines• Resultant data has smooth curves• Min/Max may exceed the original data

• Both methods honor y-vals at original data

Interpolation: Linear vs Spline vs Polyfit

• Unevenly sampled an equation to make synthetic data

• In this case, splines work best, but the polynomial fit is not bad

• Unevenly sampled an equation with some random noise (± 2) added

• In this case, linear interp is not bad, but the linear fit is best

Extrapolation• “interp1” can be used to

extrapolate beyond input data limits

• Use ‘extrap’ optioninterp1(x,y,’linear’,’extrap’)

• Use with great caution!• Extrapolation is highly

prone to errors• Extrapolation should

only be a last resort

• Which method worked best?

• None! Extrapolation is a bad idea

• If you have to do it, only go very slightly beyond your data limits

Final Thoughts• MATLAB offers several built-in functions for curve fitting and resampling data

• We covered only polyfit and interp1

• There is no way to know a priori which method is most appropriate for your data

• Take statistics classes• Always test your curve fits• Know what relationship to expect between data (if possible)

• Polynomial fits are not appropriate for all data sets• May want to explore other methods

• E.g. Fourier Analysis / Spectral Analysis

• MATLAB has TONS of other curve fitting and resampling options in various toolboxes

• Don’t use toolbox commands this class, but feel free to explore them in your research