资源描述:
《连续函数最佳平方逼近的算法程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一.任务:用MATLAB语言编写连续函数最佳平方逼近的算法程序(函数式M文件)。并用此程序进行数值试验,写出计算实习报告。二.程序功能要求:在书中Page355或Page345的程序leastp.m(见附一)的基础上进行修改,使其更加完善。要求算法程序可以适应不同的具体函数,具有一定的通用性。所编程序具有以下功能:1.用Lengendre多项式做基,并适合于构造任意次数的最佳平方逼近多项式。可利用递推关系2.被逼近函数f(x)不用内联函数构造,而改用M文件建立数学函数。这样,此程序可通过修改建立数学函数的M文件以适用不同的被逼近函数(要学会用函数句柄)。3.要考虑一般的情况。因此,
2、程序中要有变量代换的功能。4.计算组合系数时,计算函数的积分采用变步长复化梯形求积法(见附三)。5.程序中应包括帮助文本和必要的注释语句。另外,程序中也要有必要的反馈信息。6.程序输入:(1)待求的被逼近函数值的数据点(可以是一个数值或向量)(2)区间端点:a,b。7.程序输出:(1)拟合系数:(2)待求的被逼近函数值三:数值试验要求:1.试验函数:;也可自选其它的试验函数。2.用所编程序直接进行计算,检测程序的正确性,并理解算法。3.分别求二次、三次、。。。最佳平方逼近函数。4.分别作出逼近函数和被逼近函数的曲线图进行比较。(分别用绘图函数plot(,s())和fplot(‘xc
3、osx’,[x1x2,y1,y2]))1.本次实验程序如下:一、Lengendre多项式的自动生成M文件functionP=legendre(N)%evaluatelegendrepolynomialuptonthordersymstx;forn=1:NPP(n)=diff((t^2-1)^(n-1),n-1);Q(n)=2^(n-1)*prod([1:n-1]);endPP(1)=1;Q=sym(Q);P=PP*(inv(diag(Q)));二、被逼近函数用M文件建立functionF=creat_fun(x)%creatfunctionuseM-filen=length(x);
4、F=x.*cos(x(1:n));三、区间变换functionf=convert_interval(a,b,F)%conversioninterval[a,b]between[-1,1],andexpressionoffunctionsymsxt;s=2((b-a)*t+a+b);%区间转换f=subs(F,x,s);%符号替换四、变步长复化梯形求积公式的算法functionI=Rctrap(g)%求积分的变步长梯形算法%f为被积函数;%积分的上下限为【-1,1】;%n为复花区间个数%T为输出的变步长梯形公式计算值;m=1;h=1-(-1);%所有积分都区间都已转化为【-1,1】
5、;T=zeros(1,100);T(1)=h*(feval(g,-1)+feval(g,1))/2;i=1;%进行变步长计算whilei<100m=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%满足条件输出停机I=T(i+1);%把终值返回break;endi=i+1;end五、主程序function[cs]=least_square(a,b,N)%leastsquarefitusingLegendrepolynomials,
6、s(x)=c1p1(x)+c2p2(x)+c3p3(x)+...;%[a,b]initialinterval;%ciscoefficient;%Nisthedegreeofpolynomial%sisthewantedfunctionsymstx;%sub-functiontocreatefunctionF=creat_fun(x);%sub-functiontoevaluatelegendrepolynomialuptonthorderP=legendre(N);%sub-function:conversioninterval[a,b]between[-1,1],andexpre
7、ssionoffunctionf=convert_interval(a,b,F);%togetcoefficentofc(i)f=P*diag(f);fori=1:Ng=inline(f(i));%sub-function:求积分的变步长梯形算法I=Rctrap(g);u(i)=I;Q(i)=2(2*(i-1)+1);endQ=sym(Q);c=double(u*diag(Q));%optimalsquareapproximationpolynomialS=c*P'