文档视界 最新最全的文档下载
当前位置:文档视界 › 过渡态计算 实验报告

过渡态计算 实验报告

过渡态计算  实验报告
过渡态计算  实验报告

《计算方法》课内实验报告

《计算方法》实验报告 姓名: 班级: 学号: 实验日期: 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;

数据结构表达式求值实验报告

竭诚为您提供优质文档/双击可除数据结构表达式求值实验报告 篇一:数据结构实验二——算术表达式求值实验报告 《数据结构与数据库》 实验报告 实验题目算术表达式求值 学院:化学与材料科学学院 专业班级:09级材料科学与工程系pb0920603 姓学 邮名:李维谷号:pb09206285箱: liwg@https://www.docsj.com/doc/d78951277.html,指导教师:贾伯琪 实验时间:20XX年10月10日 一、需要分析 问题描述: 表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。

问题分析: 在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。 设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。 在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。 算法规定: 输入形式:一个(:数据结构表达式求值实验报告)算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。 输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。 程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。 测试数据:正确输入:12*(3.6/3+4^2-1)#

并行计算1

并行计算 实 验 报 告 学院名称计算机科学与技术学院专业计算机科学与技术 学生姓名 学号 年班级 2016年5 月20 日

一、实验内容 本次试验的主要内容为采用多线程的方法计算pi的值,熟悉linux下pthread 形式的多线程编程,对实验结果进行统计并分析以及加速比曲线分析,从而对并行计算有初步了解。 二、实验原理 本次实验利用中值积分定理计算pi的值 图1 中值定理计算pi 其中公式可以变换如下: 图2 积分计算pi公式的变形 当N足够大时,可以足够逼近pi,多线程的计算方法主要通过将for循环的计算过程分到几个线程中去,每次计算都要更新sum的值,为避免一个线程更新sum 值后,另一个线程仍读到旧的值,所以每个线程计算自己的部分,最后相加。三、程序流程图 程序主体部分流程图如下:

多线程执行函数流程图如下: 四、实验结果及分析

令线程数分别为1、2、5、10、20、30、40、50和100,并且对于每次实验重复十次求平均值。结果如下: 图5 时间随线程的变化 实验加速比曲线的计算公式类似于 结果如下: 图5 加速比曲线 实验结果与预期类似,当线程总数较少时,线程数的增多会对程序计算速度带来明显的提升,当线程总数增大到足够大时,由于物理节点的核心数是有限的,因此会给cpu带来较多的调度,线程的切换和最后结果的汇总带来的时间开销较大,所以线程数较大时,增加线程数不会带来明显的速度提升,甚至可能下降。 五、实验总结

本次试验的主要内容是多线程计算pi的实现,通过这次实验,我对并行计算有了进一步的理解。上学期的操作系统课程中,已经做过相似的题目,因此程序主体部分相似。不同的地方在于,首先本程序按照老师要求应在命令行提供参数,而非将数值写定在程序里,其次是程序不是在自己的电脑上运行,而是通过ssh和批处理脚本等登录到远程服务器提交任务执行。 在运行方面,因为对批处理任务不够熟悉,出现了提交任务无结果的情况,原因在于windows系统要采用换行的方式来表明结束。在实验过程中也遇到了其他问题,大多还是来自于经验的缺乏。 在分析实验结果方面,因为自己是第一次分析多线程程序的加速比,因此比较生疏,参考网上资料和ppt后分析得出结果。 从自己遇到的问题来看,自己对批处理的理解和认识还比较有限,经过本次实验,我对并行计算的理解有了进一步的提高,也意识到了自己存在的一些问题。 六、程序代码及部署 程序源代码见cpp文件 部署说明: 使用gcc编译即可,编译时加上-pthread参数,运行时任务提交到服务器上。 编译命令如下: gcc -pthread PI_3013216011.cpp -o pi pbs脚本(runPI.pbs)如下: #!/bin/bash #PBS -N pi #PBS -l nodes=1:ppn=8 #PBS -q AM016_queue #PBS -j oe cd $PBS_O_WORKDIR for ((i=1;i<=10;i++)) do ./pi num_threads N >> runPI.log

