数值分析第二次上机作业.doc

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

【实验任务】用MATLAB语言编写连续函数最佳平方逼近的算法程序(函数式M文件)。并用此程序进行数值试验,写出计算实习报告。【功能要求】在后面的附一leastp.m的基础上进行修改,使其更加完善。要求算法程序可以适应不同的具体函数,具有一定的通用性。所编程序具有以下功能:用Lengendre多项式做基,并适合于构造任意次数的最佳平方逼近多项式。 可利用递推关系 2、被逼近函数f(x)不用内联函数构造,而改用M文件建立数学函数。这样,此程序可通过修改建立数学函数的M文件以适用不同的被逼近函数(要学会用函数句柄)。 3、要考虑一般的情况。因此,程序中要有变量代换的功能。 4、计算组合系数时,计算函数的积分采用变步长复化梯形求积法。 5、程序中应包括帮助文本和必要的注释语句。另外,程序中也要有必要的反馈信息。 6、程序输入(1)待求的被逼近函数值的数据点(可以是一个数值或向量) (2)区间端点:a,b。 7、程序输出:(1)拟合系数: (2)待求的被逼近函数值 数值试验要求试验函数:;也可自选其它的试验函数。 用所编程序直接进行计算,检测程序的正确性,并理解算法。分别求二次、三次、。。。最佳平方逼近函数。 分别作出逼近函数和被逼近函数的曲线图进行比较。 (分别用绘图函数plot(,s())和fplot(‘xcosx’,[x1 x2,y1,y2]))计算实习报告要求简述方法的基本原理,程序功能,使用说明。 程序中要加注释。 对程序中的主要变量给出说明。 附源程序及计算结果。 附参考程序Lengendre多项式作基的函数最佳平方逼近算法程序LEASTP.m (此程序只适用于对函数 构造最佳平方逼近多项式) function [c,s]=leastp(x) %LEASTP.m:least-square fitting with legendre polynomials p1=1; p2=inline(‘x’,’x’); p3=inline(‘(3*x^2-1)/2’,’x’); pp1=1; pp2=inline(‘x.^2’,’x’); pp3=inline( ‘(3*x.^2-1)/2.*(3*x.^2-1)/2’,’x’); fp1=inline(‘x.*exp(x)’,’x’); fp2=inline(‘(x.^2).*exp(x)’,’x’); fp3=inline(‘(x*exp(x)).*(3*x.^2-1)/2’,’x’); c(1)=quad(fp1,-1,1)/2; c(2)=quad(fp2,-1,1)/quad(pp2,-1,1); c(3)=quad(fp3,-1,1)/quad(pp3,-1,1); s=c(1)+c(2)*p2(x)+c(3)*p3(x); %end 二、被逼近函数用M文件建立(例如下面) function f=fun(x) f=1./(1+x.^2); 三、变步长复化梯形求积公式的算法 【方法的基本原理】 本实验应用Legendre多项式作基,构造求解Legendre多项式的函数,用变步长的复化梯形求积方法求解系数C,并编写复化梯形求积函数,求解。 使用说明: 【主程序】 也是求解s(x)的主函数如下: function [c,s]=leastp_ww(x,nn,m,a,b) % nn=6; % m=5; % a=9; % b=18; %%%%%%%%初始值; %求解最佳逼近函数的函数名称为leastp_ww %x定义的未知数,开始时须声明;例如 syms x %nn: legendre多项式的x的最高项次数; %m: 要求各逼近多项式的s(x)的最高项次数; %a ,b 分别为逼近函数的下界和上界; syms t p x pp m=m+1; nn=nn+1; s=0; %x=(b-a)/2*t+(a+b) p(1)=1; p(2)=t; for n=3:nn p(n)=((2*n-3)*t*p(n-1)-(n-2)*p(n-2))/(n-1); p(n)=simple(p(n)); end ff=inline(fun((b-a)/2*t+(a+b))); fp1=ff; c(1)=trapezoid(fp1,-1,1,100)/2; for i=2:m c(i)=trapezoid(inline(ff(t)*p(i)),-1,1)/trapezoid(inline(p(i)*p(i)),-1,1,100); end pp(1)=1; xx=1/(b-a)*(2.*x-b-a); for i=2:m pp(i)=subs(p(i),t,xx); end for i=1:m

文档评论(0)

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

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

1亿VIP精品文档

相关文档