实验报告书5-1-曲线拟合与插值.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告书5-1-曲线拟合与插值

东南大学《数学实验》报告 学号 姓名 邓文强 成绩 实验内容:曲线拟合与插值 一 实验目的 用最小二乘法实现多项式拟合;三种常见插值函数的求解及应用 二 预备知识 (1)熟悉一般的曲线拟合的最小二乘法原则 (2)熟悉正规方程、差分表、插商表的概念 (3)熟悉“\”、polyfit、polyval、interp1、spline、cscvn等Matlab命令 三 实验内容与要求 一.试用不同的拟合函数形式拟合下表给出的一组样本数据,并将计算值与精确值作比较,并计算拟合函数的误差: k 1 2 3 4 5 6 7 xk 0.3 0.5 0.7 0.9 1.1 1.3 1.5 yk 0.3985 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325 1.设拟合函数形式为; 指令: x=[0.3 0.5 0.7 0.9 1.1 1.3 1.5]; y=[0.3985 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325]; A=[x,sin(x)]; c=A\y; c %检验拟合效果 plot(x,y,g*-,x,1.0001*x+0.3332*sin(x),ro-) %拟合效果很好 结果: ans = 1.0001 0.3332 2.设拟合函数为多项式函数(先行确定拟合多项式最佳阶数),写出正规方程,采用解正规方程的‘\法’及polyfit两种方法分别求解拟和多项式。 指令: x=[0.3 0.5 0.7 0.9 1.1 1.3 1.5]; y=[0.3985 0.6598 0.9147 1.1611 1.3971 1.6212 1.8325]; for i=1:6 z1(i)=y(i+1)-y(i); end for i=1:5 z2(i)=z1(i+1)-z1(i); end for i=1:4 z3(i)=z2(i+1)-z2(i); end for i=1:3 z4(i)=z3(i+1)-z3(i); end for i=1:2 z5(i)=z4(i+1)-z4(i); end i=1; z6(1)=z5(2)-z5(1);z1,z2,z3,z4,z5,z6 %求拟合阶数,设为5阶。 %求待定系数的两种方法 A=[x.^5,x.^4,x.^3,x.^2,x,ones(7,1)]; c=A\y; c p=polyfit(x,y,5) plot(x,y,g*-,x,polyval(p,x),ro-) %与原曲线比较 plot(x,y,g*-,x,polyval(p,x),ro-)%拟合效果非常好 结果: z1 = 0.2613 0.2549 0.2464 0.2360 0.2241 0.2113 z2 = -0.0064 -0.0085 -0.0104 -0.0119 -0.0128 z3 = -0.0021 -0.0019 -0.0015 -0.0009 z4 = 1.0e-003 * 0.2000 0.4000 0.6000 z5 = 1.0e-003 * 0.2000 0.2000 z6 = -1.0547e-015 u = 0.0052 -0.0130 -0.0318 -0.0193 1.3403 -0.0009 p = 0.0052 -0.0130 -0.0318 -0.0193 1.3403 -0.0009 二.对以下每个函数,在n个节点上(n不要太大,如5~11),用拉格朗日插值、分段线性插值、Newton插值、三次样条插值方法,计算m个插值点的函数值(m选取要适中,如50~100)。通过数值和图形输出,将几种插值结果与精确值进行比较。适当增加n,再作比较,由此做初步分析,找出较好的插值方法: 拉格朗日插值函数: Newton插值函数: function s=Lagrange(x,y,x0) n=length(x); m=length(y); if m~=n error(x与y必须同长); end l=length(x0); for i=1:l t=0.0; for j=1:n u=1.0; for k=1:n if k~=j u=u*(x0(i)-x(k))/(x(j)-x(k)); en

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档