资源描述:
《数值分析算例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、求解Lagrange插值问题求解Lagrange插值问题算法:Step1分別取变量、口变量范数Step2判断变量、自变量范数是否相同,若相同转到Step3,否则转到Step4Step3(1)(x-x,)^w+1(山)(2)令i=i+l(3)若ZVai转到Step3否则转到Step5Step4变量、自变量范数不同,输入错误Step5厶(兀)=E儿/=0求解Lagrange插值问题程序:functionLagrango(x,y)%m——自变量维数%n变量维数m二length(x);n二length(y);ifm==nsymsXb二X-x;a(l)=
2、prod(b(2:n))/prod(x(1)-x(2:n));%求减法运算之后的向量的乘积a(n)=prod(b(1:nT))/prod(x(n)-x(1:nT));forj=2:n-lp二prod(b(l:j-1))*prod(b(j+1:n));q=prod(x(j)-x(l:j-1))*prod(x(j)-x(j+1:n));a(j)=p/q;%第j项的插值多项式endsum(y.*a)elsedispCx,y维数不同错误')end例:确定下列数据的Lagrange插值多项式X012132252fM-i305321444输入:cleara
3、llclcx=[00.511.522.5];y=[-l-0.7501.25321/4];Lagrangc(x,y)得到:ans=X"2-1指导教师:年月LI求解Newton插值问题求解Newton插值问题算法:Step1分別取变量、口变量范数Step2判断变量、自变量范数是否相同,若相同转到Step3,否则转到Step4Step3(1)计算差商表(2)代入公式厶”=/[兀0]+/[兀0,“](兀一兀0)+・・・+/[兀0,兀],・・・£](兀一兀0)(兀一“)・・・(兀一乙)Step4变量、自变量范数不同,输入错误求解Newton插值问题程序:
4、functionnewton(x,y)%m——自变量维数%n变量维数%D一一差商表n=length(y);m二length(x);D=zeros(n,n);%构建一个空的表作为差商表D(:,1)二y(:);ifm二二nforj=2:nfori=j:nD(i,j)=(D(i,j-l)-D(i-l,j-l))/(x(i)-x(i-j+l));%差商表endendsymsXM二X-x;C(1)=D(1,1);%差商农笫一行第一列的数按照定义为插值多项式的常数fork二2:np=prod(M(l:k~l));q二D(k,k);%提取差商表里面的对应项C
5、二C+p*q;%插值多项式迭加endelsedisp('x,y维数不同错误')enddispC插值多项式为')sum(C(:))例:确定下列数据的Newton插值多项式X012132252/(兀)-1305321444输入:clearallclcx=[00.511.522.5];y=[-l-0.7501.25321/4];newton(x,y)得到:ans=X'2-1指导教师:年月Fl最小二乘法求函数逼近最小二乘法求函数逼近算法:最小二乘拟合是在一类曲线0中求一曲线0(兀)使与被拟合曲线/(兀)在节点州,…,占的课差平方和£[.心)-0(兀)『
6、最小。/=!最小二乘拟合用数学语言表述为:已知数据w=f(xxX;=1,・..,〃)和函数空间"=span®"…,(p)=min求一函数/令止)=工勺禺⑴,0(兀)=工Q'心(兀)7=0>0那么s(do,…卫加)=
7、
8、/-4=Z/=1兀-工幻為(无)问题等价于求ci;,・・・,a;gR使S(Q:,...,d:)=minS(a°,…,~)。从抽彖意义上说,是要在函数空间0中找与/最近的元素。从通俗意义上讲,是一个关于d(),・・.,d,”的二次函数的最小化问题。根据函数极值的必要条件,对兔,..•,入求偏导:仝-=0,R=0,…,加,加〃打得工工
9、勺為(兀)0血)=为乳久⑷。j=0/=!/=!用内积表示为线性方程组j=(/,(Pk),k=0,…,加j=o其矩阵形式为'(00,00)(00,0)…(00,%)、/、1(/,00)、(0,00)(0,0)…(0,0”)dl■■=(s)■•••••••••••••」0“,0。)(0“,0)…(%”,©)■、qm丿■最小二乘法求函数逼近程序:functionp=zuixiao(xi,yi,m)%xi一-自变量%yi—应变屋%m一一拟合次数%a解超定方程组的最小二乘解A二zeros(ni+1,m+1);fori=0:mforj=0:mA(i+1,j
10、+1)二sum(xi."(i+j));endb(i+l)二sum(xi・"i.*yi);enda二Ab';p=fliplr(a');f=polyva