并行计算课程报告

并行计算课程报告 1.学习总结 1.1并行计算简介 并行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。 1.2并行计算机分类和并行机体系结构的特征 按内存访问模型、微处理器和互联网络的不同,当前流行的并行机可分为对称多处理共享存储并行机(SMP:Symmetric Multi-Processing)、分布共享存储并行机(DSM:Distributed Shared Memory)、机群(cluster)、星群(constellation)和大规模并行机(MPP:Massively Parallel Processing)等五类。 SMP并行机有如下主要特征:对称共享存储、单一的操作系统映像、局部高速缓存cache 及其数据一致性、低通信延迟、共享总线带宽、支持消息传递、共享存储并行程序设计。SMP 并行机具有如下缺点:欠可靠、可扩展性(scalability)较差。 DSM 并行机具有如下主要特征:并行机以结点为单位,每个结点包含一个或多个CPU,每个CPU 拥有自己的局部cache,并共享局部存储器和I/O设备,所有结点通过高性能互联网络相互连接;物理上分布存储;单一的内存地址空间;非一致内存访问(NUMA)模式;单一的操作系统映像;基于cache 的数据一致性;低通信延迟与高通信带宽;DSM 并行机可扩展到数百个结点,能提供每秒数千亿次的浮点运算性能;支持消息传递、共享存储并行程序设计。 机群(cluster)有三个明显的特征: ①系统由商用结点构成,每个结点包含2-4 个商用微处理器,结点内部 共享存储。 ②采用商用机群交换机连接结点,结点间分布存储。 ③在各个结点上,采用机群Linux 操作系统、GNU 编译系统和作业管理 系统。 星群(constellation)有三个明显的特征: ①系统由结点构成,每个结点是一台共享存储或者分布共享存储的并行 机子系统,包含数十、数百、乃至上千个微处理器,计算功能强大。 ②采用商用机群交换机连接结点,结点间分布存储。

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 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"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

数据结构实验二——算术表达式求值实验报告

《数据结构与数据库》 实验报告 实验题目 算术表达式求值 学院:化学与材料科学学院 专业班级:09级材料科学与工程系PB0920603 姓名:李维谷 学号:PB09206285 邮箱:liwg@https://www.docsj.com/doc/d78951277.html, 指导教师:贾伯琪 实验时间:2010年10月10日 一、需要分析 问题描述:

表达式计算是实现程序设计语言的基本问题之一,它的实现是栈的应用的一个典型例子。设计一个程序,演示通过将数学表达式字符串转化为后缀表达式,并通过后缀表达式结合栈的应用实现对算术表达式进行四则混合运算。 问题分析: 在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。 设置运算符栈(字符型)和运算数栈(浮点型)辅助分析算符优先关系。在读入表达式的字符序列的同时完成运算符和运算数的识别处理,然后进行运算数的数值转换在进行四则运算。 在运算之后输出正确运算结果,输入表达式后演示在求值中运算数栈内的栈顶数据变化过程,最后得到运算结果。 算法规定: 输入形式:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为使实验更完善,允许操作数为实数,操作符为(、)、.(表示小数点)、+、-、*、/、^(表示乘方),用#表示结束。 输出形式:演示表达式运算的中间结果和整个表达式的最终结果,以浮点型输出。 程序功能:对实数内的加减乘除乘方运算能正确的运算出结果,并能正确对错误输入和无定义的运算报错,能连续测试多组数据。 测试数据:正确输入:12*(3.6/3+4^2-1)# 输出结果:194.4

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

课程设计报告

课程设计报告 题 目 基于数据挖掘的航电系统故障诊断 专业名称 电子信息工程 学生姓名 王腾飞 指导教师 陈 杰 完成时间 2014年3月18日

