数学实验报告
实验序号:3 日期:2014 年4 月9日
《计算方法》实验报告 姓名: 班级: 学号: 实验日期: 2011年10月26日
一、实验题目: 数值积分 二、实验目的: 1.熟悉matlab 编写及运行数值计算程序的方法。 2.进一步理解数值积分的基础理论。 3.进一步掌握应用不同的数值积分方法求解给定的积分并给出数据结果及误差分析。 三、实验内容: 1.分别用复合梯形求积公式及复合辛普森求积公式计算积分xdx x ln 10 ? , 要求计算精度达到410-,给出计算结果并比较两种方法的计算节点数. 2.用龙贝格求积方法计算积分dx x x ?+3 021,使误差不超过510-. 3.用3=n 的高斯-勒让德公式计算积分?3 1 sin x e x ,给出计算结果. 4.用辛普森公式(取2==M N ) 计算二重积分.5 .00 5 .00 dydx e x y ? ? - 四、实验结果: 1.(1)复合梯形法: 将区间[a,b]划分为n 等份,分点n k n a b h kh a x k ,2,1,0,,=-=+=在每个区间[1,+k k x x ](k=0,1,2,···n-1)上采用梯形公式,则得 )()]()([2)()(1 11 1 f R x f x f h dx x f dx x f I n n k k k b a n k x x k k ++===∑?∑? -=+-=+ 故)]()(2)([21 1 b f x f a f h T n k k n ++=∑-=称为复合梯形公式 计算步长和划分的区间 Eps=1E-4 h1=sqrt(Eps/abs(-(1-0)/12*1/(2+1))) h1 =0.0600 N1=ceil(1/h1) N1 =17 用复合梯形需要计算17个结点。 复合梯形: function T=trap(f,a,b,n) h=(b-a)/n;
系统建模与仿真题目:Buffon实验的仿真 院系: 电子工程学院 专业:信息对抗技术 班级:021231 姓名:余颖智 学号:02123021 指导老师:刘洋 完成时间:2015年4月 西安电子科技大学
基于MATLAB的投针实验仿真 摘要 在求证圆周率的过程中经过割圆术后,出现的投针试验以求出圆周率,目前利用MATLAB数学建模的仿真实验,运用到计算机中,简化其随机实验的操作量大,运算慢等特点。不同针距相同实验量运算后得出不同的π,其针距与线间距离相等,所得值接近于π。
目录 摘要 (2) 二、实验内容 (4) 三、建模流程图 (5) 四、程序主要代码 (6) 五、运行结果 (6) 六、结论 (7)
一、实验原理 1777年法国科学家布丰提出的一种计算圆周率的方法——随机投针法,即著名的布丰投针问题。该投针实验主要有如下三个步骤:(一)取一张白纸,在上面画许多条间距为a的平行线;(二)取一根长度为l(l 三、建模流程图 四、程序主要代码 str(handles.edit1,'string'); %取得变量,定义变量,变量初始化 n = str2double(str); str = get(handles.edit2,'string'); l = str2double(str); str = get(handles.edit3,'string'); a = str2double(str); counter = 0; %变量初始化 phi = 0; frequency = 0; Pi = 0; x = unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离 phi = unifrnd(0,pi,1,n);% 产生n个(0,pi)之间均匀分布的随机数,这里pi是投针与最近平行线的角度 for i=1:n if x(i) 本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日 y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream" 心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。 简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (1)体系设计: 程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示,可以清楚数据等。 (2)设计思路: 1)先在Visual C++ 6.0中建立一个MFC工程文件,名为 calculator. 2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单 选框 3)设计按钮,并修改其相应的ID与Caption. 4)选择和设置各控件的单击鼠标事件。 5)为编辑框添加double类型的关联变量m_edit1. 6)在calculatorDlg.h中添加math.h头文件,然后添加public成 员。 7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始 化和完善各控件的响应函数代码。 (3)程序清单: ●添加的public成员: double tempvalue; //存储中间变量 double result; //存储显示结果的值 int sort; //判断后面是何种运算:1.加法2.减法3. 乘法 4.除法 int append; //判断后面是否添加数字 ●成员初始化: CCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent) { //{{AFX_DATA_INIT(CCalculatorDlg) m_edit1 = 0.0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); tempvalue=0; result=0; sort=0; append=0; } 计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格 形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 1.理解数值计算稳定性的概念. 2.了解数值计算方法的必要性. 3.体会数值计算的收敛性与收敛速度. 三、实验内容 计算dx x x I n n ? += 1 10 ,1,2,,10n = . 四、算法描述 由 dx x x I n n ? += 1 10 ,知 dx x x I n n ?+=--101110,则 系统建模与仿真 基于MATLAB的布丰实验模拟 姓名:石星宇 学号: 02123010 指导教师:刘洋 2015年4月9日 目录 基于MATLAB的布丰实验模拟 .................................................................... - 1 - 一、实验原理......................................................................................... - 1 - 二、编程模拟......................................................................................... - 1 - 1、程序流程图............................................................................... - 1 - 2、程序代码................................................................................... - 2 - 三、实验结果......................................................................................... - 2 - 基于MATLAB 的布丰实验模拟 一、实验原理 找一根铁丝弯成一个圆圈,使其直径恰恰等于平行线间的距离a 。可以想象得到,对于这样的圆圈来说,不管怎么扔下,都将和平行线有两个交点。因此,如果圆圈扔下的次数为n 次,那么相交的交点总数必为n 2。现在设想把圆圈拉直,变成一条长为a π的铁丝。显然,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点,3个交点,2个交点,1个交点,甚至于都不相交。由于圆圈和直线的长度同为a π,根据机会均等的原理(即等概率事件),当它们投掷次数较多,且相等时,两者与平行线组交点的总数期望也是一样的。这就是说,当长为a π的铁丝扔下n 次时,与平行线相交的交点总数应大致为n 2。现在转而讨论铁丝长为l 的情形。当投掷次数n 增大的时候,这种铁丝跟平行线相交的交点总数k 应当与长度l 成正比,因而有:l k λ=,式中λ是比例系数。为了求出λ来,只需注意到,对于a l π=的特殊情形,有n k 2=。于是求得a n πλ2=。代入前式就有:a m πln 2≈从而ak nl 2≈π。 二、编程模拟 1、程序流程图 参数初始化 产生位置随机数; 产生角度随机数 判断相交 1+=k k 1+=n n 是 否 判断结束 蒲丰氏投针问题的模拟过程,随机数发生器也是自编的,以供大家参考和提出建议。谢谢。(seed1和seed2最好选择3和5,为了使投针次数达到1000000,CVF进行如下设置Project->settings->link-> output,将stack allocations reserve:设为1000000000) program getpi implicit none real,parameter::a=5,L=4,pi=3.14159 integer::n1,i,counter=0 real,allocatable::R1(:),R2(:) real::theta,x,pi1 write(*,*) 'input the size of the array:' read(*,*) n1 allocate(R1(n1)) allocate(R2(n1)) call random(n1,R1,R2) do i=1,n1 x=a*(2*R1(i)-1) theta=pi*R2(i) if(abs(x) 南京信息工程大学实验(实习)报告 一、实验目的: 用最小二乘法将给定的十个点拟合成三次多项式。 二、实验步骤: 用matlab编制以函数为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi=1) x -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 y -2.30 -1 -0.14 -0.25 0.61 1.03 1.75 2.75 4.42 6.94 给定直线方程为:y=1/4*x3+1/2*x2+x+1 三、实验结论: 最小二乘法:通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。 一般地。当测量数据的散布图无明显的规律时,习惯上取n次代数多项式。 程序运行结果为: a = 0.9731 1.1023 0.4862 0.2238 即拟合的三次方程为:y=0.9731+1.1023x+0.4862*x2+0.2238*x3 -2.5 -2-1.5-1-0.5 00.51 1.52 2.5 -4-20246 81012 x 轴 y 轴 拟合图 离散点 y=a(1)+a(2)*x+a(3)*x.2+a(4)*x.3 结论: 一般情况下,拟合函数使得所有的残差为零是不可能的。由图形可以看出最小二乘解决了残差的正负相互抵消的问题,使得拟合函数更加密合实验数据。 优点:曲线拟合是使拟合函数和一系列的离散点与观测值的偏差平方和达到最小。 缺点:由于计算方法简单,若要保证数据的精确度,需要大量的数据代入计算。 蒲丰投针问题 1.蒲丰简介 蒲丰有的时候翻译成布丰,是18世纪法国著名 的博物学家。他喜欢研究数学和生物学。主要的贡献 有:(1)翻译了牛顿的《流数法》,流数法按现在的 说法就叫微积分。(2)写了一本巨著,这部巨著的名 字叫《自然史》,因为他特别喜欢研究生物。这个自 然史一共有44卷,其中他生前写了36卷,后来他学 生又完成了。这本书对后来的世界有很大的影响,尤 其影响到一个人叫达尔文,所以蒲丰这个人其实是很 厉害的。 2.蒲丰投针 1777年,在蒲丰晚年的时候,他有一次举行了一 个家庭宴会。邀请了一大堆他的朋友来帮他做实验。 做什么实验呢,就“投针”。那朋友来了之后发现,就 是桌子上有很多根间距相等的平行线。然后蒲丰就说 了,给你们同样大的针,你把这些针随机扔到这个桌子上。然后宾客就随便扔吗,有可能这样,有可能 这样……,随便扔是吧,这都有可能,什么情况都 有可能。有的针就没有跟平行线相交,比如这个, 这个,这个,就没有相交,也有相交的,比如这个, 这个,这个,这是相交的,对吧,然后他就数,他 说这个针一共投了多少个呢?一共投了n =2212个。 其中与这个平行线相交的针有多少 个,数了一下有m =704个。然后他说, 我现在可以计算圆周率了,别人都不 信,他说你看我圆周率怎么算,我只 要把这两个数相除就行了。我用n 除 以m ,这个数除完了大概是3.142,这个就是圆周率了。别人说好神奇,这怎么回事儿,蒲丰说我给你解释解释这个原理是什么?其实这个原理并不复杂,我们来看一下它的原理是什么。 3. 蒲丰投针原理 (1)首先,它这个平行线是严格平行的,那平行线之间的距离是固定的,是a 。然后我随意地把一根针投上去,也许相交,也许不相交,这不一定。比如说这个针投上去了,投上去了之后,针的总长是b ,针有一个中点叫M ,对吧,这个M 到它比较近的平行线之间的距离我们设为x ,大家注意,这个是针的中点到比较近的平行线的距离是x ,所以我们应该知道x 的范围。x 的最小值就是这个终点正好落在平行线上,那最小值是0,对吧。最大值就 是针的中点正好在两条平行线中间,那最大值是a 2 ,不会再大了。因为我这个x 的定义是针的终点到比较近的平行线的距离,对吧!所以x ∈[0,a 2 ]。 (2)其次就是我想知道这个针与这个平行线的夹角是多少?令夹角为α,α的范围是什么呢,如果你完全跟这个平行线平行的话,那么这个夹角是00,对吧。如果你往上竖过来, 概率论与数理统计实验 蒲丰投针与蒙特卡罗法 班级应数12级01班 学号2012444086 姓名张旭东 蒲丰投针与蒙特卡罗法 张旭东2012444086 (重庆科技学院数学与应用数学,重庆沙坪坝) 【摘要】通过设计一个投针实验使这个事件的概率和未知量π有关,然后通过重复实验,以频率估计概率,即可求得未知参数π的近似解。这种方法称为随机模拟法,也称为蒙特卡罗法。一般来说,实验次数越多所得的近似值就越接近真值。可以利用MATLAB来大量重复地模拟所设计的随机实验。 【关键词】随机模拟;投针实验;重复实验 1 引言 蒲丰投针问题是由法国科学家蒲丰(Buffon)在1777年提出的,它是概率中非常有代表性的问题,它是第一个用几何形式表达概率问题的例子,其结论具有很强的理论与实际意义。蒲丰针问题的解决不仅较典型的反应了集合概率的特征及处理方法,而且还可以由此领略到从“概率土壤”上开出的一朵瑰丽的鲜花——蒙特卡洛(Monte-Carlo)方法。 蒙特卡罗(Monte Carlo)方法,也称计算机模拟方法,是一种基于“随机数”的计算方法,大数定律为近年来发展迅速的随机计算机和随机模拟方法提供了理论基础。 MATLAB是一个适合多学科,具有多种工作平台的功能强大的大型软件。MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的进本教学工具,Matlab随机数发生器的种类丰富且用法简便。 本文介绍了利用随机模拟方法和大数定律的相关理论解决蒲丰投针问题计算π的近似值。 2 有关数学实验的有关基础 定理(贝努力大数定律) 设n μ是n 重贝努力实验中事件A 出现的次数,P 是事件A 每次实验中出现的概率,即P(A)=p,则对任意的 ε>0,有 3 实验 蒲丰投针问题 在平面上画有等距离的一些平行线,平行线间的距离为a(a>0),向平面上随机投一长为l(l 蒙特卡罗方法概述 § 8.2 引例:蒲丰投针问题 在用传统方法难以解决的问题中,有很大一部分可以用概率模型进行描述.由于这类模型含有不确定的随机因素,分析起来通常比确定性的模型困难.有的模型难以作定量分析,得不到解析的结果,或者是虽有解析结果,但计算代价太大以至不能使用.在这种情况下,可以考虑采用Monte Carlo 方法。下面通过例子简单介绍Monte Carlo 方法的基本思想. Monte Carlo 方法是计算机模拟的基础,它的名字来源于世界著名的赌城——摩纳哥的蒙特卡洛,其历史起源于1777年法国科学家蒲丰提出的一种计算圆周π的方法——随机投针法,即著名的蒲丰投针问题。这一方法的步骤是: 1) 1) 取一张白纸,在上面画上许多条间距为d 的平行线,见图8.1(1) 2) 2) 取一根长度为)(d l l <的针,随机地向画有平行直线的纸上掷n 次,观察针与直线相交的次数,记为 m 3)计算针与直线相交的概率. 由分析知针与平行线相交的充要条件是 ?sin 21≤ x 其中 π?≤≤≤≤0,2 0d x 建立直角坐标系),(x ?,上述条件在坐标系下将是曲线所围成的曲边梯形区域,见图 8.l (2). 由几何概率知 (*)22 sin 210d l d d G g p ππ??π===?的面积的面积 4)经统计实验估计出概率,n m P ≈由(*)式即?2=?=ππd l n m Monte Carlo 方法的基本思想是首先建立一个概率模型,使所求问题的解正好是该模型的参数或其他有关的特征量.然后通过模拟一统计试验,即多次随机抽样试验(确定m 和n ),统计出某事件发生的百分比.只要试验次数很大,该百分比便近似于事件发生的概率.这实际上就是概率的统计定义.利用建立的概率模型,求出要估计的参数.蒙特卡洛方法属于试验数学的一个分支. ************************************************************************* 提示:设x 是一个随机变量,它服从区间[0,d/2]是的均匀分布,同理,?是一个随机变量,它服从区间],0[π上的均匀分布。按照某种抽样法,产生随机变量的可能取值,例如太原理工大学数值计算方法实验报告
c 计算器实验报告
计算方法实验报告格式
布丰投针实验模拟
蒲丰氏投针问题的模拟过程
计算方法实验报告 拟合
蒲丰投针问题
蒲丰投针实验模拟
蒲丰投针问题
Buffon投针实验的理论证明