实验8常微分方程数值解法的应用实训-函数插值学习报告_第1页
实验8常微分方程数值解法的应用实训-函数插值学习报告_第2页
实验8常微分方程数值解法的应用实训-函数插值学习报告_第3页
实验8常微分方程数值解法的应用实训-函数插值学习报告_第4页
实验8常微分方程数值解法的应用实训-函数插值学习报告_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《函数插值》学习报告第1章《函数插值》描述对象描述1、插值:用来填充图像变换时像间的空隙。其通常的做法是:在事先选定的一个由简单函数构成的有n+1《函数插值》学习报告第1章《函数插值》描述对象描述1、插值:用来填充图像变换时像间的空隙。其通常的做法是:在事先选定的一个由简单函数构成的有n+1个参数C0,C1,……Cn的函数类Φ(C0,C1,……Cn)中求出满足条件P(xi)=f(xi)(i=0,1,……n)的函数P(x),并以P()作为f()的估值。此处f(x)称为被函数插值,x0,x1,……xn称为插值结(节)点,Φ(C0,C1,……Cn)称为函数插值类,上面等式称为插值条件,Φ(C0,……Cn)中满足上式的函数称为函数插值,R(x)=f(x)-P(x)x0,x1……xn的最小闭区间时,相发展历史:无论是科学实验(Scienceexperiment)或工程试验(Engineeringtest),进行中多少都升空时,可能少接收一次讯号,土木(如钢筋混凝土计算)或测量(如日月出没时刻计算)查表时,表上也可能没有我们需要的函数值。凡此我们都可以用一种叫做数值逼近(Numericalapproximate)或曲线密合(Curvefitting)的方法来加以补救,插值法就是上述方法中最常用和最有效的一种。在古典数值分析中的插值法(Interpolation),有牛顿(Newton)插值法,拉格朗日(Lagrange)插值法艾特肯(Aitken)插值法赫米特(Hermite)插值法史帝林(Stirling)插值法、法等多种,这些插值方法都可用一条多项式来表示,也都可籍由Basic、Fortran、或影响一项实验或试验的因素很多,如与飞弹发射、 、以及与天文测量等 关的天文年历就是如此。在地球上某一点要决定某一星体在某时刻的位置至少有经度及纬度两个参数,所以用单一自变量插值法来求“星表”上没有的某地点(或数仟点)某时刻(或全年)该星体的位置,不但计算繁杂,而且费时冗长,就是用计算机程序来处理也是一项极为艰困且万分繁杂的任务。俗语说:穷则变,变则通。当我们研究科学用 法行不通时,就必须变换我们所思考的方向,研讨原计算的方法,和检核曾使用的工具。有创新才有,有才能成功。本文所讨论的“多自变量函数插值公式”就是依据这项原则经不断研究而发现的,它的诞生,将原本的工作变成容易,原本复杂的计算变得简单,为工程减少了大量的工作时间,也为公库节省了亿万元的公币。在学术研究上确是一大,在工程应用上更是一大创举。《函数插值》的相关概念插值问题的提法是:假定区间[a,b]上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……xn处的值是f(x0),……f(xn),要求估算f(x)在[a,b]中某点x*的值。基本思路是,找到一个函数P(x),在x0,x1……xn的节点上与f(x)函数值相同(有时,甚至一阶导数值也相同),用P(x*)的值作为函数f(x*)的近似。应的插值称为内插,否则称为外插。第2章《函数插值》的相关概念y=f(x)在区间[a,b]a≤x0x应的插值称为内插,否则称为外插。第2章《函数插值》的相关概念y=f(x)在区间[a,b]a≤x0x1⋯xnb上y0,y1,⋯,ynP(x),使P(xi)=yi(i=0,1,⋯,n)(1.1)成立,就称P(x)f(x)的函数插值x0,x1,⋯,xn称为插值节点,包含插值节点的区间a,b]称为插值区间P(x)的方法称为插值法P(x)是次n的代数多项式,即P(x)=a0+a1x+⋯+anxn,(1.2)aiP(x)为插值多项式,相应的插值法称为多项式插值P(x)为分段的多项式,就称为分段插值Px为三角多项式,就称为三角插值。y=P(x)n1个点(xi,yi),i=0,1,⋯,ny=f(x)1。1第3章《函数插值》的相关理论)多项式插值Φ1第3章《函数插值》的相关理论)多项式插值Φ为n次多项式类,由插值条件可以唯一确n+1个不同点,要寻找一条n是牛顿插值多项式。埃尔米特插值数插值P(x),自然不仅要求在这些点等于f(x)的函数值,而且要求P(x)的导数在这些点也等于式曲线不仅要通过平面上的已知点组,而且在这些点(或者其中一部分)与原曲线“密切”,即它们有相同的斜率。可见埃尔米特插值多项式比起一般多项式插值有较高的光滑逼近要求。)分段插值与样条插值为了避免高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程服这一缺点,一种全局化的分段插值方法——三次样条插值成为比较理想的工具。见样条函数。3.1分段插值在每个区间[xi,xi1上,用1阶多项式(直线)逼近f(x):f(x)P(i1yyfor]i11ix xi1f(x)P(i1yyfor]i11ix xi1xi i1i1 i即用折线代替曲线。hmax|xi1xi|易证:当优点:计算简单;h0Ph(x)f(x)1适用于光滑性要求不高的插值问题。分段三次(Hermite)插值插值。(4)三角函数插值当出。函数是以2π为周期的函数时,通常用n阶三角多项式作为函数插值,并通过高斯三角插值表(6)其它提法插值(Interpolation),有时也称为“重置样本”,是在不生成像素的情况下增加图像像素大小的一的分辨率。插值:用来填充图像变换时像(7)三次样条插值:间的空隙。上面介绍的分段线性插值,其总体光滑程度不够.在数学上,光滑程度的定量描述是:函数(曲线)的k阶导数存在且连续,则称该曲线具有k阶光滑性.自然,阶数越高光滑程度越好.于是,分段线性插值具有零阶光滑性,也就是不光滑;分段三次埃尔米特插值具有一阶光滑性.仅有这些光滑程度,在工程设计和机械加工等实际中是不够的.提高分段函数如多项式函数的次数,可望提高整体曲线的光滑程度.但是,是否存在较低次多项式达到较高阶光滑性的方法?三次样条插值就是一个很好的例子.样条曲线本身就来源于飞机、船舶等外形曲线设计中所用的绘图工具.在工程实际中,要求这样的曲线(5) 辛克插值抽样定理表述,对于正确的抽样信号s(t),原始信号可以由抽样值sk进行重建,其公式为:+∞s(t)=∑sksincπ(t-tk)(注:k为下标)k=-∞这里sk代表在时间tk=t0+k*T时的抽样值,T是抽样时间,它的倒数1/T叫做抽样频率。此公式表示,已知在规则分布的区间中的抽样值sk,我们就可以根据辛克函数先测出抽样值,然后将它们相加,这样计算出任意时间t应该具有连续的曲率,也就是连续的二阶导数.值得注意的是分段插值曲线的光滑性关键在于段与段之间的衔接点(节点)应该具有连续的曲率,也就是连续的二阶导数.值得注意的是分段插值曲线的光滑性关键在于段与段之间的衔接点(节点)处的光滑性.s(x),它是定义在区间[a,b]上的函数,满足:s(x)在每一个小区间[Xi-1,Xi]上是一个三次多项式函数;[a,b]上,其二阶导数存在且连续.即在每个节点处的二阶导数连续.三次样条插值问题的提法:f(x)n+1个节点x0,x1,...,xny0,y1,...,yn,求一个三次s(x),使其满足:s(xi)=yi,i=0,1,…,n.如何确定三次样条函数在每一个小区间上的三次多项式函数的系数呢?这是一个比较复杂的问题,这里只介绍确定系数的思想.分段线性插值在每一段的线性函数的两个参数,是由两个方程(两个端点处的函数值为给定值)唯一确定;对于三次样条插值呢,每一个区间上的三次函数有四个参数,而在该区间上由两个端点的函数值为给定值只能够产生两个方程,仅此不足以唯一确定四个参数.注意到三次样条函数对整体光滑性的要求,其二阶导数存在且连续,从全局的角度上考虑参数个数与方程个数的关系如下:4个,n4n个.2个,n2n个;光滑性要求每一个内部节点处的一阶、二阶导数连续,得出其左右导数相等,因此,2个方程,2(n-1)个.现在得到了4n-2个方程,还差两个.为此,常用的方法是对边界节点除函数值外附加要求.这就是所谓的边界条件.需要两个,正好左右两个端点各一个.常用如下三类边界条件m边界条件:s'(X0)=m0,s'(Xn)=mn.即两个边界节点的一阶导数值为给定值:m0,mn.M边界条件:s''(x0)=m0,s''(xn)=mn.即两个边界节点的二阶导数值为给定值:m0,mn.特别地,当m0和mn都为零时,称为自然边界条件.周期性边界条件:s'(x0)=s'(xns''(x0)=s''(xn).第4章《函数插值》国内研究现状作者来源时间数据库 被引士基于差值灰色径向基函数神白宇太原理工大学经网络的瓦斯涌出量2010-09-13期刊扩展函数插值及其在图像运李莉;屈桢深;曾庆双动估计中的应用吉林大学学报(工学版)2008-07-15期刊最大离差值极小响应面及按宇慧平;隋允康;丁力;叶红玲科技2010-01-13期Kreisselmerier-Steinhauser函刊数的拟合差值取样谱函数定理及其在许铭真;谭长华;王阳元研究MOS陷阱弛豫效应方面的应用半导体学报1992-01-31期刊2010-01-10中国会议K-S函数拟合最大差值极小宇慧平;隋允康;丁力响应面的研究北京力学会第十六届学术年会论2010-01-10中国会议2010-01-10中国会议平函数插值的权函数式和未季振邦知数函数的权函数式的转化及其应用工程勘察1984-09-22期刊推算路线不影响平函数插值蒋德云勘察科学技术2000-04-30期刊的权倒数平函数插值的权倒数与推算华文威路线无关测绘通报1978-03-22期刊基于模态参数分析的井架结迟利源大庆石油学院2006-03-15硕士构损伤识别研究杜春清中国局兰州2007-05-10硕士无失真数据压缩基于非参数密度估计点样本牛君山东大学2007-10-26博士分析建模的应用研究重力差值趋势面分析系统阎汉杰;刘学桢;王捷;邹传堂;颜计算机在地学中的应用国际讨论1991-09-01国立新作者来源时间数据库 被引士基于差值灰色径向基函数神白宇太原理工大学经网络的瓦斯涌出量2010-09-13期刊扩展函数插值及其在图像运李莉;屈桢深;曾庆双动估计中的应用吉林大学学报(工学版)2008-07-15期刊最大离差值极小响应面及按宇慧平;隋允康;丁力;叶红玲科技2010-01-13期Kreisselmerier-Steinhauser函刊数的拟合差值取样谱函数定理及其在许铭真;谭长华;王阳元研究MOS陷阱弛豫效应方面的应用半导体学报1992-01-31期刊2010-01-10中国会议K-S函数拟合最大差值极小宇慧平;隋允康;丁力响应面的研究北京力学会第十六届学术年会论2010-01-10中国会议2010-01-10中国会议平函数插值的权函数式和未季振邦知数函数的权函数式的转化及其应用工程勘察1984-09-22期刊推算路线不影响平函数插值蒋德云勘察科学技术2000-04-30期刊的权倒数平函数插值的权倒数与推算华文威路线无关测绘通报1978-03-22期刊基于模态参数分析的井架结迟利源大庆石油学院2006-03-15硕士构损伤识别研究杜春清中国局兰州2007-05-10硕士无失真数据压缩基于非参数密度估计点样本牛君山东大学2007-10-26博士分析建模的应用研究重力差值趋势面分析系统阎汉杰;刘学桢;王捷;邹传堂;颜计算机在地学中的应用国际讨论1991-09-01国立新会摘要集际会议最大差值极小化的响应面函郑小龙;叶红玲;隋允康;宇慧平 数拟合方法最大差值最小化方法拟合响郑小龙;叶红玲隋允康北京力学会第十六届学术年会论应面函数最大差值最小化方法拟合响郑小龙;叶红玲隋允康北京力学会第十六届学术年会论应面函数的软件开发一、《函数插值》方法一览表方法名称经典方方法比较法方法的优点方法的缺点多项式插值拉格朗牛顿差值法当增加点拉格朗日插值法当点数增加所日插值时前面的工作依然有有的数都需要重新计算,计算多项式效计算量较小,拉格量较大牛顿插朗日插值法引起基函值多项数特点多被广泛应用式埃尔米特插值比一般多项式插值有不仅要知道它在一些点的函数较高的光滑逼近要求值,而且还知道它在这些点的导数值分段插值与样条插三次样避免高次插值可能出总体光滑性较差值条差值现的大幅度波动现象,可以提高近似程度三角函数插值通常只用于插函数是以2π为周期的函数辛克差值由样品值完美地重建原始信号《函数插值》方法有多少?一、《函数插值》方法一览表方法名称经典方方法比较法方法的优点方法的缺点多项式插值拉格朗牛顿差值法当增加点拉格朗日插值法当点数增加所日插值时前面的工作依然有有的数都需要重新计算,计算多项式效计算量较小,拉格量较大牛顿插朗日插值法引起基函值多项数特点多被广泛应用式埃尔米特插值比一般多项式插值有不仅要知道它在一些点的函数较高的光滑逼近要求值,而且还知道它在这些点的导数值分段插值与样条插三次样避免高次插值可能出总体光滑性较差值条差值现的大幅度波动现象,可以提高近似程度三角函数插值通常只用于插函数是以2π为周期的函数辛克差值由样品值完美地重建原始信号《函数插值》方法有多少?第5章1、算法应用《函数插值》方法怎么用及其程序设计1.《函数插值》用到的Mathematica函数Interpolation[data]对数据进行差值,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数InterpolationOrder第5章1、算法应用《函数插值》方法怎么用及其程序设计1.《函数插值》用到的Mathematica函数Interpolation[data]对数据进行差值,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数InterpolationOrder3次,可修改ListInterpolation[array]对离散数据插值,arrayn维FunctionInterpolation[expr,{x,xmin,xmax},{y,ymin,ymax},..]以对应expr[xi,yi]的为数据进行插值2.《函数插值》的Mathematica主程序部分mathematica演示程序如下:函数的插值L={ListInterpolatingPolynomial[L,x]1两点线性插值I=InterpolatingPolynomial[L,x]2三点抛物插值保形差值等。综合以上看来各种方法都各有其优缺点,但为了避免高次插值可能出现的大幅度波动现象,在实际应用中通常采用分段低次插值来提高近似程度,比如可用分段线性插值或分段三次埃尔米特插值来逼近已知函数,但它们的总体光滑性较差。为了克服这一缺点,一种全局化的分段插值方法——三次样条差值,成为比较理想的工具。I1=InterpolatingPolynomial[L1,x]3多点拉格朗日插值{0.52,0.50},{0.64,0.38},{0.7,0.33},{1.0,0.24}}I2=InterpolatingPolynomial[L2,x]Plot[%,{x,-0.25,1.05}]4I1=InterpolatingPolynomial[L1,x]3多点拉格朗日插值{0.52,0.50},{0.64,0.38},{0.7,0.33},{1.0,0.24}}I2=InterpolatingPolynomial[L2,x]Plot[%,{x,-0.25,1.05}]40,Pg0=Plot[Sin[x],{x,0,Pi}]L=Line[Table[{x,Sin[x]},{x,0,Pi,Pi/4}]]g=Graphics[L]Show[g0,g]sinAp[n_]:=Graphics[{Line[Table[{x,Sin[x]},{x,0,Pi,Pi/(n+1)}]]}]sinAp[2]Show[g0,%]二.龙格现像演示a=InterpolatingPolynomial[L,x]b=Plot[1/(1+25*x^2),{x,-1,1},PlotStyle->{RGBColor[1,0,0]}]c=Plot[a,{x,-1,1}]Show[b,c]三.两点三次Hermite]};h0[x_]:=(1+2*x)*(x-1)^2;h1[x_]=(1-2(x-1))*(x/(x-1))^2H0[x_]=x*(x-1)^2H1[x_]=(x-1)*x^2H[x_]=y1[[1]]*h0[x]+y1[[2]]*h1[x]+m[[1]]*H0[x]+m[[2]]*H1[x]%/.{x->0.55}N+12N+1次Hermite]}y=Table[Log[x],m=Table[1/x,{x,0.40,0.80,0.10}]bb[x_]=InterpolatingPolynomial[y,x]Simplify[bb[x]]bb[0.55]w[x_]=(x-x0[[1]])*(x-x0[[2]])*(x-x0[[3]])*(x-x0[[4]])*(x-x0[[5]])w1[x_]=D[w[x],x];Simplify[w1[x]]w2[x_]=D[w[x],{x,2}];Simplify[w2[x]]For[i=1,i<=5,i++,h[i_,x_]:=(1-w2[x0[[i]]]*(x-x0[[i]])/w1[x0[[i]]])*L[i,x]^2;H[i_,x_]:=L[i,x]^2*(x-x0[[i]]);]Hm[x_]=Sum[y[[i]]*h[i,x]+m[[i]]*H[i,x],{i,1,5,1}];Simplify[Hm[x]]Hm[0.55]五观察下面的函数插值。In[1]:=data=Table[Sin[x-2y],{x,-2.,2.},{y,-2.,2.}];f=ListInterpolation[data,{{-2,2},{-2,2}}]Out[2]=InterpolatingFunction[{{-2.,2.},{-2.,2.}},<>]In[3]:=g=FunctionInterpolation[f[Cos[2πt],Sin[2πt]],0,1}]1}},<>]In[4]:=Plot[{g[t],f[Cos[2πt],Sin[2πt]]},{t,0,1},PlotStyle→{RGBColor[1,0,0],RGBColor[0,0PlotStyle→{RGBColor[1,0,0],RGBColor[0,0,1]}]13-48比较两个函数差异的图形Out[4]=-Graphics-说明:上例中第一步生成一个二元近似函数,第二步使用FunctionInterpolation由复合函数生成一个新13-48所示两者相差不大。3.2.1实验目的Lagrange插值多项式和最小二乘拟合多项式的基本语句。2.掌握函数插值与拟合的有关操作命令。Mathematica软件对散乱数据问题进行分析研究。3.2.2实验内容【基本语句】1.InterpolatingPolynomial[选项x];2.Fit[选项,{1,x,x^2},x];【功 能】插值多项式,选项代表数据表;求出最小二乘二次拟合多项式,选项代表数据表。值,给出图形并估计截断误差。函数表:0.4 64640.70.644220.38942解Mathematica程序:0.47943Table[a={{0.4,0.5,0.6,0.7},{0.38942,0.47943,0.56464,0.64422}}];Transpose[a][[{2,3}]];y1=InterpolatingPolynomial[%,x]//ExpandTranspose[a][[{2,3,4}]];y2=InterpolatingPolynomial[%,x]//ExpandTranspose[a][[{1,2,3,4}]];y3=InterpolatingPolynomial[%,x]//Expand<<Graphics`Legend`Transpose[a][[{1,2,3,4}]];y3=InterpolatingPolynomial[%,x]//Expand<<Graphics`Legend`Plot[{y1,y2,y3},{x,0,1.8},->{Thickness[0.01],Thickness[0.008],Thickness[0.005]},PlotLegend->{"y1","y2","y3"},LegendPosition->{1,0}]Map[NumberForm[#,10]&,{Sin[0.57891],y1,y2,y3}/.x->0.57891]运行结果:0.053380.8521x0.031071.16175x0.2815x20.002021.01373插值多项式的图形如下:一次插值多项式二次插值多项式三次插值多项式31.510.55三种插值曲线由图形可见,三次插值曲线与sinx曲线最贴近。下面是sin0.57891的真值与三种插值的比较:语句:resError[x_,n_,xp_List,k_]:=D[Sin[t],{t,n+1}]/((n+1)!)*Product[(x-xp)[[j+1]]/.t->k,{j,0,n}]resError[0.57891,1,{0.5,0.6},0.6]/.t->0.6resError[0.57891,2,{0.5,0.6,0.7},0.5]/.t->0.5resError[0.57891,3,{0.4,0.5,0.6,0.7},0.4]/.t->0.4以下是三种插值在计算sin0.57891时的误差的运行结果0.0004698420.0000294755.850011073.2.23.其他程序设计y11基于插值方法的选择下的函数插值423~473K450K时的密度和粘度。density~temperature1基于插值方法的选择下的函数插值423~473K450K时的密度和粘度。density~temperature19801975(K)423433443453463473(kg/m3)197619671959195119431934(Pa·S177.58146.51122.79104.690.2678.791970196519601955450460470480viscosity~temperature440450460470480函数N维插值interp1interpqinterp2interp3interpninterpftHermitepchipsplineinterp1一维插值调用格式:yi=interp1(x,y,xi)已知数据向量(x,y),计算并返回在插值向量xi处的函数值yi=interp1(x,y,ximethodyi=interp1(x,y,ximethodextrap’)method’用于指定插值算法,其值可以是:‘nearest’——linear’——线性插值(默认值)spline’——pchip’——分Hermitecubic’——与‘pchip’相同注意:向量x注意:向量xyy的每一列进行插值向量xixyiNaN’extrap’xix的范围内时,采用’method’所指定的插值算法进行外插计算与之对应的yi值-0.27940.65700.98940.4121-0.5440];(y=x=0,2,4,…,10,y=sinx,以上方法插值效果。x=0:1:10;y=[00.84150.90930.1411-0.7568-0.9589-0.27940.6570.98940.4121-0.5440];]););线性插值\rightarrow')yi2=interp1(x,y,xi,'nearst');plot(xi,yi2,'c*'),text(3.537,0.1374,'\leftarrow最近插值')yi3=interp1(x,y,xi,'cubic');plot(xi,yi3,'md'),text(2.408,0.8333,'\leftarrow三次插值')yi4=interp1(x,y,xi,'spline');plot(xi,yi4,'kh'),text(4.62,0.8158,'三次样条插值\rightarrow')初始数据对于插值的影响x=0:2:10;y=sin(x);plot(x,y,'go'),holdonezplot(@sin,[010])xi=0:0.15:10;yi=interp1(x,y,xi);plot(xi,yi,'r+'),text(0.5876,0.2537,'\leftarrow线性插值')yi2=interp1(x,y,xi,'nearst');plot(xi,yi2,'c*'),text(6.947,-0.258,'\leftarrow最近插值')yi3=interp1(x,y,xi,‘pchip');plot(xi,yi3,'md'),text(2.408,0.8333,'\leftarrow三次插值')yi4=interp1(x,y,xi,'splineplot(xi,yi4,'kh'),text(1.601,1.138,'\leftarrow')1.510.50-0.5-1012345678910spline与pchipSpline()的调用格式为:yi=spline(x,y,xi)此函数等同于yi=interp1(x,y,xi,‘spline’)pp=spline(x,y)返回三次样条插值的分段多项式形式的向量spline函数可以保证函数插值的三阶导数连续pchip()的调用格式为:yi=pchip(x,y,xi)此pp=pchip(x,y)返回三次样条插值的分段多项式形式的向量pchippp=pchip(x,y)返回三次样条插值的分段多项式形式的向量pchipspline的区别pchipspline的区别:三次样条在相邻的节点上并不保证单调性;而Hermite分段三次样条则可(x=sin(kπ/6),y=cos(kπ/6)k=[0123]来逼近pchip与spline的差别。1圆的前四分之一圆周。t=linspace(0,pi/2,4)x=cos(t);y=sin(t);xx=linspace(0,1,40);plot(x,y,'s',xx,[pchip(x,y,xx);spline(x,y,xx)])gridon,axisequallegend('Orignaldata','pchip','spline')0Orignaldatapchipspline00.81csapecsape()的调用格式为:pp=csape(x,y)pp=csape(x,y,conds)conds可为以下字符串:‘complete’指定端点处一阶导数‘second指定端点处二阶导数‘periodic’左右端点处一、二阶导数相等‘not-a-knot第二个和倒数第二个节点处三阶导数连续‘variational’自然边界条件,即端点二阶导数为零除csape外,csapi,spapi等csape的使用f(x)为区间[0,3]上的函数,剖分节点为xi=[0123];节点上的函数值为yi=[00.521.5],左右端0.2和-1[0,3]x=[0123];y=[1.5-1];pp=csape(x,y,’complete’)几个有用的函数[breakscoffkmn]=unmkpp(pp)命令可以看到样条函数的具体信息其中coff是一个矩阵,其第iisi(x)=a0(x?xi?1)3+a1(x?xi?1)2+a2(x?xi?1)+a3fnval或ppval可以计算样条函数在指定点的函数值3.fnder和fnint可分别计算样条函数的导数和4.fnplt可用于绘制样条函数的图形method算法属性值可以是;‘nearest最近插值‘linear线性插值(默认)‘spline’——三次样条插值(spline)cubic’——立方插值二维函数插值的使用randn('state',2);x=-5:5;y=-5:5;[X,Y]=meshgrid(x,y);Z=-500+1.2*exp(-((X-1).^2+(Y-2).^2))-0.7*exp(-(exp(X+2).^2+(Y+1).^2));surf(X,Y,Z),view(-25,25)试由插值方式绘制海底形状图。xi=linspace(-5,5,50);yi=linspace(-5,5,50);[XI,YI]=meshgrid(xi,yi);ZI=interp2(X,Y,Z,XI,YI,'*cubic');surf(XI,YI,ZI)view(-25,25)-498.5-499-499.5-500-500.5-50150-498.5-499-499.5-500-500.5-501500-5-5-498.5-499-499.5-500-500.5-501500-5-5552C//求三次样条函数插值#include<iostream>#include<iomanip>usingnamespacestd;constintMAX=50;floatx[MAX],y[MAX],h[MAX];//变量设置:x为各点横坐标;y为各点纵坐标;h为步长floatc[MAX],a[MAX],fxym[MAX];floatf(intx1intx2intx3)/*****************求差分函数(含三个参数)****************************/{floata=(y[x3]-y[x2])/(x[x3]-x[x2]);floatb=(y[x2]-y[x1])/(x[x2]-x[x1]);return(a-b)/(x[x3]-x[x1]);}voidcal_m(intn)/***********************用追赶法求解出弯矩向量M……***************************/{floatB[MAX];B[0]=c[0]/2;for(inti=1;i<n;i++)B[i]=c[i]/(2-a[i]*B[i-1]);//fxym[0]=fxym[0]/2;for(inti=1;i<=n;i++)fxym[i]=(fxym[i]-a[i]*fxym[i-1])/(2-a[i]*B[i-1]);for(inti=n-1;i>=0;i--)fxym[i]=fxym[i]-B[i]*fxym[i+1];}voidprintout(intn);intmain(){intn,i;charch;do{cin>>n;for(ido{cin>>n;for(i=0;i<=n;i++){cout<<"PleaseputinX"<<i<<':';cin>>x[i]; //cout<<endl;cout<<"PleaseputinY"<<i<<':';cin>>y[i];//cout<<endl;}for(i0;in;ix,y个数少一h[i]=x[i+1]-x[i];cout<<"Please\n1n2:两端的二阶导数已知\n边界条件\n";intt;floatf0,f1;cin>>t;switch(t){case1:cout<<"PleaseputinY0Y"<<n<<"\'\n";//显示数据为Y0'至Yn',即断点的一阶导数cin>>f0>>f1;c[0]=1;a[n]=1;fxym[0]=6*((y[1]-y[0])/(x[1]-x[0])-f0)/h[0];fxym[n]=6*(f1-(y[n]-y[n-1])/(x[n]-x[n-1]))/h[n-1];break;case2:cout<<"PleaseputinY0Y"<<n<<"\"\n";//显示数据为Y0"至Yn",即断点的二阶导数cin>>f0>>f1;c[0]=a[n]=0;fxym[0]=2*f0;fxym[n]=2*f1;break;default:cout<<"不可用\n";//待定};//switchfor(i=1;i<n;i++)fxym[i6*f(i-1ii+1);//调用差分函数(only!)for(i=1;i<n;i++){a[i]=h[i-1]/(h[i]+h[i-1]);c[i]=1-a[i];}a[n]=h[n-1]/(h[n-1]+h[n]);cal_m(n);//调用弯矩函数(only!)输出三次样条函数插值:\n";printout(n);//调用求解三次样条函数插值;函数输出cout<<"Doyoucal_m(n);//调用弯矩函数(only!)输出三次样条函数插值:\n";printout(n);//调用求解三次样条函数插值;函数输出cout<<"Doyoutohaveanthertry?y/n:";cin>>ch;}while(ch=='y'||ch=='Y');return0;}voidprintout(intn)/***************求三次样条函数插值(因已知断点个数而异)***********************/{setprecision()设置有效位数;其为头文件<iomanip.h>所包含;括号内为参数。for(inti0;in;i++)//所输出函数个数由所设断点个数而定{cout<<i+1<<":["<<x[i]<<","<<x[i+1]<<"]\n"<<"\t";floatt=fxym[i]/(6*h[i]);if(t>0)cout<<t<<"*("<<x[i+1]<<"-x)^3";elsecout<<-t<<"*(x-"<<x[i+1]<<")^3";t=fxym[i+1]/(6*h[i]);if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")^3";elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")^3";cout<<"\n\t";t=(y[i]-fxym[i]*h[i]*h[i]/6)/h[i];if(t>0)cout<<"+"<<t<<"*("<<x[i+1]<<"-x)";elsecout<<"-"<<-t<<"*("<<x[i+1]<<"-x)";t=(y[i+1]-fxym[i+1]*h[i]*h[i]/6)/h[i];if(t>0)cout<<"+"<<t<<"*(x-"<<x[i]<<")";elsecout<<"-"<<-t<<"*(x-"<<x[i]<<")";cout<<endl<<endl;}cout<<endl;}/****************提供测试数据:(来自327.7 4.1页例《数值分析》28293013.0-4.0*//*输出}/****************提供测试数据:(来自327.7 4.1页例《数值分析》28293013.0-4.0*//*输出1:[27.728]13.07*(x-28)^3+0.22*(x-27.7)^3+14.84*(28-x)+14.31*(x-27.7)2:[28,29]0.066*(29-x)^3+0.1383*(x-28)^3+4.234*(29-x)+3.962*(x-28)3:[29,30]0.1383*(30-x)^3-1.519*(x-29)^3+3.962*(30-x)+4.519*(x-29)*//*利用三次样条插值法求曲线在某个点处的函数值(本题用第二个边界条件)*/#include<stdio.h>#include<math.h>#defineN11voidmain(){//N表示节点的个数y[N]={0,57,78,103,135,182,214,244,256,272,275},h[N],a[N],b[N],A[N],B[N],m[N],s[37],xx[37//s[N]表示曲线,其中数组xx[N]表示自变量x[k]inti,k;h[0]=x[1]-x[0];a[0]=1;//初始化h0,a0,b0,A0,B0b[0]=3*(y[1]-y[0])/h[0];A[0]=-a[0]/2;B[0]=h[0]=x[1]-x[0];a[0]=1;//初始化h0,a0,b0,A0,B0b[0]=3*(y[1]-y[0])/h[0];A[0]=-a[0]/2;B[0]=b[0]/2;for(i=0;i<N;i++)h[i]=x[i+1]-x[i];//求hifor(i=1;i<N-1;i++) a[i]=h[i-1]/(h[i-1]+h[i]);b[i]=3*((1-a[i])*(y[i]-y[i-1])/h[i-1]+a[i]*(y[i+1]-y[i])/h[i]);}for(i=1;i<N-1;i++)Ai,BiA[i]=-a[i]/(2+(1-a[i])*A[i-1]);B[i]=(b[i]-(1-a[i])*B[i-1])/(2+(1-a[i])*A[i-1]);}m[N-1]=(b[N-1]-(1-a[N-1])*B[N-2])/(2+(1-a[N-1])*A[N-2]);//求Mn的值for(i=N-2;i>=0;i--)//求m0,m1, mn-1的值m[i]=A[i]*m[i+1]+B[i];for(k=1;k<=36;k x[k]处的函数值xx[k]50*k;for(i=0;i<N;i++)//找出x[k]所在的区间if(xx[k]>=x[i]&&xx[k]<=x[i+1])//s[k]即为x[k]所在区间的三次样条函数插值,以下即为求在x[k]处的函数值s[k1+2*(xx[k]-x[i])/(x[i+1]-x[i]))*pow((xx[k]-x[i+1])/(x[i]-x[i+1]),2)*y[i(1+2*(xx[k]-x[i+1])/(x[i]-x[i+1]))*pow((xx[k]-x[i])/(x[i+1]-x[i]),2)*y[i+1]+(xx[k]-x[i])*pow((xx[k]-x[i+1])/(x[i]-x[i+1]),2)*m[i]+(xx[k]-x[i+1])*pow((xx[k]-x[i])/(x[i+1]-x[i]),2)*m[i+1];}printf("所求的外形曲线在x[k]=50*k(k=1,2,...,36)处的函数值分别为:\n");for(k=1;k<=36;k++)//输出在x[k]处的函数值printf("s(%4d)=%13.8f\n",50*k,s[k]);printf("\n");的值分别为:\n");for(i=0;i<N;i++)printf("m(%2d)=%8f\n",i,m[i]);printf("\n");}//程序代码实现2:#include<iomanip>//程序代码实现2:#include<iomanip>#include<math.h>usingnamespacestd;#definen4//三次样条插值分段数=数据的组数减一voidchase(doublea[n-1][n-1],doublef[n-1],doublem[n+1]){//三对角阵的Crout分解doubleL[n-1][n-1];doubleU[n-1][n-1];doubley[n-1];doublex[n-1];intt,r=0;for(inti=0;i<n-1;i++){for(intj=0;j<n-1;j++){L[i][j]=U[i][j]=0;}}for(inti=0;i<n-1;i++)//判断是否符合Crout分解定理{if(i==0){if(a[i][i]==0||a[i][i+1]==0){cout<<"a["<<n-1<<"]["<<n-1<<"]可约"<<endl;break;}if(fabs(a[i][i])<=fabs(a[i][i+1])){cout<<"a["<<n-1<<"]["<<n-1<<"]强超"<<endl;break;}}elseif(i==n-1-1){if(a[i][i]==0||a[i][i-1]==0){cout<<"a["<<n-1<<"]["<<n-1<<"]可约"<<endl;break;}if(fabs(a[i][i])<=fabs(a[i][i-1])){cout<<"a["<<n-1<<"]["<<n-1<<"]强超"<<endl;{if(a[i][i]==0||a[i][i-1]==0){cout<<"a["<<n-1<<"]["<<n-1<<"]可约"<<endl;break;}if(fabs(a[i][i])<=fabs(a[i][i-1])){cout<<"a["<<n-1<<"]["<<n-1<<"]强超"<<endl;break;}}else{if(a[i][i]==0||a[i][i-1]==0||a[i][i+1]==0){cout<<"a["<<n-1<<"]["<<n-1<<"]可约"<<endl;break;}if(fabs(a[i][i])<fabs(a[i][i-1])+fabs(a[i][i+1])){cout<<"a["<<n-1<<"]["<<n-1<<"]强超"<<endl;break;}}t=i;}if(t==n-1-1){endl;inti=0;for(inti=0;i<n-1;i++){if(i==0){L[i][i]=a[i][i];U[i][i]=1;continue;}if(i==n-1-1){L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];U[i][i]=1;}else{L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];U[i][i]=1;}}L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];U[i][i]=1;}else{L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];U[i][i]=1;}}L为:"<<endl;for(inti=0;i<n-1;i++){for(intj=0;j<n-1;j++){cout<<setw(10)<<L[i][j];//设定输出宽度}cout<<endl;}U为:"<<endl;for(inti=0;i<n-1;i++){for(intj=0;j<n-1;j++){cout<<setw(10)<<U[i][j];}cout<<endl;}y[0]=f[0]/a[0][0]; //解下三角方程组for(inti=1;i<n-1;i++){y[i]=(f[i]-a[i][i-1]*y[i-1])/L[i][i];}x[i-1]=y[i-1];//解上三角方程组for(inti=n-1-2;i>=0;i--){x[i]=y[i]-U[i][i+1]*x[i+1];}for(inti=0;i<n-1;i++){m[i+1]=x[i];}}}voidmain(){double}}voidmain(){doublex[n+1]={0.25,0.30,0.39,0.45,0.53};doubledy0=1,dyn=0.6868;doubleh_i[n];doublew[n-1];doublev[n-1];doubled[n-1];doubleA[n-1][n-1];doubleb[n-1];doublem[(n-1)+2];inti,j;for(i=0;i<n-1;i++){b[i]=0;for(j=0;j<n-1;j++){if(i==j){A[i][i]=2;}else{A[i][j]=0;}}}//有n+1个单元<endl;cout<<"插值数据:"<<endl<<setw(8)<<"xi";for(i=0;i<n+1;i++){cout<<setw(8)<<x[i];}for(i=0;i<n+1;i++){cout<<setw(8)<<y[i];}for(i=0;i<n;i++){h_i[i]=x[i+1]-x[i];}for(i=0;i<n-1;i++){w[i]=h_i[i+1]/(h_i[i]+h_i[i+1]);//miu{h_i[i]=x[i+1]-x[i];}for(i=0;i<n-1;i++){w[i]=h_i[i+1]/(h_i[i]+h_i[i+1]);//miuv[i]=h_i[i]/(h_i[i]+h_i[i+1]);//namdad[i]=3*(w[i]*(y[i+1]-y[i])/h_i[i]+v[i]*(y[i+2]-y[i+1])/h_i[i+1]);}for(i=0;i<n-2;i++){A[i][i+1]=v[i];A[i+1][i]=w[i+1];}for(i=0;i<n-1;i++){b[i]=d[i];if(i==0){b[i]-=w[i]*dy0;}elseif(i==n-2){b[i]-=v[i]*dyn;}}endl<<"A="<<endl;;for(i=0;i<n-1;i++){for(j=0;j<n-1;j++){cout<<setw(10)<<A[i][j];}cout<<endl;}for(i=0;i<n-1;i++){cout<<setw(10)<<b[i];}chase(A,b,m);<endl;for(i=1;i<n;i++){cout<<setw(10)<<"m"<<i<<"="<<m[i]<<endl;}m[0]=dy0;m[n]=dyn;/*for(i=0;i<n+1;i++){cout<<setw(10)<<"m"<<i<<"="<<m[i]<<endl;<endl;for(i=1;i<n;i++){cout<<setw(10)<<"m"<<i<<"="<<m[i]<<endl;}m[0]=dy0;m[n]=dyn;/*for(i=0;i<n+1;i++){cout<<setw(10)<<"m"<<i<<"="<<m[i]<<endl;}*/doubles=0;//分段函数系数///具有局限性,分多少段就定义多少个变量doubless[4][n];//第i+1行为-i次方次数,i=0,1,2,3doublexx;intflag=0,tap;charans;//yornfor(i=0;i<n;i++){ss[0][i]=2*(y[i]-y[i+1])/pow((x[i+1]-x[i]),3)+(m[i]+m[i+1])/pow((x[i+1]-x[i]),2);ss[1][i]=3*(x[i+1]+x[i])*(y[i]-y[i+1])/pow((x[i]-x[i+1]),3)-((2*x[i+1]+x[i])*m[i]+(2*x[i]+x[i+1])*m[i+1])/pow((x[i+1]-x[i]),2);(pow(x[i],2)+2*x[i]*x[i+1])*m[i+1])/pow((x[i+1]-x[i]),2);ss[3][i]=(pow(x[i+1],2)*(x[i+1]-3*x[i])*y[i]-pow(x[i],2)*(x[i]-3*x[i+1])*y[i+1])/pow((x[i+1]-x[i]),3)-x[i+1]*x[i]*(x[i+1]*m[i]+x[i]*m[i+1])/pow((x[i]-x[i+1]),2);}<endl;cout<<"s(x)="<<endl;for(i=0;i<n;i++){cout<<"s"<<i+1<<"(x)="<<ss[0][i]<<"x^3";cout.setf(ios::showpos);//强迫显示正负号cout<<resetiosflags(ios::showpos);//除去正负号格式cout<<"x<-["<<x[i]<<","<<x[i+1]<<"]"<<endl;}loop:cout<<"请输入x属于"<<"["<<x[0]<<","<<x[n]<<"]"<<",并在x上插值:"<<endl;cin>>xx;////////////////////////////////////////////////////////////////////////////////注意输入这个数据时不能是字母if({[0]||[n])flag=0;//xx不在定义域内}for(i=1;i<n+1;i++){if(xx<=x[i]){flag=0;//xx不在定义域内}for(i=1;i<n+1;i++){if(xx<=x[i]){tap=i;break;}}if(flag==1){tap<<"个方程:"<<endl;for(i=0;i<4;i++){s+=ss[i][tap-1]*pow(xx,3-i);//ss[4][n]}s=0;flag=0;}y,否则输入任意键结束:"<<endl;cin>>ans;//字母或数字都可以if(ans==121||ans==89){gotoloop;}}3线性分段插值代码实现/*拉格朗日和牛顿插值算法实现*/#include<stdlib.h>#include<iostream>usingnamespacestd;typedefstrUCtdata{floatx;floaty;x和函数值y的结构Datad[20];//最多二十组数据floatf(ints,intt)//牛顿插值法,用以返回插商{if(t==s+1)return(d[t].y-d[s].y)/(d[t].x-d[s].x);else{if(t==s+1)return(d[t].y-d[s].y)/(d[t].x-d[s].x);elsereturn(f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);}floatNewton(floatx,intcount){intn;while(1){n值(即n次插值):";//获得插值次数cin>>n;if(n<=count-1count-次break;elsesystem("cls");}t,y,yt。floatt=1.0;floaty=d[0].y;floatyt=0.0;//计算y值for(intj=1;j<=n;j++){t=(x-d[j-1].x)*t;yt=f(0,j)*t;y=y+yt;}returny;}floatlagrange(floatx,intcount){floaty=0.0;for(intk=0;k<count;k++)//这儿默认为count-次插值{floatp=1.0;//初始化pfor(intj=0;j<count;j++){//计算p的值p=p*(x-d[j].x)/(d[k].x-d[j].x);}y=y+p*d[k].y;//求和}returny;//返回y的值}voidmain(){floatx,y;}y=y+p*d[k].y;//求和}returny;//返回y的值}voidmain(){floatx,y;while(1){x[i],y[i]的组数,不得超过组:";//要求用户输入数据组数cin>>count;if(count<=20)system("cls");}//获得各组数据for(inti=0;i<count;i++){i+1<<"组x的值:";cin>>d[i].x;i+1<<"组y的值:";cin>>d[i].y;system("cls");}x的值:";//获得变量x的值cin>>x;while(1){intchoice=3;cout<<"请您选择使用哪种插值法计算:"<<endl;(0):"<<endl;(2):Newton"<<endl;cout<<"输入你的选择:";if(choice==2){}if(choice==1){cout<<"你选择了拉格朗日插值计算方法,其结果为:";y=lagrange(x,count);break;//调用相应的处理函数}break;system("cls");cout<<"输入错误!!!!"<<endl;}cout<<x<<" ,"<<y<<endl;//输出最终结果}/*if(choice==1){cout<<"你选择了拉格朗日插值计算方法,其结果为:";y=lagrange(x,count);break;//调用相应的处理函数}break;system("cls");cout<<"输入错误!!!!"<<endl;}cout<<x<<" ,"<<y<<endl;//输出最终结果}/*牛顿插值算法实现*//*程序测试:输入:x=6插值节点组数4021-12433176*/#include<iostream>usingnamespacestd;intmain(){g[100],a[100],y[100],Newton;doublex;intk,i,j,n;doublet=1.0;x的值:"<<endl;cin>>x;<endl;cin>>n;cout<<"请输入插值节点序列(输出格式:x[1]y[1]x[2]y[2] )"<<endl;for(i=0;i<n;i{cin>>a[i]>>y[i];g[i]=y[i];}for(k=1;k<=n;kfor(j=n;j>=k;jg[j]=(g[j]-g[j-1])/(a[j]-a[j-k]);//for(I=1;I<=N;I++)//for(J=1;J<=I;J++)//Q[I][J]=(Q[I][J-1]-Q[I-1][J-1])/(X[I]-X[I-J]);Newton=g[0];for(i=1;i<n;i{t=t*(x-a[i-1]);{cin>>a[i]>>y[i];g[i]=y[i];}for(k=1;k<=n;kfor(j=n;j>=k;jg[j]=(g[j]-g[j-1])/(a[j]-a[j-k]);//for(I=1;I<=N;I++)//for(J=1;J<=I;J++)//Q[I][J]=(Q[I][J-1]-Q[I-1][J-1])/(X[I]-X[I-J]);Newton=g[0];for(i=1;i<n;i{t=t*(x-a[i-1]);}Newton<<endl;return0;}3.46.3】水供应问题(1991A)一.问题的提出与背景某些州的用水管理机构需估计公众的用水速度(:G/h)和每天总用水量。许多供水由于没有测量流入或流出流量的设备,而只能测量中的水位(误差不超过5%)。当水位低于最低水位L时,水泵开始工作将水灌入 因此,在水泵工作时无法立即将中的水位和水量1~2次,每次约两小时。试估计在任一时刻(包括水泵灌水期间)t流出的流量f(t,并估计一天的总用水量。容积G(加仑,1G=3.785L)。2】,35.5E时,水泵停止工作。某6.4。6.4某某一天的真实用水数据二.问题分析与建立模型假设1.影响流量的惟一因素是该区公众对水的普通要求,表6.4中数据反映该镇在通常情况下一天的用水量(不包括任何非常情况,水位高度、大气情况、温度变化等物理因素对水的流速均无影响)。2水泵的灌水速度为常数。3中中流出水的最大流速小于水泵的灌水速度(不让中的水用尽)。公众对水的消耗量以全天的活动为基础,可以认为每天的用水量分布均相似。的水流速度可用光滑曲线来近似。V-水的容积Vi-时刻ti(h)水的容积f(t-流出的水的流速(二.问题分析与建立模型假设1.影响流量的惟一因素是该区公众对水的普通要求,表6.4中数据反映该镇在通常情况下一天的用水量(不包括任何非常情况,水位高度、大气情况、温度变化等物理因素对水的流速均无影响)。2水泵的灌水速度为常数。3中中流出水的最大流速小于水泵的灌水速度(不让中的水用尽)。公众对水的消耗量以全天的活动为基础,可以认为每天的用水量分布均相似。的水流速度可用光滑曲线来近似。V-水的容积Vi-时刻ti(h)水的容积f(t-流出的水的流速(G/h)p-水泵的灌水速度(G/h)6.4中数据的变换为:时间:h水量:Vr2h,6.5:103G6.5变换结果时间/h水量(103G) 时间/h 水量(103G)00.9211111.843062.949723.871394.97806606.098 12.9544 639.505593.69 13.8758 622.324583 14.9822 604.571571.546 15.9039 589.299562.574 16.8261 574.982552.074 17.9317 558.756时间/s水位/102E 时间/s 水位/102E03316663510619139371792121240252022854332284359323933239435433183175 46636 33503110 49953 32603054 53936 31672994 57254 30872947 60574 30122892 64554 29272850 68535 28422795 71854 27672752 75021 26972697 79254 水泵工作水泵工作 82649 水泵工作水泵工作 85968 34753550 89953 33973445 93270 3340ti1ti为求函数f(t,先求相邻时间区间的中点ti2vi1viti1ti为求函数f(t,先求相邻时间区间的中点ti2vi1vi及在时间区间内中流出的水的平均速度vit ti1 i6.66.6平均水流量表三.计算过程tt0={0,3316,6635,10619,13937,17921,21240,25202,28543,32284,35932,39332,39435,43318,46636,49953,53936,57254,60574,64554,68535,71854,75021,79254,82649,85968,89953,93270};MatrixForm[%];vv0={3175,3110,3054,2994,2947,2892,2850,2795,2752,2697,0,0,3550,3445,3350,3260,3167,3087,3012,2927,2842,2767,2697,0,0,3475,3397,3340};MatrixForm[%]ti平均水流量(G/h t 平均水流量(G/h)) i0.4605551.382092.396393.410554.424735.439036.453197.46758.448199.4744410.453410.939911.493512.493613470.7 13.4151 18646.611595. 14.429 16045.710350.1 15.4431 16569.49734.5 16.365 15524.89487.92 17.3789 14676.28695.79 18.4846 14674.49490.32 19.4984 15529.98900.26 20.3993 15188.710104.2 21.4271 无数据无数据 22.4866 无数据无数据 23.419 无数据无数据 24.4334 13452.18584.3 25.4476 11809.219606397.928618.967789.9811110.925610.954212.0328544.057 19.0375 542.529533.557 19.9594 528.212525.349 20.8392 514.849514.849 22.015 水泵工作水泵工作 22.9581 水泵工作水泵工作 23.88 663.367677.685 24.9869 648.477657.64 25.9083 637.596MatrixForm[%];MatrixForm[%];LL2=Table[{tt2[[k]],vv2[[k]]},{k,1,27}];g1=ListPlot[LL2,Prolog->AbsolutePointSize[10]];tv的散点图*/ft=Fit[LL2,Table[t^k,{k,0,8}],t]g2=Plot[ft,{t,0,26}]Show[g1,g2]/MatrixForm[%];MatrixForm[%];LL2=Table[{tt2[[k]],vv2[[k]]},{k,1,27}];g1=ListPlot[LL2,Prolog->AbsolutePointSize[10]];tv的散点图*/ft=Fit[LL2,Table[t^k,{k,0,8}],t]g2=Plot[ft,{t,0,26}]Show[g1,g2]/*求出拟合曲线并观察拟合效果*/Integrate[ft,{t,0.460556,24.460556}]//N /*一天内用水总量近似等于*/tv6.1。6.1tv的散点图求出拟合曲线并观察拟合效果14217.2-1881.35t-144.448t2+217.299 0.379256t3-t6+0.0109854t7-0.000123258t86.2拟合曲线并观察拟合效果由图可见,将t10.460556小时和t224.460556小入f(t得f(t1)13339,f(t2)f(t1)13339,f(t2)10933.3f(t2)f(t1)2395.3一天内用水总量近似等于24.460556Qf(t)dt=2750060.460556若按常规每四.结果分析100000G/h2780人。函数逼近是数学中的经典课题,更是数值分析中最重要的课题之一,它与数学中的其它分支有十分密切的,是计算数学的基础。二、《函数插值》方法用哪好?1.《函数插值》方法在我所学专业(计算机科学与技术专业)的应用2.《函数插值》方法在我了解的其他领域的应用一、样条插值用于字体的设计二、辛克函数在图像缩放器中的应用CT六图像插值技术的研究及在医学体数据场可视化中的应用九三次样条函数插值解决了水库调度和风洞实验中的一些实际问题针对计算机生成图像和拼接图像 ,提出一种基于网函数插值法的数字图像盲检测算法.该算法首先利用Coons型分形曲面片对待检测图像进行 .然后计算待检测图像和 图像之间的差异,并提取待检测图像、 图像及其差值的统计特征.最后,根据这些特征利用支持向量机判定待检测图像是否为自然图像.实验结果表明:与基于高阶统计特征

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论