摘要 航电系统是飞机的重要组成部分,由于其综合应用了电子、机械、计算机及自动检测等许多学科的先进技术,结构层次很多,所以对其实施故障诊断具有涉及专业领域多、诊断难度大、要求时间短等特点。这对快速处理故障数据提出了很大的挑战。 从独立的联合式航电机箱的按键通电测试,到集中式飞机管理系统数据收集,飞机维修系统经过漫长的发展已演变成故障诊断工具。 现代飞机均采用了中央维修系统,用以收集所有子系统的故障报告、判断故障根源并推荐修理方法。飞机的故障信息和历史数据存放在数据库中。如果用传统的数据分析方法对这些海量的数据进行分析时会显得力不从心,不仅浪费时间而且对于隐含的知识难以有效的进行挖掘。数据挖掘技术十分符合现实的需要,它可以客观地挖掘出历史数据库中潜在的故障规则,这些规则能更好地指导故障的定位与检修,并对潜在的故障做出预测。随着数据的不断增长,如何能自动获取知识已经成为故障诊断技术发展的主要制约条件,而数据挖掘技术为解决这个“瓶颈”问题提供了一条有效的途径。 本文详细介绍了故障诊断技术与数据挖掘技术,并总结了航电系统的故障诊断的特点。拟采用聚类分析的技术对故障数据快速处理,实现对故障的快速定位。 关键词:故障诊断数据挖掘聚类分析航电系统

故障诊断技术 故障诊断技术简介 故障诊断就是指当设备系统不能完成正常的功能时,利用一定的方法找出使该功能丧失的原因及发生故障的部位,实现对故障发展趋势的预测的过程。故障诊断涉及到多方面的技术背景,主要以系统论、信息论、控制论、非线性科学等最新技术理论为基础,它是一门综合性的学科,具有重要的实用价值。 设备系统故障及故障诊断 随着现代化工业的发展,设备系统能够以最佳状态可靠地运行,对于保证产品质量、提高企业的产能、保障生命财产安全都具有极其重要的意义。设备系统的故障是指设备系统在规定时间内、规定条件下丧失规定功能的状况。故障诊断的作用则是发现并确定发生故障的部位及性质,找出故障的起因,预测故障的发展趋势并提出应对措施。故障诊断技术的使用范围不应只局限于设备系统使用和维修过程中,在设备系统的设计制造过程中也可以使用故障诊断技术,为以后的故障监测和设备系统维护创造条件。因此,故障诊断技术应该贯穿于设备系统的设计、制造、运行和维护的全过程当中。 机载设备的故障诊断流程框图:

c 计算器实验报告

