毕业论文初稿-张三.docx_第1页
毕业论文初稿-张三.docx_第2页
毕业论文初稿-张三.docx_第3页
毕业论文初稿-张三.docx_第4页
毕业论文初稿-张三.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

赣南师范学院2012届学士学位论文 存档编号 赣南师范学院学士学位论文线性插值在金融中的应用教学学院 数学与计算机科学学院 届 别 2012届 专 业 信息与计算科学 学 号 070704003 姓 名 张三 指导教师 潘坚 完成日期 2012年2月20日 目录内容摘要3关 键 词31. 绪论 41.1课题研究的墓地和意义41.2线性插值方法介绍4 1.3插值方法的提出42. 三种插值方法介绍62.1 lagrange(拉格朗日)插值62.2 newton(牛顿)插值7 2.3三次样条插值83计算代码3.1 代码1103.2 代码2113.3 代码3134. 实例分析4.1 例114结束语14参考文献14 摘要20世纪,全世界的经济迅速的发展和不断创新而逐渐成为一门很有生命力的学科-金融数学。尤其是在20世纪后期的几十年中它越来越多地表现出与数学计算方法的交融:一方面运用恰当的数学方法分析和解决金融问题;另一方面,金融中不断涌现的现实问题也向相关的数学和统计学提出了理论上有价值的研究方向。而在这些计算方法中,线性插值则表现尤为突出,如利率计算等。 在众多的插值方法中,利用不同的插值函数,逼近的效果不同,则导致的精确度也不同,然而不同的方法的优劣针对不同的情况又不同。本设计主要挑选众多插值方法中比较有代表性的几种方法(拉格朗日多项式插值、牛顿插值及三次样条插值)在处理问题时的应用比较分析。对三种插值方法在利率的计算方面的精度进行比较分析,对于利率的精确度有重要的意义,因此具有重要的理论意义和现实意义。本课题的研究内容包括:1 分别介绍三种插值方法。23 针对同一事件用不同方法处理。45 利用c语言编程对处理结果进行计算67 分析对比上诉三种方法在同意事件的应用中的结果。关键词: 插值,节点 ,边界第一章 绪论1. 关于线性插值1.1 课题研究目的和意义 在金融的有关计算中,我们总是要用到数学中的计算方法,插值方法作为其中的一种,应用也是非常的普遍,而针对不同的计算时,不同的计算方法得到的结果却不尽相同,这也就必然存在一个最优的问题,本课题将针对这些方法在不同情况下应用的最优问题进行分析,为线性插值的应用者提供参考。 1.2 线性插值方法介绍 假如通过实验或者测量,获得y=f(x)在区间a,b上的一组互异的点上的函数值(i=0,1,n)。为计算f(x)在a,b上的其他点上的函数值;或者为确定这一组数据反映的变量之间的函数关系(如当(f(x)的函数关系以表格形式给出时),我们可以寻求一个简单的函数p(x),使当满足 p()= (i=0,1,n) (1.1)并用p(x)近似代替f(x). 上诉问题则称之为插值问题,按条件(1.1)求函数f(x)的近似表达式的方法称为插值法,称条件(1.1)为插值条件。1.3 插值方法的提出例1 已知现在投入1000元,在第三年底投入2000元,在第十年低的全部收入为5000元,及孙半年换算名利率。解 设半年换算名利率为,令j=,则价值方程为 1000+2000=5000 这个方程没有分析表达式的解,必须考虑近似解,若定义 f(j)= 1000+2000-5000 则近似解问题变成求j满足f(j)=0 首先,对=0.300和=0.350(这两个初值的选取并没有特别的规定,只要保证f()与f()的符号不同即可)分别有 f()=f(0.0300)=1000+2000-5000 =-168.7100 f()=f(0.0350)=1000+2000-5000 =227.1800 于是由线性插值公式有 =-=0.0300+0.0050*168.7100/(227.1700+168.7100) =0.0321 又对=0.0321和=0.0322分别有 f()=f(0.0321)=-3.6930, f()=f(0.0322)=1.7590, 同样,由线性插值公式求得 =0.03218; 再对=0.03218和=0.03217分别有 f()=f(0.03218)=0.18346 f()=f(0.03217)=-0.060420 进而求得 =0.032178. 当然这个计算过程还可以继续下去,但因f(0.032178)=0.025918,f(0.032177)=-0.052851都与0很接近,故这里取 j0.032178. 所以,所求的半年换算名利率为=2j=0.064356.以上就是一个利用线性插值方法求名利率的简单应用。从该例子可以看出,线性插值在逼近效果上是很有效的。第二章三种插值方法的介绍2.1 lagrange(拉格朗日)插值 简介:拉格朗日插值法是以法国十八世纪数学家约瑟夫路易斯拉格朗日命名的一种多项式插值方法。拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。拉格朗日插值法最早被英国数学家爱德华华林于1779年发现,不久后(1783年)由莱昂哈德欧拉再次发现。1795年,拉格朗日在其著作师范学校数学基础教程中发表了这个插值方法,从此他的名字就和这个方法联系在一起。定义:对某个多项式函数,已知有给定的k+1个取值点:(,)(,)其中对应着自变量的位置,而对应着函数在这个位置的取值。假设任意两个不同的都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:l(x) : =其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:= (j= 0,1,),拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。例:优缺点:拉格朗日插值法的公式结构整齐紧凑,在理论分析中十分方便,然而在计算中,当插值点增加或减少一个时,所对应的基本多项式就需要全部重新计算,于是整个公式都会变化,非常繁琐。这时可以用重心拉格朗日插值法或牛顿插值法来代替。此外,当插值点比较多的时候,拉格朗日插值多项式的次数可能会很高,因此具有数值不稳定的特点,也就是说尽管在已知的几个点取到给定的数值,但在附近却会和“实际上”的值之间有很大的偏差(如右图)。这类现象也被称为龙格现象,解决的办法是分段用较低次数的插值多项式。2.2 newton(牛顿)插值简介:插值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化, 这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。定义:设xa,b,x(i=0,1,n) 视x为一个节点,由一阶方差定义,f(x)可表示为 f(x)=f()=fx,(x-) (x) 并且由 fx, = 得 fx, = fx, + fx,(x-) (k=0,1,n) 利用上述两式依次展开可得: f(x)=f()+ 即 f(x)= 其中 = f()+ = 因为=0 对于i=0,1,n成立,所以可求得 =f() (i=0,1,n) 即满足插值条件,称为f(x)的n次newton插值多项式,并称为的插值余项优缺点:2.3 三次样条插值简介:在数值分析这个数学分支中,样条插值是使用一种名为样条的特殊分段多项式进行插值的形式。由于样条插值可以使用低阶多项式样条实现较小的插值误差,这样就避免了使用高阶多项式所出现的龙格现象,所以样条插值得到了流行。定义:设给定函数f(x)在区间a,b上的节点: 及节点上的函数值 (i=0,1,,n)求f(x)的三次样条插值函数s(x),使其满足 s()= (i=0,1,,n)根据上式,s(x)是a,b上的分段三次插值多项式,即 其中,应是子区间上的两点三次插值多项式,并且 ( j = k, k+1; k= 1,1,n-1) 因为s(x),故有 (p=0,1,2;k=1,2, ,n-1) (p表示导数阶数)此外实际问题对三次样条插值函数在端点处的状态还有要求,级所谓满足边界条件,通常的边界条件有一下三类: : ,为给定的值,当=0时,s(x)在端点处的斜率为零,此时s(x)在端点呈水平状态。 当=0时,样条函数的两端点不受力,呈自然状态,故称之为自然边界条件。 第三类边界条件是周期性条件,设f(x)是周期函数,不妨设以-为一个周期,这时s(x)也应是以-为周期的周期函数,于是s(x)在端点处满足条件 (p=0,1,2). 由参考资料可查到如下基本方程组: 设 = 则 (k=1,2,n-1) 其中 = ,= = 3(+) 在三种类型的限制条件下,计算公式分别为: = = =3计算代码介于计算公式的复杂度,本文讲用c编程进行计算。三种计算方法的程序代码分别为 #include#include#includefloatlagrange(float*x,float*y,floatxx,intn)/*拉格朗日插值算法*/inti,j;float*a,yy=0.0;/*a作为临时变量,记录拉格朗日插值多项式*/a=(float*)malloc(n*sizeof(float);for(i=0;i=n-1;i+)ai=yi;for(j=0;j=20)printf(error!thevalueofnmustin(0,20).);getch();return1;if(n=0)printf(error!thevalueofnmustin(0,20).);getch();return1;for(i=0;i=n-1;i+)printf(x%d:,i);scanf(%f,&xi);printf(n);for(i=0;i=n-1;i+)printf(y%d:,i);scanf(%f,&yi);printf(n);printf(inputxx:);scanf(%f,&xx);yy=lagrange(x,y,xx,n);printf(x=%f,y=%fn,xx,yy);getch(); #include#include#includevoiddifference(float*x,float*y,intn)float*f;intk,i;f=(float*)malloc(n*sizeof(float);for(k=1;k=n;k+)f0=yk;for(i=0;i=20)printf(error!thevalueofnmustin(0,20).);getch();return1;if(n=0)printf(error!thevalueofnmustin(0,20).);getch();return1;for(i=0;i=n-1;i+)printf(x%d:,i);scanf(%f,&xi);printf(n);for(i=0;i=0;i-)yy=yy*(xx-xi)+yi;printf(newtoninter(%f)=%f,xx,yy);getch(); #includeusing namespace std;#include#define max_n 20typedef struct tagpoint double x; double y;point;int main() int n; int i,k; point pointsmax_n+1; double hmax_n+1,bmax_n+1,cmax_n+1,dmax_n+1,mmax_n+1; double umax_n+1,vmax_n+1,ymax_n+1; double x,p,q,s; coutinput n value:n; if (nmax_n) coutthe input n is larger than max_n,please redefine the max_nendl; return 1; if(n=0) cout please input a number between 1 andmax_nendl; return 1; coutnow input the (x_i,y_i),i=0.nendl; for(i=0;ipointsi.xpointsi.y; coutm0; coutmn; coutx; if(xpointsn.x|xpoints0.x) coutplease input a numbr between points0.xandpointsn.x endl; return 1; h0=points1.x-points0.x; for(i=1;in;i+) hi=pointsi+1.x-pointsi.x; bi=hi/(hi+hi-1); ci=1-bi; di=6*(pointsi+1.y-pointsi.y)/hi- (pointsi.y-pointsi-1.y)/hi-1)/(hi+hi-1); d1-=c1*m0; dn-1-=bn-1*mn; bn-1=0;c1=0;v0=0; for (i=1;in;i+) ui=2-ci*vi-1; vi=bi/ui; yi=(di-ci*yi-1)

温馨提示

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

评论

0/150

提交评论