《数值逼近》课程设计.doc

上传人:仙人指路1688 文档编号:4194744 上传时间:2023-04-09 格式:DOC 页数:12 大小:386KB
返回 下载 相关 举报
《数值逼近》课程设计.doc_第1页
第1页 / 共12页
《数值逼近》课程设计.doc_第2页
第2页 / 共12页
《数值逼近》课程设计.doc_第3页
第3页 / 共12页
《数值逼近》课程设计.doc_第4页
第4页 / 共12页
《数值逼近》课程设计.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《《数值逼近》课程设计.doc》由会员分享,可在线阅读,更多相关《《数值逼近》课程设计.doc(12页珍藏版)》请在三一办公上搜索。

1、课程设计报告 理学院应用数学系数值积分及其应用报告1一、目的意义 (1) 进一步掌握复化梯形积分公式,提高运用能力。 (2) 进一步掌握复化抛物线积分公式,提高运用能力。 (3) 进一步掌握c语言,提高编程能力。二、内容要求 积分计算问题:分别用复化梯形和复化Simpson求积公式计算积分,并比较计算量(精度为10-8)。三、问题解决的方法与算法 3.1解决方法: 利用复化梯形和复化Simpsom积分公式。 (1)根据两个方程式的误差估计式,求出各自满足精度的等分份数n。(2)带入所编写的c语言程序,检验并计算出结果。 3.2算法设计:(1) 输入所求的等分数n。(2) 调用复化积分公式,算出

2、n+1点和n点的积分估计数值。(3) 用n+1点和n点的数值检验,比较数值是否达到精度要求。(4) 若达不到精度要求,输出提示,结束程序。(5) 若达到精度要求,输出积分近似结果,程序结束。四、 计算程序4.1复化梯形积分程序源代码:#include#include#define f(x)(13*(x)-(x)*(x)*exp(-1.5*(x)#define epsilon 0.00000001double Tixing(double aa,double bb,int n)int i;double fz;double h=(bb-aa)/n;fz=(f(aa)+f(bb)/2;for(i=1;

3、i0.00000001)printf(达不到精度要求,请检查等分值是否求解正确!n);else printf(用复化梯形积分方法所计算的积分的数值为:%.8lfn,T1);return 0;4.2复化Simpson积分程序源代码:#include#include#define f(x)(13*(x)-(x)*(x)*exp(-1.5*(x)#define epsilon 0.00000001double Simp(double aa,double bb,int n)int i;double S_n;double h=(bb-aa)/(2*n);double fz,fm,fk;fz=f(aa)+

4、f(bb);fm=0;fk=0; for(i=1;in+1;i+)fm+=f(aa+(2*i-1)*h);for(i=1;i0.00000001)printf(达不到精度要求,请检查等分值是否求解正确!n);else printf(用复化Simpson积分方法所计算的积分的数值为:%.8lfn,T1);五、计算结果与分析 5.1复化梯形积分计算结果与分析:利用复化梯形积分的误差估计式,求出的值,带入公式计算,是满足精度要求的。5.2复化Simpson积分计算结果与分析:这里同样利用复化Simpson的误差估计式,求出n的值,带入公式计算,求出数值。 比较两种方法,可见满足同样精度的积分算式,复