简单计算器 姓名: 周吉祥 实验目的:模仿日常生活中所用的计算器,自行设计一个简单的计算器程序,实现简单的计算功能。 实验内容: (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.概要设计 2.1 数据结构设计 任何一个表达式都是由操作符,运算符和界限符组成的。我们分别用顺序栈来寄存表达式的操作数和运算符。栈是限定于紧仅在表尾进行插入或删除操作的线性表。顺序栈的存储结构是利用一组连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top 指示栈顶元素在顺序栈中的位置,base 为栈底指针,在顺序栈中,它始终指向栈底,即top=base 可作为栈空的标记,每当插入新的栈顶元素时,指针top 增1,删除栈顶元素时,指针top 减1。 2.2 算法设计 为了实现算符优先算法。可以使用两个工作栈。一个称为OPTR ,用以寄存运算符,另一个称做OPND ,用以寄存操作数或运算结果。 1.首先置操作数栈为空栈,表达式起始符”#”为运算符栈的栈底元素; 2.依次读入表达式,若是操作符即进OPND 栈,若是运算符则和OPTR 栈的栈顶运算符比较优先权后作相应的操作,直至整个表达式求值完毕(即OPTR 栈的栈顶元素和当前读入的字符均为”#”)。 2.3 ADT 描述 ADT Stack{ 数据对象:D={ i a |i a ∈ElemSet,i=1,2,…,n, n ≧0} 数据对象:R1={< 1 ,-i i a a >| 1-i a ,D a i ∈,i=2,…,n}

多核编程与并行计算实验报告 (1)

(此文档为word格式,下载后您可任意编辑修改!) 多核编程与并行计算实验报告 姓名: 日期:2014年 4月20日

实验一 // exa1.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include #include #include using namespace std; void ThreadFunc1(PVOID param) { while(1) { Sleep(1000); cout<<"This is ThreadFunc1"<

实验二 // exa2.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello! "; } return 0; } DWORD WINAPI FunTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"world! "; } return 0; } int main(int argc, char* argv[]) { int input=0; HANDLE hand1=CreateThread (NULL, 0, FunOne, (void*)&input, CREATE_SUSPENDED,

并行编程报告

并行编程报告 课程名称:并行编程原理 专业班级:物联网1102 班 学号 : U201114483 学生姓名:陈炳良 指导教师:金海 报告日期:2014-6-11 计算机科学与技术学院

目录 实验一:利用pthread 并行实现矩阵的乘法运算 (3) 实验目的 (3) 实验概述 (3) 实验结果 (3) 实验代码 (5) 实验总结 (9) 实验二:使用并行方法优化K-means 算法 (10) 实验目的 (10) 实验概述 (10) 实验结果 (10) 实验代码............................................................................................. .11 实验总结............................................................................................. .18

实验一:利用 pthread 并行实现矩阵的乘法运算 实验目的 该实验旨在让学生掌握利用 pthread 进行并行程序设计和性能优化的基本原理和方法,了解并行程序设计中数据划分和任务划分的基本方法,并能够利用pthread 实现矩阵的乘法运算的并行算法,然后对程序执行结果进行简单分析和总结。具体包括:利用 for 循环编写串行的矩阵乘法运算;熟悉 pthread 进行线程创建、管理和销毁的基本原理和方法;利用 pthread 对上述串行的矩阵乘法运算加以改造;通过调整数据划分和任务划分的粒度(改变工作线程的数目),测试并行程序的执行效率;对实验结果进行总结和分析。 实验概述 使用 pThread 完成这项工作。 创建一个新的线程: int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*func) (void *), void *arg); thread 表示线程 ID,与线程中的 pid 概念类似 attr 表示设定线程的属性,可以暂时不用考虑 func 表示新创建的线程会从这个函数指针处开始运行 arg 表示这个函数的参数指针 返回值为 0 代表成功,其他值为错误编号。 主进程等待线程结束: int pthread_join( pthread_t thread, void **retval ); thread 表示线程 ID,与线程中的 pid 概念类似 retval 用于存储等待线程的返回值 两个矩阵相乘: 一个 m 行 n 列的矩阵与一个 n 行 p 列的矩阵可以相乘,得到的结果是一个 m 行 p 列的矩阵,其中的第 i 行第 j 列位置上的数为第一个矩阵第 i 行上的 n 个 数与第二个矩阵第 j 列上的 n 个数对应相乘后所得的 n 个乘积之和。 实验结果

计算方法实验报告格式

