哈工大_计算方法实验_1拉格朗日.doc_第1页
哈工大_计算方法实验_1拉格朗日.doc_第2页
哈工大_计算方法实验_1拉格朗日.doc_第3页
哈工大_计算方法实验_1拉格朗日.doc_第4页
哈工大_计算方法实验_1拉格朗日.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验题目1 Lagrange插值摘要给定平面上n+1个不同的数据点xk,fxk, k=0,1,n, xixj, ij:则满足条件Pnxk=fxk, k=0,1,n的n次拉格朗日插值多项式Pnxk=k=0nfxklkx是存在唯一的。若xka,b, k=0,1,n,且fxk充分光滑,则当xa,b时,有误差估计式fxk-Pnxk=fn+1n+1!x-x0x-x1x-xn, a,b前言利用拉格朗日插值多项式Pnx求fx的近似值程序设计流程拉格朗日插值框图开始结束输入(xi,yi),ni=0,1,2,nL=0i=0xl=1xl=*xlj=0,1,i-1,i+1,nL=L+xl*i=n?输出y否是i=i+1问题1 (1)N = 5时,程序运行如下:TestLag(inline(1./(1+x.2), -5, 5, 5, 0.75:4.75);将区间-5,5分为了5段计算插值的点 xi = 0.7500 1.7500 2.7500 3.7500 4.7500计算出的插值 yi = 0.9054 0.5258 0.0096 -0.3568 -0.1595插值点处函数值 yFact = 0.6400 0.2462 0.1168 0.0664 0.0424计算误差 err = -0.2654 -0.2796 0.1072 0.4232 0.2020N = 10时,程序运行如下:TestLag(inline(1./(1+x.2), -5, 5, 10, 0.75:4.75);将区间-5,5分为了10段计算插值的点 xi = 0.7500 1.7500 2.7500 3.7500 4.7500计算出的插值 yi = 0.6907 0.2330 0.1122 0.1084 -0.2360插值点处函数值 yFact = 0.6400 0.2462 0.1168 0.0664 0.0424计算误差 err = -0.0507 0.0132 0.0045 -0.0420 0.2785N = 20时,程序运行如下:TestLag(inline(1./(1+x.2), -5, 5, 20, 0.75:4.75);将区间-5,5分为了20段计算插值的点 xi = 0.7500 1.7500 2.7500 3.7500 4.7500计算出的插值 yi = 0.6413 0.2491 0.1282 0.1903 6.4150插值点处函数值 yFact = 0.6400 0.2462 0.1168 0.0664 0.0424计算误差 err = -0.0013 -0.0029 -0.0114 -0.1239 -6.3726问题1 (2)N = 5时,程序运行如下:TestLag(inline(exp(x), -1, 1, 5, -0.95 -0.05 0.05 0.95);将区间-1,1分为了5段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3863 0.9513 1.0512 2.5863插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-003 *0.4471 -0.1051 0.1069 -0.6129N = 10时,程序运行如下:TestLag(inline(exp(x), -1, 1, 10, -0.95 -0.05 0.05 0.95);将区间-1,1分为了10段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3867 0.9512 1.0513 2.5857插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-008 * -0.3126 -0.0055 -0.0055 -0.3714N = 20时,程序运行如下:TestLag(inline(exp(x), -1, 1, 20, -0.95 -0.05 0.05 0.95);将区间-1,1分为了20段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3867 0.9512 1.0513 2.5857插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-012 *0.7339 0 -0.0002 -0.5671问题2 (1)N = 5时,程序运行如下:TestLag(inline(1./(1+x.2), -1, 1, 5, -0.95 -0.05 0.05 0.95);将区间-1,1分为了5段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5136 0.9978 0.9978 0.5136插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err =0.0121 -0.0002 -0.0002 0.0121N = 10时,程序运行如下:TestLag(inline(1./(1+x.2), -1, 1, 10, -0.95 -0.05 0.05 0.95);将区间-1,1分为了10段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5243 0.9975 0.9975 0.5243插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err =0.0014 0.0000 0.0000 0.0014N = 20时,程序运行如下:TestLag(inline(1./(1+x.2), -1, 1, 20, -0.95 -0.05 0.05 0.95);将区间-1,1分为了20段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5256 0.9975 0.9975 0.5256插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err = 1.0e-005 * -0.7023 0.0000 0.0000 -0.7023实验2 (2)N = 5时,程序运行如下:TestLag(inline(exp(x), -5, 5, 5, -4.75 -0.25 0.25 4.75);将区间-5,5分为了5段计算插值的点 xi = -4.7500 -0.2500 0.2500 4.7500计算出的插值 yi = -1.9321 1.4275 0.5882 123.7146插值点处函数值 yFact = 0.0087 0.7788 1.2840 115.5843计算误差 err =1.9408 -0.6487 0.6958 -8.1303N = 10时,程序运行如下:TestLag(inline(exp(x), -5, 5, 10, -4.75 -0.25 0.25 4.75);将区间-5,5分为了10段计算插值的点 xi = -4.7500 -0.2500 0.2500 4.7500计算出的插值 yi = 0.0425 0.7796 1.2848 115.6630插值点处函数值 yFact = 0.0087 0.7788 1.2840 115.5843计算误差 err = -0.0339 -0.0008 -0.0008 -0.0788N = 20时,程序运行如下:TestLag(inline(exp(x), -5, 5, 20, -4.75 -0.25 0.25 4.75);将区间-5,5分为了20段计算插值的点 xi = -4.7500 -0.2500 0.2500 4.7500计算出的插值 yi = 0.0087 0.7788 1.2840 115.5843插值点处函数值 yFact = 0.0087 0.7788 1.2840 115.5843计算误差 err = 1.0e-007 * -0.0914 0.0000 0.0000 -0.1434问题3 (1)N =5时,程序运行如下:TestLag2(inline(1./(1+x.2), -1, 1, 5, -0.95 -0.05 0.05 0.95);将区间-1,1分为了5段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5254 0.9978 0.9978 0.5254插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err = 1.0e-003 *0.2071 -0.3011 -0.3011 0.2071N =10时,程序运行如下:TestLag2(inline(1./(1+x.2), -1, 1, 10, -0.95 -0.05 0.05 0.95);将区间-1,1分为了10段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5255 0.9972 0.9972 0.5255插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err = 1.0e-003 *0.1562 0.2603 0.2603 0.1562N =20时,程序运行如下:TestLag2(inline(1./(1+x.2), -1, 1, 20, -0.95 -0.05 0.05 0.95);将区间-1,1分为了20段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.5256 0.9975 0.9975 0.5256插值点处函数值 yFact = 0.5256 0.9975 0.9975 0.5256计算误差 err = 1.0e-007 * 0.2318 0.2381 0.2381 0.2318问题3 (2)N =5时,程序运行如下:TestLag2(inline(exp(x), -1, 1, 5, -0.95 -0.05 0.05 0.95);将区间-1,1分为了5段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3867 0.9514 1.0511 2.5857插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-003 *0.0079 -0.1317 0.1339 -0.0108N =10时,程序运行如下:TestLag2(inline(exp(x), -1, 1, 10, -0.95 -0.05 0.05 0.95);将区间-1,1分为了10段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3867 0.9512 1.0513 2.5857插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-009 * -0.5045 -0.4791 -0.4835 -0.5994N =20时,程序运行如下:TestLag2(inline(exp(x), -1, 1, 20, -0.95 -0.05 0.05 0.95);将区间-1,1分为了20段计算插值的点 xi = -0.9500 -0.0500 0.0500 0.9500计算出的插值 yi = 0.3867 0.9512 1.0513 2.5857插值点处函数值 yFact = 0.3867 0.9512 1.0513 2.5857计算误差 err = 1.0e-015 * 0.1665 0.3331 -0.4441 -0.8882问题4(1) 程序运行如下:TestLag3(1 4 9, 5 50 115 185)计算插值的点 xi = 5 50 115 185计算出的插值 yi = 2.2667 -20.2333 -171.9000 -492.7333插值点处函数值 yFact = 2.2361 7.0711 10.7238 13.6015计算误差 err = -0.0306 27.3044 182.6238 506.3348(2) 程序运行如下:TestLag3(36 49 64, 5 50 115 185)计算插值的点 xi = 5 50 115 185计算出的插值 yi = 3.1158 7.0718 10.1670 10.0388插值点处函数值 yFact = 2.2361 7.0711 10.7238 13.6015计算误差 err = -0.8797 -0.0007 0.5568 3.5626(3) 程序运行如下:TestLag3(100 121 144, 5 50 115 185)计算插值的点 xi = 5 50 115 185计算出的插值 yi = 4.4391 7.2850 10.7228 13.5357插值点处函数值 yFact = 2.2361 7.0711 10.7238 13.6015计算误差 err = -2.2030 -0.2139 0.0010 0.0658(4) 程序运行如下:TestLag3(169 196 225, 5 50 115 185)计算插值的点 xi = 5 50 115 185计算出的插值 yi = 5.4972 7.8001 10.8005 13.6006插值点处函数值 yFact = 2.2361 7.0711 10.7238 13.6015计算误差 err = -3.2611 -0.7291 -0.0767 0.0009实验所用函数function yh = LagInterp(x, y, xh)% LagInterp 计算拉格朗日插值% Synopsis: yh = LagInterp(x, y, xh)% Input: x = 一维向量,将要做插值x的值% y = 一维向量,将要做插值y的值% xh = 数值或一维向量,计算插值的位置,支持计算一列xh的值% Output: yh = 数值或一维向量,通过计算插值的位置算出的插值 if min(size(x) 1 | min(size(y) 1%判断x,y是否为一维向量 error(x,y must be vectors!); elseif length(x) = length(y)%判断x,y是否有同样多的元素 error(x and y must agree!); end yh = zeros(size(xh); L = zeros(length(x) - 1); for j = 1:length(xh) for i = 1:length(x) xCal = x; xCal(i) = ;%prod(xh(j) - xCal)/prod(x(i) - xCal)为拉格朗日基函数 L(i) = prod(xh(j) - xCal)/prod(x(i) - xCal); yh(j) = yh(j) + L(i) * y(i);%yh = sum(L(i) * y(i) endendfunction TestLag(fx, a, b, n, xi)% TestLag 实验题目1 1,2% Synopsis: TestLag(fun, a, b, n, xi)% Input: fx = 用来验证插值计算准确率的函数% a,b = 节点选取上下限% n = 多项式次数,固定区间-a,b分段数% xi = 要计算插值的点 x = linspace(a, b, n); y = feval(fx, x); yi = LagInterp(x, y, xi); yFact = feval(fx, xi); err = yFact - yi; fprintf(将区间%d,%d分为了%d段n, a, b, n); fprintf(计算插值的点 xi =n); disp(xi); fprintf(计算出的插值 yi =n); disp(yi); fprintf(插值点处函数值 yFact =n); disp(yFact); fprintf(计算误差 err =n); disp(err);function TestLag2(fx, a, b, n, xi)% TestLag2 实验题目1 3% Synopsis: TestLag2(fun, a, b, n, xi)% Input: fx = 用来验证插值计算准确率的函数% a,b = 节点选取上下限% n = 多项式次数,固定区间-a,b分段数% xi = 要计算插值的点 x = zeros(1,n); for k = 1:n x(k) = cos( (2*k-1)*pi/(2*n) ); %构造非等距节点 end y = feval(fx, x); yi = LagInterp(x, y, xi); yFact = feval(fx, xi); err = yFact - yi; fprintf(将区间%d,%d分为了%d段n, a, b, n); fprintf(计算插值的点 xi =n); disp(xi); fprintf(计算出的插值 yi =n); disp(yi); fprintf(插值点处函数值 yFact =n); disp(yFact); fprintf(计算误差 err =n); disp(err);function

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论