数值计算课程设计报告

合集下载

数值计算方法实验报告(含所有)

数值计算方法实验报告(含所有)

本科实验报告课程名称:计算机数值方法实验项目:计算机数值方法实验实验地点:专业班级:学号:学生姓名:xxx指导教师:xxx太原理工大学学生实验报告学院名称软件学院专业班级1217班学号201200xxxx 学生姓名xx 实验日期2014.05.21 成绩课程名称数值计算方法实验题目实验一方程求解一、实验目的和要求熟悉使用、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。

选择上述方法中的两种方法求方程:二分法f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5×10-5二、主要设备笔记本 HP ProBook 6470b 一台编译软件:VC++6.0三、实验内容和原理函数f(x)在区间(x,y)上连续,先在区间(x,y)确定a与b,若f(a),f(b)异号,说明在区间(a,b)内存在零点,然后求f[(a+b)/2]。

假设F(a)<0,F(b)>0,a<b,①如果f[(a+b)/2]=0,该点即为零点;②如果f[(a+b)/2]<0,则区间((a+b)/2,b)内存在零点,(a+b)/2≥a;③如果f[(a+b)/2]>0,则区间(a,(a+b)/2)内存在零点,(a+b)/2≤b;返回①重新循环,不断接近零点。

通过每次把f(x)的零点所在区间收缩一半的方法,使区间内的两个端点逐步逼近函数零点,最终求得零点近似值。

四、操作方法与实验步骤1. 二分法:#include<stdio.h>#include<stdlib.h>#include<math.h>int main(){double a=1.0, b=2.0;double x,s;printf(" An\t\tBn\t\tF(Xn)\n");while(1){x=(a+b)/2;s=pow(x,3)+4*x*x-10;if (-0.000005 < s && s < 0.000005){break;}else if(s < 0){a=x;}else if(s > 0){b=x;}printf("%f\t%f\t%f\n",a,b,s);}printf("X的值为:%f\n",x);printf("误差:\t%f\n",s);return 0;}2. 割线法:#include"stdio.h"#include"math.h"int main(){float c,a=1.0,b=2.0;printf("每次得到的X的近似值:\n");while(1){c=b-(b*b*b+4*b*b-10)*(b-a)/(b*b*b+4*b*b-(a*a*a+4*a*a));if(fabs(b-c)<0.5*0.00001)break;b=c;printf("%f\n",b);}printf("X的值为:%f\n",c);}五、实验结果与分析二分法割线法分析:由程序知,使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。

数值分析(计算方法)课程设计实验报告(附程序)

数值分析(计算方法)课程设计实验报告(附程序)

n=4 时,max[L(X)-h(X)]=0.4020;
n=8 时,max[L(X)-h(X)]=0.1708;
n=10 时,max[L(X)-h(X)]=0.1092。
图象分析: 从图象可以看出随着插值节点数的增加出现异常的摆动,中间能较好的接近 原函数,但两边却出现很大的误差。
(3).对定义在(-5,5)上的函数
程序代码 2:
x=[-1:0.2:1]; y=1./(1+25.*x.^2); x0=[-1:0.01:1]; y0=lagrange(x,y,x0); y1=1./(1+25.*x0.^2);
plot(x0,y0,'--r'); hold on; plot(x0,y1,'-b'); x2=abs(y0-y1); max(x2) ; 程序代码3: n=3; for i=1:n x(i)=cos(((2.*i-1).*pi)./(2.*(n+1))); y(i)=1./(1+25.*x(i).*x(i)); end x0=-1:0.01:1; y0=lagrange(x,y,x0); y1=1./(1+25.*x0.^2); plot(x0,y0,'--r') hold on plot(x0,y1,'-b')
以 x1,x2,„,xn+1 为插值节点构造上述各函数的 Lagrange 插值多项式, 比较其 结果。
设计过程: 已知函数 f(x)在 n+1 个点 x0,x1,…,xn 处的函数值为 y0,y1,…,yn 。 求一 n 次多 项式函数 Pn(x),使其满足: Pn(xi)=yi,i=0,1,…,n. 解决此问题的拉格朗日插值多项式公式如下

《数值计算》实验报告

《数值计算》实验报告

《数值计算》实验报告第一部分:简答题(请简要回答以下问题,每小题字数不少于200字)1、Matlab变量命名有什么要求?以下变量名是否合法?对不合法的变量名说明理由。