计算方法实验报告格式 小组名称: 组长姓名(班号): 小组成员姓名(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一个完整的实验,应包括数据准备、理论基础、实验内容及方法,最终对实验结果进行分析,以达到对理论知识的感性认识,进一步加深对相关算法的理解,数值实验以实验报告形式完成,实验报告格式如下: 一、实验名称 实验者可根据报告形式需要适当写出. 二、实验目的及要求 首先要求做实验者明确,为什么要做某个实验,实验目的是什么,做完该实验应达到什么结果,在实验过程中的注意事项,实验方法对结果的影响也可以以实验目的的形式列出. 三、算法描述(实验原理与基础理论) 数值实验本身就是为了加深对基础理论及方法的理解而设置的,所以要求将实验涉及到的理论基础,算法原理详尽列出. 四、实验内容 实验内容主要包括实验的实施方案、步骤、实验数据准备、实验的算法以及可能用到的仪器设备. 五、程序流程图 画出程序实现过程的流程图,以便更好的对程序执行的过程有清楚的认识,在程序调试过程中更容易发现问题. 六、实验结果 实验结果应包括实验的原始数据、中间结果及实验的最终结果,复杂的结果可以用表格

形式列出,较为简单的结果可以与实验结果分析合并出现. 七、实验结果分析 实验结果分析包括对对算法的理解与分析、改进与建议. 数值实验报告范例 为了更好地做好数值实验并写出规范的数值实验报告,下面给出一简单范例供读者参考. 数值实验报告 小组名称: 小组成员(班号): 按贡献排序情况: 指导教师评语: 小组所得分数: 一、实验名称 误差传播与算法稳定性. 二、实验目的 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,则

算术表达式语法检查实验报告

中南民族大学计算机科学学院本科课程设计 任务书 设计名称:算术表达式语法检查 指导教师:下达时间: 2015-5-8 学生姓名:学号: 专业: 一、课程设计的基本要求 根据所学知识,编写指定题目的C++语言程序,并规范地完成课程设计报告。通过课程设计,加深对《C++面向对象程序设计》课程所学知识的理解,熟练掌握和巩固C++语言的基本知识和语法规范,掌握C++语言的基础知识,理解面向对象系统的封装性、继承性和多态性;熟练使用C语言中的函数、数组、指针、链表和字符串等基本知识;掌握类的定义、标准String类和向量;理解掌握友元函数和重载操作符,动态数组;理解掌握继承和多态性;掌握模版的使用;能够进行程序调试过程中的异常处理;进一步掌握利用C++进行类的定义和操作方法;进一步掌握类的继承和派生方法;进一步理解虚函数和多态;综合利用上述知识,学习设计并编写面向对象的C++简单应用程序;培养解决复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。 学会编制结构清晰、风格良好、数据结构适当的C++语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。 具体要求如下: 1、采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块(视情况可另外加分)。 2、系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行。 3、程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。 4、编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等); 5、写出规范的课程设计报告,具体要求见相关说明文档。

并行计算第一次实验报告

并行计算上机实验报告题目:多线程计算Pi值 学生姓名 学院名称计算机学院 专业计算机科学与技术时间

一. 实验目的 1、掌握集群任务提交方式; 2、掌握多线程编程。 二.实验内容 1、通过下图中的近似公式,使用多线程编程实现pi的计算; 2、通过控制变量N的数值以及线程的数量,观察程序的执行效率。 三.实现方法 1. 下载配置SSH客户端 2. 用多线程编写pi代码 3. 通过文件传输界面,将文件上传到集群上 4.将命令行目录切换至data,对.c文件进行编译 5.编写PBS脚本,提交作业 6.实验代码如下: #include

#include #include #include #include #include static double PI=0; static int N=0; static int numOfThread=0; static int length=0; static int timeUsed=0; static int numOfThreadArray[]={1,2,4,6,8,10,12,14,16,20,24,30}; static int threadArraySize=12; static int nTime=4; static int repeatTime=30; static double totalTime=0; struct timeval tvpre, tvafter; pthread_mutex_t mut; clockid_t startTime,endTime;

并行计算课程报告

成绩: 并行计算导论课程报告 专业:软件工程 班级:软件二班 学号:140120010057 姓名:蒋琳珂 2017年6月1日

1、并行计算的实际意义 并行计算或称平行计算是相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。 在应用需求方面,人类对计算机性能的需求总是永无止境的,在诸如预测模型的构造和模拟、工程设计和自动化、能源勘探、医学、军事以及基础理论研究等领域中都对计算提出了极高的具有挑战性 的要求。例如,在作数值气象预报时,要提高全球气象预报的准确性,据估计在经度、纬度和大气层方向上至少要取200*100*20=40万各网格点。 并行计算机产生和发展的目的就是为了满足日益增长的大规模科学和工程计算、事务处理和商业计算的需求。问题求解最大规模是并行计算机的最重要的指标之一,也是一个国家高新技术发展的重要标志。 2、拟优化的应用介绍 应用jacobi迭代近似求解二维泊松方程。 二维泊松方程:

