190 likes | 550 Views
MATLAB EXAMPLES Interpolation and Integration. 58:111 Numerical Calculations. Department of Mechanical and Industrial Engineering. Some useful functions. Interpolation. Here is the example to get the polynomial fitting by Lagrange interpolation:. Suppose the original data set is:.
E N D
MATLAB EXAMPLESInterpolation and Integration 58:111 Numerical Calculations Department of Mechanical and Industrial Engineering
Interpolation Here is the example to get the polynomial fitting by Lagrange interpolation: Suppose the original data set is: • There are five sets of (x,y) above, polyfit can give the 4th order polynomial form by Lagrange interpolation. To compare, we also use interp1 to give the more smooth fitting curve by piecewise cubic Hermite interpolation. • The M-file (L_interperlation.m) is given to plot the fitting curve in the following: • % Lagrange interpolating polynomial fitting • x=[-2 -1 0 1 2]; • y=[-9 -15 -5 -3 39]; • [m n]=size(x) • p=polyfit(x,y,n-1) • x1=linspace(-2,2,50); • y1=polyval(p,x1); • y2=interp1(x,y,x1,'cubic'); • plot(x,y,'o',x1,y1,'-',x1,y2,'.'); • xlabel('x'),ylabel('y=f(x)') • title ('Lagrange and Piecewise cubic Hermite interpolation')
Interpolation To run this example in MATLAB: >> L_interpolation p = 3.0000 2.0000 -7.0000 4.0000 -5.0000 That means, the 4th order polynomial is: • The right figure shows the fitting curve and the original points (circle). • The solid line is the 4th order polynomial by lagrange interpolation. The dot curve is fitted by piecewise cubic Hermite interpolation.
Integration Consider the following integration: The accurate integration is: • Use the numerical integration, here only try trapezoidal method and Simpson method. Assuming the step size is h = 0.1. In MATLAB, first use the trapezoidal method: • >>x=linspace(0,1,11); • >> y=x.*exp(x.^2); • >>s=trapz(x,y); • >> num2str(s,'%20.9f') • ans = • 0.865089832
Integration To try Simpson’s method, we need write some codes (I_simpson.m): % Simpson's method of Numerical integration x=linspace(0,1,11); s=0.0; f = inline('x.*exp(x.^2)'); for k=1:5 f0=f(x(k*2-1)); f1=f(x(k*2)); f2=f(x(k*2+1)); s=s+(f0+4*f1+f2)*0.1/3.; end num2str(s,'%20.9f') Run this M-file in command window: >> I_simpson ans = 0.859193792
Integration Use the built-in function quad, which uses more accurate adaptive Simpson quadrature. The default error tolerance is 10e-6. >> f=inline('x.*exp(x.^2)') >> s=quad(f,0,1); >> num2str(s,'%20.9f') ans = 0.859140934
Integration-Summary Compare the results of different methods (all keep 9 digits) in the following table: To estimate error by step size h: For Trapezoidal method, it’s O(h2)=O(0.01) For Simpson’s method, it’s O(h4)=O(0.0001)