abcd-2xyz_33chan NaN ABCDefgh2、插值、拟合、回归这三种方法是用来解决什么问题的?面对一组数据,如何选择用什么方法?3、数值积分的主要思想是什么?常用的数值积分公式有哪几个?4、请结合自己的学习,举例说明《数值计算》课程中所学方法在解决实际问题中是如何应用的。

第二部分:基础题(请完成以下问题,要求给出程序语句及计算结果,用截图方式附在各题目下方)1、已知点(1,3.0),(2,3.7),(5,3.9),(6,4.2),(7,5.7),(8,6.6),(10,7.1),(13,6.7), (17,4.5),绘出经过这些点的函数曲线图形,并给出曲线方程。

答:采取三次样条插值法,九个输入数据分成八段,每一段就是一个三次函数。

这八段的函数形式为y = a0 + a1*x + a2*x^2 + a3*x^3,每个分段函数的参数构成下图所示的coefs 矩阵。

2、在我国某海域测得海洋不同深度处的水温如表1所示,求水深为800m和1500m处的温度。

答:采取线性插值法求得800m和1500m处的温度3、求解方程组⎪⎪⎩⎪⎪⎨⎧=-++=--=-++=++56533332821w z y x w y x w z y x z y x ,请至少使用两种方法求解,并对这两种方法的计算结果进行说明。

高斯消元法LU 分解QR分解Jacobi迭代法使用 Jacobi 迭代法无法求出结果,表示迭代的过程中不收敛4、计算积分dx eI x ⎰-=1022,精度为10-6。

