数值逼近课程设计报告.docx
- 文档编号:15506482
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:14
- 大小:186.09KB
数值逼近课程设计报告.docx
《数值逼近课程设计报告.docx》由会员分享,可在线阅读,更多相关《数值逼近课程设计报告.docx(14页珍藏版)》请在冰点文库上搜索。
数值逼近课程设计报告
课程设计报告
课程名称数值逼近
专业信息与计算科学
班级计算092
姓名杜青
学号50
指导教师秦新强、胡钢
日期2011-07-01
理学院应用数学系
数值积分及其应用
报告1
一、目的意义
(1)进一步熟悉掌握复化梯形公式。
(2)进一步掌握熟悉复化抛物线公式。
(3)学会比较复化梯形公式和复化抛物线公式如何达到所要求的精度。
二、内容要求
积分计算问题:
分别用复化梯形和复化Simpsom求积公式计算积分
,并比较计算量(精度为10-8)。
三、问题解决的方法与算法
方法:
利用复化梯形和复化抛物线积分公式。
算法:
输入:
端点a、b以及要计算的积分公式f(x);
输出:
积分f(x)在指定区间上的近似值以及当其达到所要求的精度时要做的等分数n的值。
Step1:
编写复化梯形公式程序。
Step2:
通过所要达到的精度作为条件,算出要做的等分数以及对应的近视值。
Setp3:
编写复化抛物线积分公式程序。
Setp4:
通过所要达到的精度作为条件,算出要做的等分数以及对应的近视值。
Setp5:
然后比较复化梯形和复化抛物线的所需等分数,比较谁的精度比较高。
四、计算程序
1.复化梯形
#include<>
#include<>
doublef(doublex)
{
doubles;
s=13*(x-x*x)*exp*x);
returns;
}
voidmain()
{
intn,i;
doubleh,m,y,a,b,t[3000];
printf("请输入端点的值a,b\n");
scanf("%lf",&a);
scanf("%lf",&b);
for(n=1;;n++)
{
h=(b-a)/n;
m=(f(a)+f(b))/2;
for(i=1;i { m+=f(a+i*h); } t[n]=m*h; h=(b-a)/(n+1); m=(f(a)+f(b))/2; for(i=1;i { m+=f(a+i*h); } t[n+1]=m*h; if(fabs(t[n+1]-t[n]) } printf("求得结果为n=%d",n); printf("求得结果为: t[n+1]=%10.8f\n",t[n+1]); } 2.复化抛物线 #include<> #include<> doublef(doublex) { doubles; s=13*(x-x*x)*exp*x); returns; } voidmain() { inti,n; doubleh,m,p,q,x,s,a,b,t[1000]; printf("请输入端点的值a,b\n"); scanf("%lf",&a); scanf("%lf",&b); for(n=1;;n++) {h=(b-a)/(2*n); m=f(a)+f(b); p=0; q=0; for(i=1;i<2*n;i++) {x=a+i*h; if(i%2==0) q=q+f(x); else p=p+f(x); } t[n]=h*(m+2*q+4*p)/3; h=(b-a)/(2*(n+1)); m=f(a)+f(b); p=0; q=0; for(i=1;i<2*(n+1);i++) {x=a+i*h; if(i%2==0) q=q+f(x); else p=p+f(x); } t[n+1]=h*(m+2*q+4*p)/3; if(fabs(t[n+1]-t[n]) } printf("求得结果为: n=%d\n",n); printf("求得结果为: %10.8f\n",t[n+1]); } 五、计算结果与分析 1.复化梯形的运行结果: 2.复化抛物线的运行结果: 分析与评价: 通过对复化梯形的运行结果和复化抛物线的运行结果的分析得到,当其所要求的精度相同时,复化抛物线的的等分数明显比复化梯形的等分数少,因此可以得到复化抛物线的精度比复化梯形的精度高。 六、参考文献 [1]谭浩强.C语言程序设计[M].北京: 清华大学出版社,2005. [2]秦新强.数值逼近,西安: 西安理工大学印刷厂,2010. 一、目的意义 (1)掌握分段线性插值多项式的算法实现。 (2)学会分析误差和精度,熟练运用各类编程的语句。 (3)进一步提高用数值算法解决实际问题的能力。 二、内容要求 机械设计问题: 万能拉拨机中有一个圆柱形凸轮(见图1),其底圆半径R=30cm,凸轮的上端面不在同一平面上,要根据从动杆位移变化的需要进行设计制造。 将底圆周长36等分为xi(i=0,1,…,36),每一圆弧段长为h=52.36mm,对应于每一分点的柱高为yi(i=0,1,…,36)。 为方便,将圆柱展开为平面,柱面的的顶端成为图2所示的平面曲线,并已知该曲线上的37个点的坐标(表1)。 yC A B yiyi x0Oxix17x36x 图1凸轮模型图2展开曲线 表1: 测量数据表 xi x0 x1 x2 x3 x4 x5 x6 x7 x8 yi 525 492 451 xi X0 x10 x11 x12 x13 x14 x15 x16 x17-x36 yi x0=0,x36=1884.96mm,h=52.36mm。 是直线段,AB是曲线段,为了数控加工,需要计算出圆周上任一点处的柱高,试构造算法、设计程序、编程计算。 三.问题解决的方法和算法 方法: 利用分段线性插值和线性插值。 算法: Step1: 输入题目所给的数据(x[i],y[i])。 Step2: 编写曲线段时要用的分段线性插值的程序。 Step3: 编写直线端时要用的线性插值的程序。 Step4: 任意输入一个插值点。 Step5: 通过判断条件计算插值点所对应的函数值。 四.程序设计 #include<> #include<> #defineN17 voidmain() {inti,n; doubleX,Y; doublem1,m2,m3,m4; doublex[N+1]; doubley[N+1]={,,525,,,492,451,,,,,,,,,,,}; doubleh=; for(i=0;i { x[i]=i*h; printf("x[%d]=%lf\n",i,x[i]); } printf("请输入要插入的值X="); scanf("%lf",&X); if(X>=0&&X<= { for(i=0;i { if(X>=x[i]&&X { m1=x[i]; m2=x[i+1]; m3=y[i]; m4=y[i+1]; Y=; Y=m3*(X-m2)/(m1-m2)+m4*(X-m1)/(m2-m1)+Y; } elseif(X=x[i]) Y=y[i]; else Y=y[i+1]; } } elseif(X>=&&X<= Y= else printf("输入的插入点不在范围内,请重新输入\n"); printf("Y=%lf\n",Y); } 五.对计算结果的分析和评价 此运行结果为第一种情况,当插入点的值在曲线范围内所对应的x0~x17。 此运行结果为第二种情况,当插入点的值在直线范围内所对应的x18~x36。 此运行结果为第三种情况,当插入点的值不在题目所给的范围内时。 分析与评价: 运用数值算法解决实际问题时,要注意各种误差。 该题目运用的是分段线性插值和线性插值, 虽然存在误差,但是对所要求的结果的影响不大,所以本程序的结果是比较准确的。 六.参考文献 [1]谭浩强.C语言程序设计[M].北京: 清华大学出版社,2005. 报告3 综合应用问题 [2]秦新强.数值逼近,西安: 西安理工大学印刷厂,2010. 一、目的意义 (1)掌握最小二乘法的基本算法。 (2)通过最小二乘法可以拟合多次多项式的算法。 (3)熟练运用编程所要用的各种语句,该算法主要学会矩阵的乘法以及如何解方程组的程序的实现。 二、内容要求 6.多项式拟合问题: 考虑将[0,1]30等分节点,用多项式y=1+x+L+x5生成数据,再分别用多项式拟合求其3次、5次、10次、15次插值多项式,并分析误差产生原因。 三.算法和方法 方法: 最小二乘法。 算法: Step1: 计算和输入题目所给的数据对(x[i],y[i])。 Step2: 输入系数矩阵和系数矩阵的转置,两个矩阵相乘得到新矩阵。 Step3: 系数矩阵的转置与函数值矩阵相乘,得到新矩阵。 Step4: 得到所要求的方程组解方程组。 Step5: 得到多项式的各项系数。 即可以写出所要求的拟合多项式。 四.程序设计。 #include<> #include<> #include<> #include<> #defineN7 C语言程序设计[M].北京: 清华大学出版社,2005. [2]秦新强.数值逼近,西安: 西安理工大学印刷厂,2010.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 逼近 课程设计 报告