MATLAB上机实验——最佳平方逼近

一.任务:用MATLAB语言编写连续函数最佳平方逼近的算法程序(函数式M文件)。并用此程序进行数值试验,写出计算实习报告。二.程序功能要求:在后面的附一leastp.m的基础上进行修改,使其更加完善。要求算法程序可以适应不同的具体函数,具有一定的通用性。所编程序具有以下功能:1.用Lengendre多项式做基,并适合于构造任意次数的最佳平方逼近多项式。可利用递推关系2.被逼近函数f(x)不用内联函数构造,而改用M文件建立数学函数。这样,此程序可通过修改建立数学函数的M文件以适用不同的被逼近函数(要学会用函数句柄)。3.要考虑一般的情况f(x)∈[a,b]≠[−1,+1]。因此,程序中要有变量代换的功能。4.计算组合系数时,计算函数的积分采用变步长复化梯形求积法(见附三)。5.程序中应包括帮助文本和必要的注释语句。另外,程序中也要有必要的反馈信息。6.程序输入:(1)待求的被逼近函数值的数据点x0(可以是一个数值或向量)(2)区间端点:a,b。7.程序输出:(1)拟合系数:(2)待求的被逼近函数值三:数值试验要求:1.试验函数:;也可自选其它的试验函数。2.用所编程序直接进行计算,检测程序的正确性,并理解算法。3.分别求二次、三次、。。。最佳平方逼近函数s(x)。4.分别作出逼近函数s(x)和被逼近函数f(x)的曲线图进行比较。(分别用绘图函数plot(x0,s(x0))和fplot(‘xcosx’,[x1x2,y1,y2]))四:计算实习报告要求:1.简述方法的基本原理,程序功能,使用说明。2.程序中要加注释。3.对程序中的主要变量给出说明。4.附源程序及计算结果。一、程序代码1)legendre(N)函数程序%legendre(N)函数functionP=legendre(N)symstx;%定义符号变量txforn=1:NPP(n)=diff((t^2-1)^(n-1),n-1);%diff函数,求函数的n阶导数Q(n)=2^(n-1)*prod([1:n-1]);%prod函数,计算数组元素的连乘积endPP(1)=1;Q=sym(Q);P=PP*(inv(diag(Q)));%inv函数,求逆2)采用M文件建立被逼近函数%用M文件建立被逼近函数functionF=creat(x)n=length(x);F=x.*cos(x(1:n));%数组乘法运算3)区间变换函数程序%区间变换函数程序functionf=convert(a,b,F)symsxt;%定义符号变量txs=2\((b-a)*t+a+b);%实现区间转换f=subs(F,x,s);%用s置换表达式中x,然后将置换完的表达式赋给f,符号替换4)变步长复化梯形求积公式程序%变步长复化梯形求积公式functionI=tx(g)m=1;h=1-(-1);%积分区间T=zeros(1,100);%赋予T初值为0的1*100行向量T(1)=h*(feval(g,-1)+feval(g,1))/2;%feval函数,执行函数句柄i=1;whilei<100%进行变步长计算m=2*m;h=h/2;s=0;fork=1:m/2x=-1+h*(2*k-1);s=s+feval(g,x);endT(i+1)=T(i)/2+h*s;ifabs(T(i+1)-T(i))<0.00001%设置精度值0.00001,终止条件I=T(i+1);break;endi=i+1;end5)主程序%最佳平法逼近函数leastpfunction[cs]=leastp(a,b,N)symstx;F=creat(x);%用M文件建立的被逼近函数P=legendre(N);%legendre(N)函数f=convert(a,b,F);%区间变换函数程序f=P*diag(f);fori=1:Ng=inline(f(i));I=tx(g);%变步长复化梯形求积公式u(i)=I;Q(i)=2\(2*(i-1)+1);endQ=sym(Q);c=double(u*diag(Q));S=c*P';s=subs(S,t,(2*x-a-b)/(b-a));subplot(211),ezplot(s,[a:0.01:b]);subplot(212),ezplot(F,[a,b]);二、运行程序实验函数为:输入:>>a=0;b=4;N=2;>>[cs]=leastp(a,b,N);>>>>a=0;b=4;N=4;>>[cs]=leastp(a,b,N);>>>>a=0;b=4;N=7;>>[cs]=leastp(a,b,N);三、实验结果N=2N=4N=7由上图可以发现:当阶数N取值不断增加时,图像的拟合程度越高。附:一、参考程序Lengendre多项式作基的函数最佳平方逼近算法程序LEASTP.m(此程序只适用于对函数f(x)=xex构造最佳平方逼近多项式)function[c,s]=leastp(x)%LEASTP.m:least-squarefittingwithlegendrepolynomialsp1=1;p2=inline('x','x');p3=inline('(3*x^2-1)','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);二、被逼近函数用M文件建立(例如下面)functionf=fun(x)f=1./(1+x.^2);三、变步长复化梯形求积公式的算法

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?