Ω ?∈=Ω∈=?-),(),,(),(u ),(),,(),(u y x y x g y x y x y x f y x 其中 ),0(*),0(H W =Ω,) ,(),(),(22 22y x u y y x u x y x u ?+?=? ),(y x f 和),(y x g 为已知函数,分别定义在Ω的内部和边界上。 对于任意正整数 x M 和 y N ,将网格剖分成 y x N M *个相同的方格。 在网格节点上,用二阶中心差分来近似二阶偏导数。 21,,1,2,1,,12),(22 2),(22 y j i j i j i y x x j i j i j i y x h u u u jh ih u y h u u u jh ih u x +-+-+-≈??+-≈?? 将差分近似代入泊松方程,便得到了五点差分离散格式,泊松方 程的求 x x j i y x j i j i x j i j i y j i y x N j M i f h h u u h u u h u h h ≤≤-≤≤=+-+-++-+-1,11)()()(2,221,1,2,1,12,22 之后用经典的jacobi 算法来求解此方程组。从任意一初始近似解 y x j i N j M i u ,3,2,1.3,2,1,0,?=?=, 出发,迭代计算: y x y x j i j i x j i j i y j i y x k j i N j M i h h u u h u u h f h h u ,3,2,1.3,2,1) (2) ()(2 21,1,2,1,12,22,?=?=+++++= +-+-, 迭代序号k=1,2,3…直至近似解满足误差要求。

四则运算表达式求值实验报告

HUNAN UNIVERSITY 课程实习报告 题目:四则运算表达式求值 学生姓名: 学生学号: 专业班级: 指导老师: 完成日期:

一、需求分析 四则运算表达式求值,将四则运算表达式用中缀表达式表示,然后转换为后缀表达式,并计算结果。 本程序要求利用二叉树后序遍历来实现表达式的转换,同时可以使用实验2的结果来求解后缀表达式的值。 在字符界面上输入一个中缀表达式,回车表示结束。如果该中缀表达式正确,那么在字符界面上输出其后缀表达式,其中后缀表达式中两相邻操作数之间利用空格隔开;如果不正确,在字符界面上输出表达式错误提示。 测试数据 输入: 21+23*(12-6) 输出: 21 23 12 6 -*+ 二、详细设计 输入和输出的格式 输入 本程序可以将输入的四则运算表达式(中缀表达式)转换为后缀表达式 输出 后缀表达式为://输出结果的位置 表达式的值为://输出结果的位置 三、调试分析 本次实验的难点主要是在建立二叉树的问题上。关于如何把中缀表达式存入二叉树中,我参考了网上的一些方法,成功实现了目标,但是却遇到了一个问题,那就是不能处理小数,甚至两位或两位以上的整数。因为如果采用字符数组来存储操作数,运算符合一位整数还可以处理,但对于两位数就就会出问题,最后我改进采用字符串数组来存储操作数,成功解决了问题。 另外在处理输入的非法表达式问题中,我也费了很大功夫,但总体问题不大。 四、测试结果 五、用户使用说明(可选) 1、运行程序时 提示输入四则运算表达式 本程序可以将中缀表达式转化为后缀表达式,并计算结果 请输入四则运算表达式: 输出 后缀表达式为: 表达式的值为: 程序源代码(c++) #include #include #include #include

并行处理实验报告:用MPI实现的矩阵乘法的加速比分析

华中科技大学 课程名称并行处理 实验名称矩阵乘法的实现及加速比分析考生姓名李佩佩 考生学号 M201372734 系、年级计算机软件与理论2013级类别硕士研究生 考试日期 2014年1月3日

一. 实验目的 1) 学会如何使用集群 2) 掌握怎么用并行或分布式的方式编程 3) 掌握如何以并行的角度分析一个特定的问题 二. 实验环境 1) 硬件环境:4核CPU、2GB内存计算机; 2) 软件环境:Windows XP、MPICH2、VS2010、Xmanager Enterprise3; 3) 集群登录方式:通过远程桌面连接211.69.198.2,用户名:pppusr,密码:AE2Q3P0。 三. 实验内容 1. 实验代码 编写四个.c文件,分别为DenseMulMatrixMPI.c、DenseMulMatrixSerial.c、SparseMulMatrixMPI.c和SparseMulMatrixSerial.c,用于比较并行和串行矩阵乘法的加速比,以及稀疏矩阵和稠密矩阵的加速比。这里需要说明一下,一开始的时候我是把串、并行放在一个程序中,那么就只有两个.c文件DenseMulMatrix.c 和SparseMulMatrix.c,把串行计算矩阵乘的部分放到了主进程中,即procsID=0的进程,但是结果发现执行完串行后,再执行并行就特别的慢。另外,对于稀疏矩阵的处理方面可能不太好,在生成稀疏矩阵的过程中非0元素位置的生成做到了随机化,但是在进行稀疏矩阵乘法时没有对矩阵压缩,所以跟稠密矩阵乘法在计算时间上没多大区别。 方阵A和B的初始值是利用rand()和srand()函数随机生成的。根据稀疏矩阵和稠密矩阵的定义,对于稀疏矩阵和稠密矩阵的初始化方法InitMatrix(int *M,int *N,int len)会有所不同。这里需要说明一下,一开始对于矩阵A和B的初始化是两次调用InitMatrix(int *M ,int len),生成A和B矩阵,但是随后我发现,由于两次调用方法InitMatrix的时间间隔非常短,又由于srand()函数的特点,导致生成的矩阵A和B完全一样;然后,我就在两次调用之间加入了语句“Sleep(1000);”,加入头文件“#include ”,这样生成的A、B矩阵就不一样了,但很快问题又出现了,在Xshell中不能识别头文件“#include ”。所以,最后决定用下面的方法生成矩阵A和B,B是A的转置。 //稠密矩阵的生成方法 void InitMatrix(int *M,int *N,int len) { srand((unsigned)time( NULL)); for(i=0; i < len*len; i++)