被积函数总共调用 13 次,求得积分值为 0.85565、求方程t et t f t5.0)(sin )(1.02-⋅=-在[0.5,1]内的根。

6、求解微分方程0)1(22=+'--''y y y y ,0)0(,1)0(,300='=≤≤y y x ,绘出解函数的图形。

数值计算基础课程设计

数值计算基础课程设计

数值计算基础课程设计一、引言数值计算是常见的计算机应用领域之一,是计算机科学的重要分支之一。

数值计算基础课程是计算机科学专业本科生的必修课程,通过本次课程设计,可以帮助学生深入理解数值计算基础知识,提高数值计算的实际解决问题的能力。

本文主要介绍了数值计算基础课程设计的内容和要求。

希望对有相关实践需求的学生或教师有所帮助。

二、课程设计内容2.1 算法实现本次课程设计要求学生自行设计并实现以下算法:•二分法求函数零点•牛顿迭代法求函数零点•插值多项式法求函数近似值2.2 算法实验学生需要对自行设计实现的算法进行实验验证。

以求x^3 - 3x + 1 = 0在[0, 1]内的根为例,验证二分法求解函数零点的可行性,并与牛顿迭代法作比较。

学生还需要对插值多项式法进行实验。

通过把给定的一组x和对应的y值拟合成一个三次多项式来求出1.5处的近似值,并与函数实际值进行比较。

2.3 实验结果分析学生需要对以上实验的结果进行分析,比较各方法的优劣,讨论其适用范围与局限性,并能够发现其实用或改进的价值。

三、课程设计要求3.1 编码与注释学生需要使用C或C++语言实现以上算法,要求编写规范、清晰、易读的代码,并辅以必要的注释。

注释包括但不限于函数定义、参数说明、代码逻辑、变量含义及功能的描述等。

3.2 结果准确学生需要保证程序正确无误,并输出正确的实验结果。

结果应当包括:•每个算法的具体实现•实验数据的原始样本•实验结果的数据及图表•实验过程中的思路、观察、发现以及分析结果的论述笔记3.3 小组合作学生可以自由选择组队进行课程实践,每个小组最多不超过3人。

学生需要充分发挥小组合作优势,相互学习、相互借鉴、相互协作,完成课程设计。

3.4 前置知识学生需要具备以下前置知识:•熟练掌握C/C++编程语言•具备数值计算的基本概念,如导数、积分、方程求解、矩阵计算等•具备线性代数、微积分基础知识的学习经历。

四、总结数值计算基础课程是计算机科学专业的入门课程之一,其理论和实践均具有重要意义。

数值计算基础实验报告(3篇)

数值计算基础实验报告(3篇)

第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。

二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。

(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。

(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。

(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。

2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。

(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。

(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。

3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。

(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。

数值计算课设

数值计算课设

数值计算课设(最新版)目录1.课程简介2.课程目标3.课程内容4.课程安排5.课程评价正文一、课程简介数值计算课设是一门针对计算机科学与技术专业的课程,主要涉及计算机数值计算方法及其应用。

通过本课程的学习,学生可以掌握数值计算的基本原理和方法,提高解决实际问题的能力。

二、课程目标本课程旨在培养学生掌握数值计算的基本理论、方法和技巧,提高学生在计算机科学与技术领域的实际应用能力。

具体目标包括:1.熟练掌握数值计算的基本概念、原理和方法。

2.掌握常用数值计算算法,如代数方程组解法、插值与逼近、数值积分等。

3.能够运用所学知识解决实际问题,提高编程和算法设计能力。

三、课程内容本课程主要涉及以下内容:1.数值计算的基本概念与原理,如误差、截断、舍入等。

2.常用数值计算算法,如高斯消元法、LU 分解、插值与逼近、数值积分等。

3.数值计算在实际问题中的应用,如线性规划、非线性方程组求解等。

4.数值计算的软件实现,如 MATLAB、Python 等工具的使用。

四、课程安排本课程共计 16 周,每周安排一次课,每次课 2 课时。

课程安排如下:1.第 1 周:课程简介与数值计算基本概念2.第 2 周:代数方程组解法3.第 3 周:插值与逼近4.第 4 周:数值积分5.第 5 周:线性规划6.第 6 周:非线性方程组求解7.第 7 周:课程总结与实践案例分析8.第 8 周至第 15 周:课程实践与作业9.第 16 周:课程总结与考试五、课程评价课程评价采用平时成绩与期末成绩相结合的方式,具体比例为:平时成绩占 60%,期末成绩占 40%。

平时成绩包括课堂表现、作业完成情况等;期末成绩主要依据课程实践成果和考试成绩。

现代数值计算方法课程设计

现代数值计算方法课程设计1. 背景现代数值计算方法是计算机科学中的一门重要课程,它涉及到了计算机科学、数学等多个学科领域,是目前计算机科学领域中的热门研究方向。

现代数值计算方法的主要研究内容包括:数值解法理论、数值算法、计算结果的误差分析、数值计算软件等。

现代数值计算方法的研究对于人类社会的发展具有重要的意义。

它可以用于解决许多重要的科学和工程问题,如大气科学、材料科学、地球物理学、医学等领域的研究。

因此,在高校中开设现代数值计算方法课程是非常必要的。

2. 课程设计简介本次现代数值计算方法课程设计主要涉及两个方面的内容:数值求解和绘图。

具体来说,数值求解的内容包括求解非线性方程、插值、数值微分与积分等;绘图的内容则包括如何使用Matplotlib等常用的绘图工具,绘制各类数学函数的图形,并以此来分析和解释计算结果。

为了完成这个课程设计,我们将使用Python编程语言,并从以下几个方面来探索现代数值计算方法的各个方面:•第一部分:非线性方程求解。

我们将介绍几种常见的求解非线性方程的数值方法,例如二分法、牛顿迭代法、离散牛顿法等,并编写相应的程序来进行数值求解。

•第二部分:插值。

我们将介绍三种主要的插值方法:线性插值、拉格朗日插值和牛顿插值,并编写相应的程序来进行插值计算。

•第三部分:数值微分与积分。

我们将介绍数值微分与积分的基本概念以及数值计算的主要方法,并编写相应的程序来进行数值计算。

•第四部分:绘图。

我们将介绍Matplotlib绘图工具,包括如何绘制常用的数学函数、如何设置坐标轴等,以此来更好地展示数据和计算结果。

3. 课程设计具体步骤第一部分:非线性方程求解1.确定求解的非线性方程,并确定其解的大致范围。

2.学习二分法、牛顿迭代法、离散牛顿法等求解非线性方程的数值方法。

3.编写程序来实现这些数值方法,并使用程序来进行求解。

4.比较不同方法求解的耗时和解的精度。

第二部分:插值1.确定插值数据点,并使用Matplotlib绘图工具进行可视化展示。

现代数值计算课程设计

现代数值计算课程设计介绍现代数值计算是计算数学中的一个分支,旨在利用数值方法解决实际问题。

本课程设计将介绍现代数值计算的基本概念和技术,同时提供实践和经验分享。

目的本次课程设计旨在:1.帮助学生了解现代数值计算的理论和实践。

2.提供实践机会,帮助学生掌握数值计算算法的实现和应用。

3.促进学生交流经验和分享技巧。

设计内容题目提示本次课程设计题目为求解非线性方程组。

数据文件input.txt中给出了一个初始估计解和数值精度要求。

设计要求使用数值方法求解非线性方程组。

实现细节1.数值方法选择:二分法、牛顿法、割线法、迭代法等。

2.要求程序能读入任意精度的数字,并输出结果到文件output.txt中。

3.要求程序进行错误检查,包括但不限于输入格式、函数的连续性、程序自身的稳定性等。

实现要求1.程序要求使用 C++ 或 Python 等语言实现。

2.程序要求结构清晰,注释完整,代码规范。

3.程序要求有清晰的交互界面,并能够输出程序执行过程。

检查标准课程设计设计完成后,将按照以下标准进行评估:1.程序功能是否实现。

2.程序的可读性和可维护性。

3.程序的鲁棒性和错误处理能力。

4.程序的执行时间和占用空间。

参考资料1.《现代数值计算》(第二版),吕同富等编著,北京大学出版社。

2.《数值分析与计算机应用》(第二版),李荀华等编著,高等教育出版社。

3.The Numerical Recipes,W. H. Press 等编著,CambridgeUniversity Press。

以上就是本次课程设计的基本要求和参考资料。

祝学生们设计成功!。

《数值计算方法》课程设计报告-15页精选文档

《数据分析方法》课 程 实 验 报 告1.实验内容(1)掌握回归分析的思想和计算步骤;(2) 编写程序完成回归分析的计算,包括后续的显著性检验、残差分析、Box-Cox 变换等内容。

2. 模型建立与求解(数据结构与算法描述)3.实验数据与实验结果解:根据所建立的模型在MATLAB 中输入程序(程序见附录)得到以下结果: (1)回归方程为:123.45260.49600.0092Y X X ∧=++说明该化妆品的消量和该城市人群收入情况关系不大,轻微影响,与使用该化妆品的人数有关。

2σ的无偏估计:2 4.7403σ= (2)方差分析表如下表: 方差来源自由度平方和 均方 F 值p回归(R ) 2 538452692256795 2.28误差(E ) 12 56.883 4.703 总和(T ) 1453902从分析表中可以看出:F 值远大于p 的值。

所以回归关系显著。

复相关20.9989R =,所以回归效果显著。

解:根据所建立的模型,在MATLAB 中输入程序(程序见附录)得到如下结果: (1)回归方程为:1257.9877 4.70820.3393Y X X ∧=-++在MTLAB 中计算学生化残差(见程序清单二),所得到的学生化残差r 的值由残差可知得到的r 的值在(-1,1)的概率为0.645,在(-1.5,1.5)的概率为0.871,在(-2,2)之间的概率为0.968.而服从正态分布的随机变量取值在(-1,1)之间的概率为0.68,在(-1.5,1.5)之间的概率为0.87,在(-2.2)之间的概率为0.95,所以相差较大,所以残差分析不合理,需要对数据变换。

取λ=0.6进行Box-Cox 变换()ln ,01,0Y Y Y λλλλλ=⎧⎪=⎨-≠⎪⎩ 在MATLAB 中输入程序(见程序代码清单二)取0.6λ=,所以得到r 的值(r 的值见附录二)其值在(-1,1)之间的个数大约为20/31=0.65,大致符合正态分布,所以重新拟合为:0-11.7736β=1 1.1478β=20.0969β=拟合函数为:12-11.7736 1.14780.0969Y X X ∧=++ 通过F 值,R 值可以检验到,回归效果显著(3)某医院为了了解病人对医院工作的满意程度Y 和病人的年龄1X ,病情的严重程度2X 和病人的忧虑程度3X 之间的关系,随机调查了该医院的23位病人,得数据如下表:(1) 拟合线性回归模型0112233Y X X X ββββε=++++,通过残差分析与考察模型及有关误差分布正态性假定的合理性;(2) 若(1)中模型合理,分别在2()()i R p α,()p ii C ,()p iii PRESS 准则下选择最优回归方程,各准则下的选择结果是否一致?(3) 对0.10E D αα==,用逐步回归法选择最优回归方程,其结果和(2)中的数否一致?(4) 对选择的最优回归方程作残差分析,与(1)中的相应结果比较,有何变化? 习题2.6解:(1)回归参数的β的最小二乘估计为:1()T T X X X Y β∧-=。

数值计算方法课程设计(C语言)

数值计算方法课程设计(C语言)数值计算方法课程设计姓名学号成绩课程实际报告实验一:秦九韶算法题目用选列主元高斯消去法解线性方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=-+-=--02 02 0 21 34343232121x x x x x x x x x x算法语言:利用c 语言的知识编写该算法程序算法步骤叙述:秦九昭算法的基思路是v[0]=a[0]*x+a[1] v[i]=v[i-1]*x+a[i+1];利用秦九昭算法计算多项式函数。

程序清单:#include <stdio .h >void main(){float a[5],x,sum;int i;printf("presase input the value of x=");scanf("%f",&x);for (i =5;i >=0;i --){printf("please input the value of a%d=",i);scanf("%f",&a[i]);}sum=a[5];for(i=5;i>=1;i--){sum=sum*x+a[i-1];}printf("f(x)=%f/n",sum); }输出结果计算:实验总结:通过运用C 语言,解决了秦九韶算法手写的复杂。

为以后的雪地打下基础。

实验二:用选列主元高斯消去法解线性方程组题目用选列主元高斯消去法解线性方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=-+-=--02 02 0 21 34343232121x x x x x x x x x x算法步骤叙述第一步消元——在增广矩阵(A,b )第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b )做初等行变换使原方程组的第一列元素除了第一行的全变为0;第二步消元——在增广矩阵(A,b )中第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b )做初等行变换使原方程组的第二列元素除了第一和第二行的全变为0;第三步消元——在增广矩阵(A,b )中第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第三行交换,再对(A,b )做初等行变换使原方程组的第三列第四行元素为0;第四,按x4-x3-x2-x1的顺序回代求解出方程组的解,x[n]=b[n]/a[n][n],x[i]=(b[i]-Σa[i][j]x[j])/a[i][i],i=n-1,…,2,1 程序清单:#include<iostream>#include<math>#define N 4static double A[N][N] = {-3,-1,0,0,-1,2,-1,0,0,-1,2,-1,0,0,-1,2};static double B[N]={1,0,0,0};static double X[N];int i,j,k;void main(){for(k = 0; k < N-1 ;k++){int index = k;for(i = k; i< N ;i++){if(fabs(A[index][k]) < fabs(A[i][k])){index = i;}}double temp;for( i = k ; i < N ;i++ ){temp = A[index][i];A[index][i] = A[k][i];A[k][i] = temp;}temp = B[index];B[index] = B[k];B[k] = temp;for(i = k+1; i<N; i++){double T = A[i][k]/A[k][k];B[i] = B[i] - T * B[k];for ( j = k+1 ; j < N ; j++ ){A[i][j] = A[i][j] - T * A[k][j];}}}X[N-1] = B[N-1]/A[N-1][N-1];for (i = N-2; i >=0 ; i--){double Temp = 0;for (int j = i+1; j<N ;j++)Temp = Temp + A[i][j] * X[j];X[i] = (B[i] - Temp) /A[i][i];}cout << "线性方程组的解(X1,X2,X3......Xn )为:"<<endl;for( i = 0; i < N ;i++){cout << X[i] <<" ";}} 实验总结:通过c++语言的编写过程掌握高斯消元法及选列主元元素的技术,掌握了简单的c++程序编辑语言编写算法程序实验五:二分法与牛顿法题目用二分法和Newton 迭代法求下列方程的正根:要求结果的误差限为6105.0-⨯,05.01)1ln(22=---+-x x x x x1.二分法算法语言:C 语言算法思路:算法思路先给定区间[a,b],要求f(a)与f(b)是异号,保证区间内与x 轴有交点,求x=(a+b)/2,求f(x),检查f(x)与f(a)是否同号,如果是同号,把x 当成新的a ,否则把x 当成新的b ,得到新的区间,重复求a 和b 的中点的值,判断与f(a)是否同号,不断循环下去,直到达到精度为止。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华东交通大学《数值计算》课程设计报告专业班级: 09信息与计算科学(1)班*名:** 20090810010113 组内成员:汪媛、李志鹏、郑福宝设计时间: 2011年12月指导教师:***目录内容提要………………………………………………………………一、课程设计目的、背景、意义以及准备工作……………………(一)目的…………………………………………………………(二)背景…………………………………………………………(三)意义…………………………………………………………(四)准备工作……………………………………………………二、理论分析…………………………………………………………(一)问题分析.……………………………………………………(二)理论依据和求解对策………………………………………三、方法详解…………………………………………………………四、问题结果与精度分析……………………………………………五、心得体会…………………………………………………………六、参考文献…………………………………………………………七、代码附录…………………………………………………………内容提要设某城市男子的身高X~N (170,36)(单位:cm ),应如何选择公共汽车门的高度H 使 男子与车门碰头的机会小于1%。

问题分析:由题设男子身高数据服从平均值为170cm ,方差为6cm 的正态分布,其分布密度函数为2(170)()236x f x ⎡⎤--=⎢⎥⨯⎣⎦按正态分布的分布规律(3σ原则),这个城市的男子身高超过188cm 的人数极少。

故可以对H=188,187,186,…求出概率{}P X H >的值,观察使概率不超过1%的H ,以确定公共汽车门应该取的高度。

概念值的计算实际上是求定积分{}194()()H H P X H f x dx f x dx +∞>=≈⎰⎰(1)选用一种数值求积公式分别计算出H=180、181、…、188时定积分近似值。

(2)根据上面计算的积分值,按题目要求确定公共汽车门的高度取值(答案184cm )。

如果将汽车门的高度取180cm ,是否满足大多数市民的利益?(3)用计算机模拟的方法来检验你的结论,计算机产生10 000个正态随机数(它们服从均值为170,方差为6的正态分布)来模拟这个城市中10 000个男子的身高,然后统计出这10 000人中身高超过180(cm )的男子数量所占的百分比。

一、课程设计目的、背景、意义以及准备工作(一)目的1)学会用数值积分避开求f(x)的原函F(x)的繁琐步骤,并可以有效的控制结果,使其在要求的误差范围之内。

2)在某些求积函数中,用数值积分求解一些原函数F(x)不能用初等函数表示成有限形式。

3)熟练掌握用复化辛普森求解积分。

4)编程实现复化辛普森的递推算法。

5)编程实现复化辛普森积分法(二)背景对于较大积分区间、复杂被积函数、较高精度要求的数值积分问题,需要较多的求积节点。