5、化Simpson比复化梯形要求的等分数小得多。六、参考文献1 谭浩强. C语言程序设计M. 北京:清华大学出版社,2007.2 秦新强. 数值逼近M. 西安:西安理工大学印刷厂,2011.机械设计问题报告2一、目的意义 (1)利用有限个离散点构造n次Lagrange插值计算式来解决实际问题。 (2)掌握利用分段线性插值计算式来解决实际问题。 (3)进一步提高c语言编程能力,提高实际问题分析能力。二、内容要求 机械设计问题:万能拉拨机中有一个圆柱形凸轮(见图1),其底圆半径R=30cm,凸轮的上端面不在同一平面上,要根据从动杆位移变化的需要进行设计制造。将底圆周长36等分为xi (i=0,1,

6、, 36),每一圆弧段长为h=52.36mm,对应于每 一分点的柱高为yi (i=0,1, , 36)。为方便,将圆柱展开为平面,柱面的的顶端成为图2所示的平面曲线,并已知该曲线上的37个点的坐标(表1)。 y C A B yi yi x0 O xi x17 x36 x xi图1 凸轮模型 图2 展开曲线 表1:测量数据表xix0x1x2x3x4x5x6x7x8yi502.75520.96525523.6514.3492451394.6326.5xiX0x10x11x12x13x14x15x16x17- x36yi256.7188.6132.192.268.959.658.262.2480.4

7、5-502.75xi=jh, x0 =0, x36=1884.96mm, h=52.36mm。是直线段,AB是曲线段,为了数控加工,需要计算出圆周上任一点处的柱高,试构造算法、设计程序、编程计算。三、 问题解决的方法与算法 3.1解决方法: (1)利用Excle算出 到 各点的值;表2-3-1 各坐标点对应的数值 x0x1x2x3x4x5x6x7052.36104.72157.08209.44261.8314.16366.52x8x9x10x11x12x13x14x15418.88471.24523.6575.96628.32680.68733.04785.4x16x17x18x19x20x2

8、1x22x23837.76890.12942.48994.841047.21099.561151.921204.28x24x25x26x27x28x29x30x311256.6413091361.361413.721466.081518.441570.81623.16x32x33x34x35x361675.521727.881780.241832.61884.96 (2)对于前17个点和后20个点分别构造Lagrange插值函数和分段线性插值函数。 3.2算法设计: (1)输入要计算的坐标点值。 (2)用if语句进行控制,对坐标值进行判断裁定,选择相应的插值计算式进行。 (3)输出计算的圆柱体

9、高度,结束程序。 四、计算程序#include#includevoid main()double a;printf(*请输入要求的点的坐标值(范围为0到1884.96mm):);scanf(%lf,&a); if(a=0&a=837.76)int i,j,n; double tmp=1,lagrange=0,e; double fm=1,fz=1; double l20; n=16;double x17=0,52.36,104.72,157.08,209.44,261.8,314.16,366.52,418.88,575.96, 628.32,680.68,733.04,785.4,837.7

10、6, y17=502.75,520.96,525,523.6,514.3,492,451,394.6,326.5,256.7, 188.6, 132.1, 92.2,68.9,59.6,58.2,62.24; e=a;for(j=0;j=n;j+) fm=1;fz=1; for(i=0;i=n;i+) if(i!=j) fm*=e-xi;fz*=xj-xi; lj=fm/fz; for(j=0;j837.76)double h=a;double q2=890.12,1884.96,w2=80.45,502.75; double fq=(h-q1)/(q0-q1);double fw=(h-q0

11、)/(q1-q0);double s=w0*fq+w1*fw;printf(n得到圆柱体的高度为:%lf(mm)n,s);五、 计算结果与分析 在程序中任意输入范围内的一点,得到(截图):对于计算的结果,前17个点用了Lagrange插值法,计算出的高度肯定存在一定的误差,但是可以满足数控加工的精度要求。后面的点运用点斜式编程求出计算式,在认为数据没有误差的前提下,求出的圆柱体的高度精确成立。c语言程序运用if结构,来选择输入的坐标值点满足哪个计算式,从而选择正确的计算式,计算出相应的近似结果。六、参考文献1 谭浩强. C语言程序设计M. 北京:清华大学出版社,2007.2 秦新强. 数值逼近