并行计算课程设计报告

并行计算与多核多线程技术 课程报告 专业 班级 学号 姓名 成绩___________________ 年月日

课程报告要求 手写内容:设计目的、意义,设计分析,方案分析,功能模块实现,最终结果分析,设计体会等。 允许打印内容:设计原理图等图形、图片,电路图,源程序。硬件类的设计,要有最终设计的照片图;软件类设计,要有各个功能模块实现的界面图、输入输出界面图等。 评价 理论基础 实践效果(正确度/加速比) 难度 工作量 独立性

目录 1. 设计目的、意义(功能描述) (1) 2. 方案分析(解决方案) (1) 3. 设计分析 (1) 3.1 串行算法设计 (1) 3.2 并行算法设计 (1) 3.3 理论加速比分析 (2) 4. 功能模块实现与最终结果分析 (2) 4.1 基于OpenMP的并行算法实现 (2) 4.1.1 主要功能模块与实现方法 (2) 4.1.2 实验加速比分析 (3) 4.2 基于MPI的并行算法实现 (3) 4.2.1 主要功能模块与实现方法 (3) 4.2.2 实验加速比分析 (4) 4.3 基于Java的并行算法实现 (4) 4.3.1 主要功能模块与实现方法 (4) 4.3.2 实验加速比分析 (5) 4.4 基于Windows API的并行算法实现 (5) 4.4.1 主要功能模块与实现方法 (5) 4.4.2 实验加速比分析 (6) 4.5 基于.net的并行算法实现 (6) 4.5.1 主要功能模块与实现方法 (6) 4.5.2 实验加速比分析 (6) 4.6并行计算技术在实际系统中的应用 (6) 4.6.1 主要功能模块与实现方法 (6) 4.6.2 实验加速比分析 (7) 5. 设计体会 (7) 6. 附录 (9) 6.1 基于OpenMP的并行程序设计 (9) 6.1.1 代码及注释 (9) 6.1.2 执行结果截图 (11) 6.1.3 遇到的问题及解决方案 (12) 6.2 基于MPI的并行程序设计 (12)

相关文档