如果采用高阶插值型求积公式,当被积函数f(x)不是多项式函数时,求积过程可能不稳定,因此这时只能采用复化求积。

而龙贝格求积是对逐次分半梯形公式求积公式加速的一种外推方法,收敛速度较复化求积更快,也是一种实用的数值积分方法。

在一元函数的积分学中,我们已经熟知,若函数f(x)在区间[a, b]上连续且其原?函数为F(x) ,则可用牛顿―莱布尼兹公式来求定积分。

牛顿―莱布尼兹公式虽然在理论上或在解决实际问题中都起了很大的作用,?但它并不能完全解决定积分的计算问题。

因为定积分的计算常常会碰到以下三种情况:(1)被积函数f(x)的原函数F(x)不易找到。

许多很简单的函?数,例x x x ln 1,)sin(等,其原函数都不能用初等函数表示成有限形式。

(2)被积函数f(x)没有具体的解析表达式。

其函数关系由表格或图形表示,无法求出原函数。

(3)尽管f(x)的原函数能表示成有限形式但其表达式相当复杂。

另外,许多实际问题中的被积函数往往是列表函数或其他形式的非连续函数,对这类函数的定积分,也不能用不定积分方法求解。

由于以上原因,数值积分的理论与方法一直是计算数学研究的基本课题。

而在这次的课程设计中,具体的问题就是公共汽车的车门的高度。

(三)意义在现实生活中公交车的车门高度问题是一个非常普遍的问题,如何设计好适当的车门高度,是非常重要,过高或者过低都会产生一些不必要的麻烦。

而本次的数值计算课程设计就是有关这个问题的,通过模拟某城市的身高分布函数,通过一系列的计算,最后得到一个数,有这个数确定公共汽车的车门高度。

在本次课程设计中,我们通过编程求积分的方式简化了计算的难度,通过计算得到几个不同的积分值,然后由符合二项式分布的函数产生的随机数来确定最佳的函数值即车门高度(四)准备工作分析题意,用Matlab 编程实现复化辛普森的积分法,并控制了结果的精度,比较最后的结果与给定的数据的误差,使其在要求的误差范围之内。

最后找到符合条件的数据即可找到最后公共汽车的门的最佳高度。

二、理论分析(一)问题分析由已知的身高的分布函数,可以得知该城市的身高的大概区间,将区间分成8等分,因此通过一种求积分的方法可以计算出在不同区间的函数的近似积分值(H),而由题意的满足概率不超过1%的H,即得解,最后一问中,通过Matlab的随机函数normrnd产生的随机数验证上述结果即可。

(二)理论依据和求解对策复化Simpson求积算法的N-S图:给定f表示被积函数,[a,b]表示积分区间,n表示积分区间被拆分成小区间个数三、方法详解(包括推导、求解、分析、程序框图等)(1)由前面的问题分析可知概率值的计算实际上是求定积分{}194()()H H P X H f x dx f x dx +∞>=≈⎰⎰其中2(170)()236x f x ⎡⎤--=⎢⎥⨯⎣⎦题采用复化的辛普生公式进行求解:11221111001[()4()()][()4()2()()]66n n n n i i i i i i i i h h S f x f x f x f a f x f x f b ---+++====++=+++∑∑∑(1)实际上是求出相应的H 使得对应的概率值满足题意要求即可。

由于 {}194()()H H P X H f x dx f x dx +∞>=≈⎰⎰其中2(170)()236x f x ⎡⎤--=⎢⎥⨯⎣⎦我们从170到194之间选出一个能满足{}0.01P X H >≤的H(3)运用函数normrnd(170,6,10000)便可模拟出这个城市中10 000个男子的身高,然后再计算其中身高大于180cm 的百分比。

四、问题结果与精度分析(代码祥见附录)(一)程序运行及结果1、问题(1)结果如下(e1.m ):P =0.047758637464544 P =0.033344869800652P =0.022718517515272 P =0.015098521327612P =0.009783695738731 P =0.006178017945395P =0.003798722285391 P =0.002271601047586P =0.0013182293178492、问题(2)结果如下(e2.m):1843、问题(3)结果如下(e3.m):模拟数中大于180的数所占比例为:ans = 0.046300000000000(二)身高分布模型图(e4.m)2、精度分析在计算问题(1)和(2)题时运用了复化辛普森公式,由于公式本身就存在一定的局限性,所以在计算概率值时与准确值之间存在一定的误差。

但由于复化辛普生公式有较高的收敛阶,所以误差非常小。

通过问题(3)的模拟可知将高度定于180还是满足大多数人的利益的五、心得体会在这次数值计算课程设计中,我受益很多。

首先在分析问题过程中,不仅要对问题进剖析还要结合一些现实实际情况。

再者,在找出问题后,要解决问题,通过查找相关资料书籍,找到解决方法的过程中,我也学到了其他方面的知识,再另一方面拓展了我的知识面。

最后,就是通过数值课程中的设计,让我在maltab方面学到了很多。

因为在此次课程设计中,我们采用的语言是maltab程序语言。

六、参考文献1、数值方法第二版金一庆陈越王冬梅编著机械工业出版社2、数值方法(Matlab版)七、代码附录e1.m%这里令n=10for a=180:1:188b=194;n=10;h=(b-a)/n;p=0;q=0;f=inline('exp((-(x-170)^2)/72)');for i=0:n-1p1=f((a+i*h+a+(i+1)*h)/2);p=p+p1;endfor j=1:n-1q1=f(a+j*h);q=q+q1;endformat longP=(1/(6*sqrt(2*pi)))*(h/6)*(f(a)+4*p+2*q+f(b))ende2.mfor a=170:1:194b=194;n=10;h=(b-a)/n;p=0;q=0;f=inline('exp((-(x-170)^2)/72)');for i=0:n-1p1=f((a+i*h+a+(i+1)*h)/2);p=p+p1;endfor j=1:n-1q1=f(a+j*h);q=q+q1;endformat longP=(1/(6*sqrt(2*pi)))*(h/6)*(f(a)+4*p+2*q+f(b));if P<=0.01abreak;endende3.mR=normrnd(170,6,10000,1);j=0;for i=1:10000if R(i)>180j=j+1;endenddisp('模拟数中大于180的数所占比例为:')j/10000e4.mx=150:2:190;y=(1/6*(2^1/2))*exp[(-(x-170)^2)/(2*36)];plot(x,y)。

相关文档
最新文档