12、M.西安:西安理工大学印刷厂,2011.综合应用问题报告3一、目的意义 (1)掌握三次样条的推导过程,并熟练运用。(2)熟练运用三弯矩算法来构造三次样条插值函数。(3)了解运用Matlab作三次周期样条函数轮廓图。 (4)熟练运用c+编程来解决问题,学会运用追赶法来解方程式,并会正确设计程序。二、 内容要求 三、 问题解决的方法和算法3.1解决方法: (1)根据三弯矩算法,利用周期函数的条件,求解出弯矩向量。 (2)带入三次样条函数计算式,求解出每个小区间上的插值关系式。 (3)利用Matlab,画出三次样条周期函数的近似图。3.2算法设计: (1)运用追赶法,求出弯矩向量。 (2)求出每个小

13、区间上的三次样条函数插值,并输出。 (3)检验,输入一个坐标值,输出两个函数值,程序结束。四、计算程序#include#include#includeusing namespace std;const int MAX = 50;const double x19=100,134,164,180,198,195,186,160,136,100,66,35,15,0,5,17,32,63,100;const double y19=503,525,514.3,451.0,326.5,188.6,92.2,59.6,62.2,102.7,147.1,191.6,236.0,280.5,324.9,369

14、.4,413.8,458.3,503;float hMAX;float cMAX, aMAX, gMAX;float f(int x1, int x2, int x3) float a=(yx3-yx2)/(xx3-xx2); float b=(yx2-yx1)/(xx2-xx1); return (a-b)/(xx3-xx1); void M(int n) /用追赶法求解出弯矩向量M float B18; B0=c0/2; for(int i=1;in;i+) Bi=ci/(2-ai*Bi-1); for(i=1;i=0;i-) gi=gi-Bi*gi+1;void printout(int

15、 n);void main() int n=18, i; for(i=0;in;i+) hi= xi+1-xi;for(i=1;in;i+)gi=6 * f(i-1,i,i+1);g0=(h18/6*g17+(503-458.3)/(100-63)+h1/6*g1-11/17)/(-h1/3-h18/6);gn=g0;for(i=1;in;i+) ai=hi/(hi+hi+1); ci=1-ai; an=hn/(h1+hn);cn=h1/(hn+h1); M(n); coutn输出三次样条插值函数:n; printout( n); double u;coutu; double y1;doubl

16、e y2;int j=0;for(i=0;i=xi&u=xi+1)y1=gi/(6*hi)*(xi+1-u)*(xi+1-u)*(xi+1-u)+gi+1/(6*hi)*(u-xi)*(u-xi)*(u-xi )+(yi-gi*hi*hi/6)/hi*(xi+1-u)+(yi+1-gi+1*hi*hi/6)/hi*(u-xi);for(i=0;in;i+)if(u=xi+1)y2=fabs(gi/(6*hi)*(u-xi+1)*(u-xi+1)*(u-xi+1)+gi+1/(6*hi)*(xi-u)*(xi-u)*(xi-u)+(yi - gi*hi*hi/6)/hi*(u- xi+1)+(y

17、i+1-gi+1*hi*hi/6)/hi*(xi-u);coutx对应的函数值为:endl;couty1=y1endly2=y2endl;void printout(int n) coutsetprecision(4); for(int i=0;in;i+) coutxi,xi+1:0) coutt*(xi+1-x)3; else cout-t*(x-xi+10) cout+t*(x-xi)3; else cout-t*(x-xi0) cout+t*(xi+1-x); else cout-t*(xi+10) cout+t*(x-xi); else cout-t*(x-xi); coutendl; 五、 计算结果与分析利用Matlab作出周期样条的轮廓图:图3-5-1 周期样条函数轮廓图 求出的周期三次样条插值函数为(截图):从程序运算结果截图中可以看出,作者对三次样条函数进行了检验,随便输入一个范围内的坐标值,得到两个函数值,与图3-5-1的函数值大体一致。可见求出的三次样条插值函数计算式近似正确。六、参考文献1 姚全珠. C+面向对象程序设计M. 北京:电子工业出版社,2010.2 秦新强. 数值逼近M. 西安:西安理工大学印刷厂,2011.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号