用正交函数作最小二乘拟合.doc

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

用正交函数作最小二乘拟合 作者:信计10602班 何涛、熊娉 2008-10-12 1 题目: 已知节点的值,用正交多项式作最小二乘拟合。 x 1 1.3 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4 y 2.718 3.669 4.95 6.686 9.025 12.182 16.445 22.198 29.964 40.447 54.598 2 理论分析: 2.1引入: 用一般的最小二乘法拟合时其法方程的系数矩阵G是病态的,但如果用正交多项式拟合可以不通过求法方程来确定,显然拟合的效果较好。 2.2正交多项式作最小二乘拟合的原理: 根据已知的节点及权函数( 本题取)先构造正交的多项式。用递推的公式表示: 这里是首项系数为1的k次多项式。根据的正交性得: 用正交多项式的线性组合作最小二次拟合,只要在逐步求的同时,相应计算出系数 并逐步把累加到中去,最后即可得所求拟合曲线 这里的n可以是事先给定的或根据误差确定。 3 问题求解: 程序源代码如下: 3.1用精度来控制n 的程序: function ffx=jdzxec() %注意:本程序中的权值为“1” load data5 %导入数据 jingdu=input(请输入精度:) %准备循环前的数据,如alfa,beta等 p(1,:)=ones(1,length(x)); %p0x的数值型的值 d{1,1}=1; %p0x的符号型的值 alfa(1)=dot(x.*p(1,:),p(1,:))/dot(p(1,:),p(1,:)); p(2,:)=(x-alfa(1)).*p(1,:); syms t d{1,2}=(t-alfa(1))*d{1,1}; beta(1)=dot(p(2,:),p(2,:))/dot(p(1,:),p(1,:)); a(1)=dot(y,p(1,:))/dot(p(1,:),p(1,:)); a(2)=dot(y,p(2,:))/dot(p(2,:),p(2,:)); s=a(1)*p(1,:)+a(2)*p(2,:); delta=norm(y-s); count=1; %用来记录满足精度要求的多项式的最高次数 k=2; %循环的次数 while delta=jingdu alfa(k)=dot(x.*p(2,:),p(2,:))/dot(p(2,:),p(2,:)); %求alfa的值 p(k+1,:)=(x-alfa(k)).*p(k,:)-beta(k-1)*p(k-1,:); %多项式数值型的值 d{1,k+1}=(t-alfa(k))*d{1,k}-beta(k-1)*d{1,k-1}; %多项式符号型的值 beta(k)=dot(p(k+1,:),p(k+1,:))/dot(p(k,:),p(k,:));% 求beta的值 a(k+1)=dot(y,p(k+1,:))/dot(p(k+1,:),p(k+1,:)); s=s+a(k+1)*p(k+1,:); delta=norm(y-s); k=k+1; count=count+1; end disp(满足精度要求的多项式的最高次数:); count fx=0; for i=1:(count+1) fx=fx+a(i)*d{1,i}; end disp(构造的正交多项式:) for i=1:(count+1) duo{1,i}=simplify(d{1,i}); end celldisp(duo) disp(拟合的满足精度要求的多项式:) f=vpa(collect(fx),4) 3.2直接输入n 的程序: function ff=cszxec() load data5 n=input(请输入你要拟合的方程的最高次数:) %准备循环前的数据,如alfa,beta等 p(1,:)=ones(1,length(x)); %p0x的数值型的值 d{1,1}=1; %p0x的符号型的值 alfa(1)=dot(x.*p(1,:),p(1,:))/dot(p(1,:),p(1,:)); p(2,:)=(x-alfa(1)).*p(1,:); syms t d{1,2}=(t-alfa(1))*d{1,1}; beta(1)=dot(p(2,:),p(2,:))/dot(p(1,:),p(1,:)); a(1)=dot(y,p(1,:))/dot(p(1,:),p(1,:)); a(2)=dot(y,p(2,:))/dot(p(2,:),p(2,:)); s=a(

文档评论(0)

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

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

1亿VIP精品文档

相关文档