- 1、本文档共39页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB在计算方法中的应用 MATLAB入门到精通 插值与拟合 插值与拟合来源于实际,又广泛应用于实际。随着计算机的不断发展及计算水平的不断提高,他们在国民生产和科学研究等方面扮演着越来越重要的角色。 插值法主要有Lagrange插值、分段线性插值、Hermite插值及三次样条插值等 拟合法主要有最小二乘法拟合和快速Fourier变换等 Lagrange插值 对给定的n个插值节点及相应的函数值,利用n次Lagrange插值多项式对插值区间内任意x的函数值y可通过下式求得: MATLAB实现 function y=lagrange(x0,y0,x) % lagrange insert n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 例:f(x)=lnx Runge现象 19世纪Runge给出了一个等距节点插值多项式不收敛的例子: 在区间[-5,5]上各阶导数存在,但在此区间上取n个节点构造的Lagrange插值多项式在全区间上不收敛。 Runge现象 在区间[-5,5]上,取n=10,用lagrange插值法进行插值计算: x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; y0=lagrange(x,y,x0); y1=1./(1+x0.^2); plot(x0,y0,--r) hold on plot(x0,y1,-b) 分段线性插值 分段线性插值就是通过插值点用折线段连接起来逼近原曲线。 MATLAB实现 interp1 一维插值 yi=interp1(x,y,xi) %对一组节点(x,y)进行插值,计算插值点xi的函数值。 yi=interp1(y,xi) %默认x=1:n yi=interp1(x,y,xi,’method’) %method为指定插值算法 nearest 线性最近项插值 linear 线性插值 spline 三次样条插值 cubic 三次插值 同类的函数还有inter1q,interpft,spline,interp2,interp3,interpn等 例:正弦曲线插值 x=0:0.1:10; y=sin(x); xi=0:.25:10; yi=interp1(x,y,xi); plot(x,y,o,xi,yi) 例:Rouge现象的解决 x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; y1=1./(1+x0.^2); y2=interp1(x,y,x0); plot(x0,y0,--r) hold on plot(x0,y1,-b) plot(x0,y2,*m) Hermite插值 不少问题不但要求在节点上函数值相等,而且要求导数值也相等,甚至要求高阶导数也相等,可用Hermite插值多项式。 已知n个插值节点及其对应的函数值和一阶导数值,则计算插值区域内任意x的函数值y的Hermite插值公式为: MATLAB实现 function y=hermite(x0,y0,y1,x) %hermite insert n=length(x0);m=length(x); for k=1:m yy=0.0; for i=1:n h=1.0;a=0.0; for j=1:n if j~=i h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; a=1/(x0(i)-x0(j))+a; end end yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i)); end y(k)=yy; end 例:根据如下给定数据,给出0.34处的值 三次样条插值 样条函数可以给出平滑的插值曲线和曲面。 方法介绍: MATLAB实现 SPLINE Cubic spline data interpolation. YY = SPLINE(X,Y,XX) uses cubic
文档评论(0)