还剩3页未读,继续阅读
文本内容:
数值分析实习报告学院数学与统计学院专业数学类专业班姓名杨圣学号320210928991编写语言matlab题目
1.利用Remes算法计算函数:/x=tan^x4在区间[-11]上的4次最佳一致逼近多项式,精度为
0.0001问题分析在区间上选取n+2个作为初始节点,这里选取等距节点(可以选取切比雪夫点)给定的精度是
0.0001,然后通过逐次逼近求解交错点组的近似值,最终还可得到最佳一致逼近多项式求解近似最佳一致逼近多项式的算法一Remes算法设/(x)的〃次最佳一致逼近多项式为(X)=££,由前面分析知/-;在【,加上存在f=o〃+2个(e)点{巧}I使.(巧)一八七)=(一1)〃,i=0J…/+U
0.8)其中〃=叫(/)=1或-
1.functiony=funxy=tanpi/4*x;endL求解该线性方程组得到系数向量function[PJer]=SolveFunctionXn%解方程%输入需要求解的自变量行向量X逼近次数n%输出逼近多项式升鼎系数P,偏差er%系数矩阵记为A按照上图矩阵形式进行赋值B=funX;%目标函数在点集X处的函数值BfXA=zerosn+2;%线性方程组的系数矩阵A初始化A:l=onesn+21;%第一列全为1fori=l:n+2Ain+2=-l秋i;%第n+2列为-1的下标幕endfori=2:n+lA:%第2・1列按多项式次序赋值endY=pinvA*B;%方程组的解其中前n+1行为多项式系数第n+2行记为误差值P=%这里取行向量,方便接下来的多项式计算er=Yn+21;%对应误差值end
2.在得到系数向量后,找出最大偏差和最大偏差点function[vx]=MaxPointP%P为多项式系数%解出[-11]上真实值与多项式值之间的最大偏差v以及最大偏差点x%输入:解出的多项式系数P%输出最大偏差v以及最大偏差点xlinX=linspace-l1200;%等距节点初始化linv=absfunlinX-polyvalPlinX;v=maxlinv;%v返回求linv的最大值i=findlinv==v;%查找函数find返回linv的最大值的为应下标x=linXi;%返回最大值函数点所对应的自变量值End.对相应节点进行替换,主要是三种情况的讨论情况1当wx+[时,04/4〃如果与/¥-P/e同号,则在万⑺中将点厘置换点只,否则将点f置换点只田情况2当时,如果/F-P/F与/X;-P/x同号,则在X中将点P置换点匕;否则取如下新的点集{¥,X,・・・,E}来置换点集乂={.・・心}・情况3当¥时,如果/f-pM与同号,则在x⑺中将点F置换点X;否则取如下新的点集{X,…}来置换点集-=«,4・・牖}・注I替换点的确定主要是确定换入的位置functionI=SwitchPointXx%通过完整的点集X和需要换入的点X得到应该换入的位置工%输入点集X换入点x%输出换入位置In=lengthX-2;ifxXl%情况2I=0;%x小于XI+1elseifx=Xn+2%情况3I=n+2;%x大于XIelse%情况1fori=l:n+lifx=XixXi+1%x在XI和XHl之间I=i;breakendendendendfunction[XxPer]=RemeslXxPer%输入点集X逼近多项式系数P偏差ern=lengthX-2;I=SwitchpointXx;%得到x应该换入的点集X位置下标IdispI%情况1ifI=lI=n+1%情况1x在XI和XI+1之间iffunXI-polyvalPXI*funx-polyvalPx0%0表示同号XI=x;elseXI+l=x;End%情况2elseifI==0%情况2x小于X1+1iffunXI+l-polyvalPXI+l*funx-polyvalPx0XI+l=x;elseX=X:Jl:n+l;X=[xX];End%情况3elseifI==n+2%情况3x大于X1iffunXI-polyvalPXI*funx-polyvalPx0XI=x;elseX=X:2:n+2;X=[Xx]]endend[Per]=SolveFunctionXn;end.运行结果及图像该函数的4次最佳一致逼近多项式为:-
8.3949e-05xA4+
0.22984xA3+
8.904e-05xA2+
0.76608x-
5.0906e-06迭代次数5初始化点集等距节点精度00001最终误差:
3.5538e-05主程序n=4;%给定逼近多项式次数neps=
0.0001;%给定精度epsilonX=linspace-lln+2;%等距节点初始化[Per]=SolveFunctionXn;%解方程distance=[];fori=1:100%这里设定了一个迭代的上限[vx]=MaxPointP;%找最大偏差点distancei=absv-er;ifdistanceieps%判断是否满足误差disp[该函数的4次最佳一致逼近多项式为:poly2strPx];disp[迭代次数,num2stri]disp[初始化点集:等距节点J精度.0001/最终误差,num2strdistancei]breakelse[XxPer]=RemeslXxPer;endendfigurex0=linspace-ljln+2;y0=funx0;x=-1:
0.01:1;yl=polyvalPxy2=funx%分别计算出yl使用逼近多项式拟合值,和y2真实值的数组plotxylxy2holdonplotx0y0olegend「最佳一致逼近多项式Px,J原函数fx,J初始化:等距节点’xlabelxylabelytitleRemes算法等距节点精度。