资源描述:
《数值分析实验报告资料.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、机电工程学院机械工程陈星星《数值分析》课程设计实验报告实验一函数插值方法一、问题提出对于给定的一元函数的n+1个节点值。试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。数据如下:(1)0.40.550.650.800.951.050.410750.578150.696750.901.001.25382求五次Lagrange多项式,计算,的值。(提示:结果为,)实验步骤:第一步:先在matlab中定义lagran的M文件为拉格朗日函数代码为:function[c,l]=lagran(x,y)w=
2、length(x);n=w-1;l=zeros(w,w);fork=1:n+1v=1;forj=1:n+1if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));endendl(k,:)=v;endc=y*l;end第二步:然后在matlab命令窗口输入:>>>>x=[0.40.550.650.80,0.951.05];y=[0.410750.578150.696750.901.001.25382];>>p=lagran(x,y)回车得到:P=121.6264-422.7503572.5667-
3、377.2549121.9718-15.0845由此得出所求拉格朗日多项式为p(x)=121.6264x5-422.7503x4+572.5667x3-377.2549x2+121.9718x-15.0845第三步:在编辑窗口输入如下命令:>>x=[0.40.550.650.80,0.951.05];>>y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.0845;>>plot(x,y)命令执行后得到如下图所示图形,然后>>x=0
4、.596;>>y=121.6264*x.^5-422.7503*x.^4+572.5667*x.^3-377.2549*x.^2+121.9718*x-15.084y=0.6257得到f(0.596)=0.6257同理得到f(0.99)=1.0542(2)12345670.3680.1350.0500.0180.0070.0020.001试构造Lagrange多项式,和分段三次插值多项式,计算的,值。(提示:结果为,)实验步骤:第一步定义function[c,l]=lagran(x,y)w=length(x);n=w-1
5、;l=zeros(w,w);fork=1:n+1v=1;forj=1:n+1if(k~=j)v=conv(v,poly(x(j)))/(x(k)-x(j));endendl(k,:)=v;endc=y*l;end定义完拉格朗日M文件第二步:然后在matlab命令窗口输入:>>x=[1234567];y=[0.3680.1350.0500.0180.0070.0020.001];>>p=lagran(x,y)回车得到:由此得出所求拉格朗日多项式为p(x)=0.0001x6-0.0016x5+0.0186x4-0.1175x
6、3+0.4419x2-0.9683x+0.9950第三步:在编辑窗口输入如下命令:>>x=[1234567];>>y=0.0001*x.^6-0.0016*x.^5+0.0186*x.^4-0.1175*x.^3+0.4419*x.^2-0.9683*x+0.9950;>>plot(x,y)命令执行后得到如下图所示图形,然后>>x=1.8;>>y=65561*x.^6/-04051*x.^5/+223*x.^4/12000-2821*x.^3/24000+5275*x.^2/85248-19367*x./20000+19
7、9/200y=0.1648得到f(1.8)=0.1648同理得到f(6.15)=0.0013实验结论:插值是在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点,它是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。实验二函数逼近与曲线拟合一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。t(分)0
8、51015202530354045505501.272.162.863.443.874.154.374.514.584.024.64第一步先写出线性最小二乘法的M文件functionc=lspoly(x,y,m)n=length(x);b=zeros(1:m+1);f=zeros(n,m+1);fork=1:m+1f