您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数值分析报告插值多项式
wilyes11收集博客(与学习无关):插值多项式一、实验目的:熟悉插值多项式构造,掌握数据插值的思想方法,了解用内部函数和掌握编程方法解决实验问题;了解龙格现象,通过拉格朗日插值、分段线性插值以及三次样条插值进行插值效果的比较和分析;掌握上机编程与调试能力。二、实验内容:给定被插函数sin,sin,cosxxfxxxexx插值区间为[1,8],节点为,1,2...,8ixii,分别用分段线性和Hermite多项式进行插值。并和7次Lagrange或Newton多项式进行比较。三、实验要求:1.分别用内部函数和编程实现。2.可以自拟实验题,要求同上。四、实验程序及结果:方法一:内部函数法函数:InterpolationInterpolatingPolynomialTable[t[i]=i,{i,1,8}];Table[f[i]=Sin[t[i]]/t[i],{i,1,8}];Data=Table[{t[i],f[i]},{i,1,8}];a1=InterpolatingPolynomial[Data,x]//Expand;b=Graphics[{PointSize[0.02],Black,Point[Data]}];.001]}],{i,1,7}];Print[被插函数(蓝)、7次多项式差值(红)与分段线性差值(黑)如下图:]wilyes11收集博客(与学习无关):被插函数(蓝)、7次多项式差值(红)与分段线性差值(黑)如下图:123456780.20.00.20.40.60.8方法二:编程实现法h[i_]:=t[i+1]-t[i];[x_,i_]:=(x-t[i])/h[i];Table[t[i]=i,{i,1,8}];l[x_,n_,xi_,xj_]:=Product[(x-xi)[[i]],{i,1,n}]/Product[(xj-xi)[[i]],{i,1,n}];L8[x_]:=l[x,7,{t[2],t[3],t[4],t[5],t[6],t[7],t[8]},t[1]]*f[1]+l[x,7,{t[1],t[3],t[4],t[5],t[6],t[7],t[8]},t[2]]*f[2]+l[x,7,{t[1],t[2],t[4],t[5],t[6],t[7],t[8]},t[3]]*f[3]+l[x,7,{t[1],t[2],t[3],t[5],t[6],t[7],t[8]},t[4]]*f[4]+l[x,7,{t[1],t[2],t[3],t[4],t[6],t[7],t[8]},t[5]]*f[5]+l[x,7,{t[1],t[2],t[3],t[4],t[5],t[7],t[8]},t[6]]*f[6]+l[x,7,{t[1],t[2],t[3],t[4],t[5],t[6],t[8]},t[7]]*f[7]+l[x,7,{t[1],t[2],t[3],t[4],t[5],t[6],t[7]},t[8]]*f[8];PL[x_,i_]:=f[i](1-[x,i])+f[i+1][x,i];Table[f[i]=Sin[t[i]]/t[i],{i,1,8}];f[x_]:=Sin[x]/x;s1=Table[fig[i]=Plot[Evaluate[(PL[x,i]-Sin[x]/x)],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Blue}],{i,1,7}];s2=Table[fig[i]=Plot[Evaluate[L8[x]-Sin[x]/x],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Red}],{i,1,7}];k=Table[fig[i]=Plot[Evaluate[PL[x,i]],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Black}],{i,1,7}];g=Table[fig[i]=Plot[Evaluate[L8[x]],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Red}],{i,1,7}];s=Table[fig[i]=Plot[Evaluate[Sin[x]/x],{x,t[i],t[i+1]},PlotStyle{Blue,Thickness[0.015]}],{i,1,7}];Show[s,g,k,AxesFalse,PlotRangeAll,FrameTrue]Show[s1,s2,AxesFalse,PlotRangeAll,FrameTrue]wilyes11收集博客(与学习无关):[i_]:=t[i+1]-t[i];[x_,i_]:=(x-t[i])/h[i];Table[t[i]=i,{i,1,8}];PH[x_,i_]:=f[i](2[x,i]^3-3[x,i]^2+1)+d[i]h[i]([x,i]^3-2[x,i]^2+[x,i])+([x,i]^3-[x,i]^2)h[i]d[i+1]+f[i+1](-2[x,i]^3+3[x,i]^2);PL[x_,i_]:=f[i](1-[x,i])+f[i+1][x,i];Table[f[i]=Sin[t[i]]/t[i],{i,1,8}];f[x_]:=Sin[x]/x;wilyes11收集博客(与学习无关):[d[i]=(t[i]*Cos[t[i]]-Sin[t[i]])/t[i]^2,{i,1,8}];s1=Table[Plot[Evaluate[(PL[x,i]-Sin[x]/x)],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Black}],{i,1,7}];s2=Table[Plot[Evaluate[PH[x,i]-Sin[x]/x],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Green}],{i,1,7}];k=Table[Plot[Evaluate[PL[x,i]],{x,t[i],t[i+1]},PlotStyle{Thickness[0.005],Black}],{i,1,7}];g=Table[Plot[Evaluate[PH[x,i]],{x,t[i],t[i+1]},PlotStyle{Thickness[0.006],Green}],{i,1,7}];s=Table[Plot[Evaluate[Sin[x]/x],{x,t[i],t[i+1]},PlotStyle{Blue,Thickness[0.003]}],{i,1,7}];Show[g,k,s,AxesFalse,PlotRangeAll,FrameTrue]Show[s1,s2,AxesFalse,PlotRangeAll,FrameTrue]123456780.20.00.20.40.60.8wilyes11收集博客(与学习无关):五、实验总结:通过本次实验我加深了对分段线性插值、Hermite多项式插值、拉格朗日插值和牛顿插值的了解,也知道了这几种插值方法的优缺点。由于本次实验我第一次使用Mathematica语言,对语法不熟悉,在编程及调试程序的过程中遇到了很多困难,距离初步掌握Mathematica语言还有很大的差距,需要更多的时间来练习。实验过程中没有注意函数及变量的拼写及大小写的问题,犯了把“i”写成“1”,把“Sin”写成“sin”等错误,以后要注意这些细节。
本文标题:数值分析报告插值多项式
链接地址:https://www.777doc.com/doc-2424400 .html