太原理工大学2018级算法实验报告(详)

合集下载

《算法综合实验》实验报告

《算法综合实验》实验报告

实验5、《算法综合实验》一、实验目的1. 理解和复习所学各种算法的概念2. 掌握和复习所学各种算法的基本要素3. 掌握各种算法的优点和区别4. 通过应用范例掌握选择最佳算法的设计技巧与策略二、实验内容1. 使用贪心算法、回溯法、分支限界法解决0-1背包问题;2. 通过上机实验进行算法实现;3. 保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。

三、算法思想分析1.贪心算法理论上只能解决满足贪心选择性质的问题,而0-1背包并不满足该性质,所以并不能保证能够找到最优解法,只能找到最接近的解,当然如果运气好,也是可以找到最优解的。

利用按重量从小到大、按价值从大到小、按价值/重量从大到小三种方式通过贪心算法求得每种方式的最终结果,并比较三种方式的最大价值取最大的那个,即为贪心算法获得的最优解。

2.回溯法解决0-1背包问题的解空间为子集树,利用回溯法的基本代码模版即可,其中左子树为约束条件,即背包能否装下该物品,右子树为限界条件,即当前物品不放入背包,剩余物品是否有可能创造比当前最大价值更大的价值,如果可以则进入右子树,反之,则直接剪去右子树。

3.0-1背包的解空间为子集树,分支界限法是采用广度优先搜索,每次选取队列的最前面的结点为活结点。

1)算法从根结点A即标记结点开始,初始时活结点队列为空,A入队列。

2)A为活结点,A的儿子结点B、C为可行结点。

将B、C加入队列,舍弃A。

此时队列元素为C-B;3)B为活结点,B的儿子结点D、E,而D为不可行结点。

将E入队列,舍弃B。

此时队列元素为E-C;4)循环以上步骤按照以上方式扩展到叶节点。

四、实验过程分析1.贪心算法的思路很简单即为一直循环下去,直至不满足指定条件。

用于解决0-1背包问题时需要考虑多种放入方式,因为不管哪种方式都不能百分百会得到最优解,只能取多种放入方式中的最优解作为问题的最优解。

这道题目的收获在于贪心算法对于不能保证获得最优解的情况下,如何获得最接近的解,比如0-1背包问题则是采用多种放入方式再进行比较取最优解。

太原理工大学学生实验报告

太原理工大学学生实验报告

太原理工大学学生实验报告图1-1太原理工大学学生实验报告图2-2 应变式传感器安装示意图金属丝在外力作用下发生机械形变时,其电阻值会发生变化,这就是金属的电阻应变效应。

金属的电阻表达式为:lSρ= (1) 当金属电阻丝受到轴向拉力F 作用时,将伸长l ∆,横截面积相应减小S ∆,电阻率因晶格变化等因素的影响而改变ρ∆,故引起电阻值变化R ∆。

对式(1)全微分,并用相对变化量来表示,图2-1应变式传感器信号调理实验电路图图2-3 应变式传感器单臂电桥实验接线图计算系统灵敏度W∆=/(US∆U∆输出电压的变化量,∆(多次测量时为平均值)为输出值与拟合直线的最大×100%式中m满量程输出平均值,此处为200g。

要在砝码盘上放置超过1kg的物体,否则容易损坏传感器。

,绝不可错接成±15V,否则可能烧毁应变片。

太原理工大学学生实验报告图3-1 应变式传感器半桥实验接线图太原理工大学学生实验报告图4-1 应变式传感器全桥实验接线图五、实验注意事项要在砝码盘上放置超过1kg的物体,否则容易损坏传感器。

桥的电压为±5V,绝不可错接成±15V。

六、实验数据太原理工大学学生实验报告图5-2图5-1圆柱形差动式电容传感器示意图图5-2圆柱形差动式电容传感器实验装置安装示意图。

电容式传感器调理模块的电路图如图5-3所示图5-3三、实验设备THVZ-1型传感器实验箱、电容传感器、测微头、万用表(自备)、信号调理挂箱、电容式传感器调理模块。

四、实验步骤1.将“电容传感器调理模块电路图”插放到相应的实验挂箱上,在确保上述模块插放无误后,从实验屏上接入实验挂箱所需的工作电源(电源的大小及正负极性不能接错);2.将电容式传感器引线插头插入信号调理挂箱“电容式传感器调理模块”旁边的黑色九芯插孔中;3.调节“电容式传感器调理模块”上的电位器Rw1,逆时针调节Rw1使旋到底。

用万用表测量此模块上输出两端的电压Uo;本科实验报告课程名称:传感器原理与检测技术实验项目:实验地点:北区多学科楼406专业班级:信息08-2 学号:2008100780 学生姓名:刘洁琼指导教师:乔铁柱沈慧钧李槐生2011年11 月14 日。

算法课设实验报告(3篇)

算法课设实验报告(3篇)

第1篇一、实验背景与目的随着计算机技术的飞速发展,算法在计算机科学中扮演着至关重要的角色。

为了加深对算法设计与分析的理解,提高实际应用能力,本实验课程设计旨在通过实际操作,让学生掌握算法设计与分析的基本方法,学会运用所学知识解决实际问题。

二、实验内容与步骤本次实验共分为三个部分,分别为排序算法、贪心算法和动态规划算法的设计与实现。

1. 排序算法(1)实验目的:熟悉常见的排序算法,理解其原理,比较其优缺点,并实现至少三种排序算法。

(2)实验内容:- 实现冒泡排序、快速排序和归并排序三种算法。

- 对每种算法进行时间复杂度和空间复杂度的分析。

- 编写测试程序,对算法进行性能测试,比较不同算法的优劣。

(3)实验步骤:- 分析冒泡排序、快速排序和归并排序的原理。

- 编写三种排序算法的代码。

- 分析代码的时间复杂度和空间复杂度。

- 编写测试程序,生成随机测试数据,测试三种算法的性能。

- 比较三种算法的运行时间和内存占用。

2. 贪心算法(1)实验目的:理解贪心算法的基本思想,掌握贪心算法的解题步骤,并实现一个贪心算法问题。

(2)实验内容:- 实现一个贪心算法问题,如活动选择问题。

- 分析贪心算法的正确性,并证明其最优性。

(3)实验步骤:- 分析活动选择问题的贪心策略。

- 编写贪心算法的代码。

- 分析贪心算法的正确性,并证明其最优性。

- 编写测试程序,验证贪心算法的正确性。

3. 动态规划算法(1)实验目的:理解动态规划算法的基本思想,掌握动态规划算法的解题步骤,并实现一个动态规划算法问题。

(2)实验内容:- 实现一个动态规划算法问题,如背包问题。

- 分析动态规划算法的正确性,并证明其最优性。

(3)实验步骤:- 分析背包问题的动态规划策略。

- 编写动态规划算法的代码。

- 分析动态规划算法的正确性,并证明其最优性。

- 编写测试程序,验证动态规划算法的正确性。

三、实验结果与分析1. 排序算法实验结果:- 冒泡排序:时间复杂度O(n^2),空间复杂度O(1)。

计算数值实验报告(太原理工大学)

计算数值实验报告(太原理工大学)

本科实验报告课程名称:计算数值方法实验地点:综合楼五层506室专业班级:计科1002 学号:2010001414 学生姓名:xxx指导教师:王峥2012 年 6 月20太原理工大学学生实验报告2,)内有零点,反之在(a,(a+b)/2printf("%5d %5f %5f %5f %5f\n",i,a,b,x,fx);i++;if(fx==0) break;if(fx>0) b=x;else if(fx<0) a=x;if((b-a)<l)break; //进行计算并返值}while(1);}六、结果讨论和分析二分法:迭代法:太原理工大学学生实验报告六、结果讨论和分析Gauss消元法:列主元素消元法:LU分解法:追赶法:太原理工大学学生实验报告分析讨论:其实,这两个迭代法是之前迭代法的升级,多了几个迭代式子而已,而且两者相差不大比较简单,所以选择了雅克比迭代法进行求解,但是没有与另一种方法高斯赛德尔迭代法进行实质性的比较。

流程图:实验地点综合楼五层506室指导教师王峥太原理工大学学生实验报告六、结果讨论和分析分析讨论由于该程序将A矩阵和x0的值编写在程序中,所以要想修改成其他矩阵时比较麻烦,所以也有一定的局限性。

幂法是一种求任意矩阵A的按模最大特征值及其对应特征向量的迭代算法。

该方法的最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为适合,但有时收敛速度很慢。

流程图:实验地点综合楼五层506室指导教师王峥太原理工大学学生实验报告for(int i=1;i<=n;i++){M[i][j]=(M[i][j-1]-M[i-1][j-1])/(M[i][0]-M[i-j+1][0]);}}for(int i=1;i<=n;i++){cout<<"其"<<i<<"阶均差为:"<<M[i][i+1]<<endl;}cout<<"请输入x的值:x=";cin>>xx;for(int i=0;i<n;i++){X*=xx-M[i][0];N+=M[i+1][i+2]*X;P=M[0][1]+N;}cout<<"其函数值:y="<<P<<endl; // }}六、结果讨论和分析太原理工大学学生实验报告分析讨论数据拟合的具体作法是:对给定的数据(x i,y i)(i=0,1,…,m),在取定的函数类中,求p(x)属于此函数类,使误差ri =p(xi)- yi(i=0,1,…,m)的平方和最小,即∑r i2=∑(∑p(x i)-y i)2=min从几何意义上讲,就是寻求与给定点(x i ,y i)(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。

算法设计实验报告

算法设计实验报告

算法设计实验报告一、实验目的本次算法设计实验的主要目的是通过实际操作和分析,深入理解算法的原理和应用,提高解决实际问题的能力,培养创新思维和逻辑推理能力。

二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。

同时,为了进行算法的性能分析和可视化,还使用了一些相关的库,如 time 用于计算时间开销,matplotlib 用于绘制图表。

三、实验内容(一)排序算法的实现与比较1、冒泡排序冒泡排序是一种简单的排序算法。

它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。

以下是冒泡排序的 Python 代码实现:```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n i 1):if arrj > arrj + 1 :arrj, arrj + 1 = arrj + 1, arrj```2、快速排序快速排序是对冒泡排序的一种改进。

它采用了分治的策略,通过选择一个基准元素,将待排序的序列分割成两个子序列,其中一个子序列的所有元素都小于等于基准元素,另一个子序列的所有元素都大于等于基准元素,然后对这两个子序列分别进行快速排序。

以下是快速排序的 Python 代码实现:```pythondef quick_sort(arr, low, high):if low < high:pi = partition(arr, low, high)quick_sort(arr, low, pi 1)quick_sort(arr, pi + 1, high)def partition(arr, low, high):pivot = arrhighi =(low 1)for j in range(low, high):if arrj <= pivot:i = i + 1arri, arrj = arrj, arriarri + 1, arrhigh = arrhigh, arri + 1return (i + 1)```(二)搜索算法的实现与比较1、顺序搜索顺序搜索是一种最简单的搜索算法,它从数组的开头开始,依次比较每个元素,直到找到目标元素或者遍历完整个数组。

太原理工数据结构实验报告完整版

太原理工数据结构实验报告完整版

实验名称:线性表一.目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。

要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。

二.例题[问题描述]用链表形式存储一个字符串,插入、删除某个字符,最后按正序、逆序两种方式输出字符串。

[输入]初始字符串,插入位置,插入字符,删除字符。

[输出]已建立链表(字符串),插入字符后链表,删除字符后链表,逆转后链表。

[存储结构]采用链式存储结构[算法的基本思想]建立链表:当读入字符不是结束符时,给结点分配存储空间,写数据域,将新结点插到表尾;插入字符:根据读入的字符在链表中找插入位置,将新结点插入到该位置之前;删除字符:根据读入的删除字符在链表中找到被删结点后,将其从链表中删除;链表逆转:从链表的第一个结点开始对所有结点处理,将每个结点的前驱变为它的后继;打印链表:从链表的第一个结点开始,依次打印各个结点的数据域。

[参考源程序]#define NULL 0typedef struct node{char a;struct node *link;}node,*nodelink;void readlink(nodelink head){nodelink p,q;char c;p=head;printf("Input a linktable(a string):");scanf("%c",&c);if (c=='\n') printf("This string is empty。

");while(c!='\n'){q=(nodelink)malloc(sizeof(node));q->a=c;p->link=q;p=q;scanf("%c",&c);}p->link=NULL;}void writelink(nodelink head){nodelink q;if (head->link==NULL) printf(" This link is empty。

常见算法设计实验报告(3篇)

常见算法设计实验报告(3篇)

第1篇一、实验目的通过本次实验,掌握常见算法的设计原理、实现方法以及性能分析。

通过实际编程,加深对算法的理解,提高编程能力,并学会运用算法解决实际问题。

二、实验内容本次实验选择了以下常见算法进行设计和实现:1. 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序。

2. 查找算法:顺序查找、二分查找。

3. 图算法:深度优先搜索(DFS)、广度优先搜索(BFS)、最小生成树(Prim算法、Kruskal算法)。

4. 动态规划算法:0-1背包问题。

三、实验原理1. 排序算法:排序算法的主要目的是将一组数据按照一定的顺序排列。

常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。

2. 查找算法:查找算法用于在数据集中查找特定的元素。

常见的查找算法包括顺序查找和二分查找。

3. 图算法:图算法用于处理图结构的数据。

常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最小生成树(Prim算法、Kruskal算法)等。

4. 动态规划算法:动态规划算法是一种将复杂问题分解为子问题,通过求解子问题来求解原问题的算法。

常见的动态规划算法包括0-1背包问题。

四、实验过程1. 排序算法(1)冒泡排序:通过比较相邻元素,如果顺序错误则交换,重复此过程,直到没有需要交换的元素。

(2)选择排序:每次从剩余元素中选取最小(或最大)的元素,放到已排序序列的末尾。

(3)插入排序:将未排序的数据插入到已排序序列中适当的位置。

(4)快速排序:选择一个枢纽元素,将序列分为两部分,使左侧不大于枢纽,右侧不小于枢纽,然后递归地对两部分进行快速排序。

(5)归并排序:将序列分为两半,分别对两半进行归并排序,然后将排序好的两半合并。

(6)堆排序:将序列构建成最大堆,然后重复取出堆顶元素,并调整剩余元素,使剩余元素仍满足最大堆的性质。

2. 查找算法(1)顺序查找:从序列的第一个元素开始,依次比较,直到找到目标元素或遍历完整个序列。

太原理工软件工程实习报告

太原理工软件工程实习报告

太原理工软件工程实习报告一、实习背景与目的随着信息技术的快速发展,软件工程成为现代科技领域中的重要研究方向。

为了提高自身的实践能力和专业素养,我选择了太原理工大学的软件工程实习项目。

本次实习旨在通过实际操作,深入了解软件开发流程,掌握软件工程的核心技术,并培养团队合作和解决问题的能力。

二、实习内容与过程在实习期间,我参与了太原理工大学软件实验室的一个实际项目开发。

以下是实习的主要内容与过程:1. 项目启动:在实习的开始阶段,导师为我们介绍了项目的背景和需求。

我们通过讨论和分析,明确了项目的目标、功能要求和性能要求。

2. 需求分析:我们小组成员共同参与需求分析工作,通过与导师和客户的沟通,明确了用户需求和系统功能。

我们使用UML图和用例图工具,对系统的功能进行详细的描述和文档化。

3. 设计阶段:在需求分析的基础上,我们开始进行系统设计。

我负责设计和实现系统的数据库部分,包括数据库表的创建、关系的建立和SQL语句的编写。

4. 编码阶段:根据设计文档,我开始编写代码。

我使用了Java语言和MySQL数据库,实现了系统的核心功能。

在编码过程中,我注重代码的可读性和可维护性,遵循了软件工程的最佳实践。

5. 测试阶段:在编码完成后,我们进行了系统的测试。

我负责编写测试用例,并与其他成员一起进行测试。

我们发现了一些问题,并通过调试和优化,解决了这些问题。

6. 项目总结与汇报:在项目完成后,我们进行了项目总结和汇报。

我向导师和同学们展示了自己的工作成果,并分享了在实习过程中的收获和体会。

三、实习收获与反思通过本次实习,我对软件工程的核心技术和开发流程有了更深入的了解。

我掌握了UML图和用例图的使用,熟悉了Java语言和MySQL数据库的操作。

同时,我也学会了团队合作和解决问题的能力。

在实习过程中,我也意识到了自己在一些方面的不足之处。

例如,我在需求分析阶段的沟通能力和表达能力有待提高。

此外,我在代码编写和调试过程中,还需要更加注重细节和规范,以提高代码的质量和稳定性。

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

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

printf("%lf ",x[i]);printf("\n");}int _tmain(int argc, _TCHAR* argv[]){double a[3][4],x[3]={0,0,0},d[3];for(int i=0;i<3;i++)for(int j=0;j<4;j++)scanf("%lf",&a[i][j]);shuchu(x);do{x[0]=(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0];x[1]=(a[1][3]-a[1][0]*x[0]-a[1][2]*x[2])/a[1][1];x[2]=(a[2][3]-a[2][0]*x[0]-a[2][1]*x[1])/a[2][2];d[0]=abs((a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-x[0]);d[1]=abs((a[1][3]-a[1][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[1][2]*x[2]) /a[1][1]-x[1]);d[2]=abs((a[2][3]-a[2][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[2][1]*(a[1] [3]-a[1][0]*(a[0][3]-a[0][1]*x[1]-a[0][2]*x[2])/a[0][0]-a[1][2]*x[2])/a[1][1])/a[2][2]-x[2]);shuchu(x);}while(d[0]>0.5e-5&&d[1]>0.5e-5&&d[2]>0.5e-5);system("pause");return 0;}实验结果与分析1.列主元素消元法2.完全组元素消元法3.LU分解法4.高斯-赛德尔迭代法讨论、心得(可选):了解Gauss消元法、LU分解法、追赶法等线性方程组直接求解的基本方法、基本原理;能够按照工程实际要求,选择适当的算法;通过编写程序,进行算法设计和数值求解,了解雅可比迭代法、高斯-赛德尔迭代法等线性方程组迭代求解的基本方法、基本原理,能够按照工程实际要求,选择适当的算法,通过编写程序,进行算法设计和数值求解。

太原理工大学操作系统实验报告课案

太原理工大学操作系统实验报告课案

课程名称:实验项目:操作系统 B 操作系统实验实验地点:逸夫楼专业班级:软件 14班学生姓名:学号: 2014指导教师:张辉2016年12月2日目录 ......................................................................................................................................................... 错误!未定义书签。

实验一几种操作系统的界面 (3)一.目的和要求 (3)二.内容 (3)三.程序代码 (4)四.运行结果 (4)实验二进程调度程序设计 (5)一、目的和要求 (5)二、示例 (6)程序清单 (9)运行结果 (9)实验三存储管理程序设计................................................ 错误!未定义书签。

一、目的和要求 ..................................................................................................... 错误!未定义书签。

二、提示................................................................................................................................. 错误!未定义书签。

三.流程图 ....................................................................................................................... 错误!未定义书签。

程序代码................................................................................................................................. 错误!未定义书签。

关于算法的实验报告(3篇)

关于算法的实验报告(3篇)

第1篇一、实验目的1. 理解快速排序算法的基本原理和实现方法。

2. 掌握快速排序算法的时间复杂度和空间复杂度分析。

3. 通过实验验证快速排序算法的效率。

4. 提高编程能力和算法设计能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 开发工具:Visual Studio 2019三、实验原理快速排序算法是一种分而治之的排序算法,其基本思想是:选取一个基准元素,将待排序序列分为两个子序列,其中一个子序列的所有元素均小于基准元素,另一个子序列的所有元素均大于基准元素,然后递归地对这两个子序列进行快速排序。

快速排序算法的时间复杂度主要取决于基准元素的选取和划分过程。

在平均情况下,快速排序的时间复杂度为O(nlogn),但在最坏情况下,时间复杂度会退化到O(n^2)。

四、实验内容1. 快速排序算法的代码实现2. 快速排序算法的时间复杂度分析3. 快速排序算法的效率验证五、实验步骤1. 设计快速排序算法的C++代码实现,包括以下功能:- 选取基准元素- 划分序列- 递归排序2. 编写主函数,用于生成随机数组和测试快速排序算法。

3. 分析快速排序算法的时间复杂度。

4. 对不同规模的数据集进行测试,验证快速排序算法的效率。

六、实验结果与分析1. 快速排序算法的代码实现```cppinclude <iostream>include <vector>include <cstdlib>include <ctime>using namespace std;// 生成随机数组void generateRandomArray(vector<int>& arr, int n) {srand((unsigned)time(0));for (int i = 0; i < n; ++i) {arr.push_back(rand() % 1000);}}// 快速排序void quickSort(vector<int>& arr, int left, int right) { if (left >= right) {return;}int i = left;int j = right;int pivot = arr[(left + right) / 2]; // 选取中间元素作为基准 while (i <= j) {while (arr[i] < pivot) {i++;}while (arr[j] > pivot) {j--;}if (i <= j) {swap(arr[i], arr[j]);i++;j--;}}quickSort(arr, left, j);quickSort(arr, i, right);}int main() {int n = 10000; // 测试数据规模vector<int> arr;generateRandomArray(arr, n);clock_t start = clock();quickSort(arr, 0, n - 1);clock_t end = clock();cout << "排序用时:" << double(end - start) / CLOCKS_PER_SEC << "秒" << endl;return 0;}```2. 快速排序算法的时间复杂度分析根据实验结果,快速排序算法在平均情况下的时间复杂度为O(nlogn),在最坏情况下的时间复杂度为O(n^2)。

最新太原理工大学算法实验报告

最新太原理工大学算法实验报告
本科实验报告
课程名称:算法设计与分析
实验项目:算法设计与分析实验
实验地点:致远楼403
专业班级:学号:
学生姓名:
指导教师:
2017年3月28日
实验一分治法合并排序
一、实验目的
1.掌握合并排序的基本思想
2.掌握合并排序的实现方法
3.学会分析算法的时间复杂度
4.学会用分治法解决实际问题
二、实验内容
随机产生一个整型数组,然后用合并排序将该数组做升序排列,要求输出排序前和排序后的数组。
一、实验目的
1.掌握贪心算法的基本思想
2.掌握贪心算法的典型问题求解
3.进一步多机调度的基本思想和算法设计方法
4.学会用贪心法分析和解决实际问题
二、实验内容
设计贪心算法实现作业调度,要求按作业调度顺序输出作业序列。如已知n=8,效益p=(35, 30, 25, 20, 15, 10, 5, 1),时间期限d=(4, 2, 4, 5, 6, 4, 5, 7),求该条件下的最大效益。
cout<<"未排序的数组为:";
for(int j=0;j<10;j++)
cout<<arr[j]<<" ";
cout<<endl;
mergeSort(arr,10);
cout<<"经过排序的数组为:";
for(int i=0;i<9;i++)
cout<<arr[i]<<" ";
cout<<endl;
{
T *aux=new T[r-l+1];

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

太原理工大学计算机数值方法实验报告
2、实验内容和原理:
(1)Gauss消元法:基本思想为:对于n阶线性方程组,只要各步主元素不为0,经过n-1步消元,就可以得到一个等价的的系数矩阵为上三角形矩阵的方程组,然后再利用回代过程即可求得原方程的解。时间复杂度约为O(n3)。
(2)Gauss列主元素消元法:基本思想:在用高斯消元法求解方程组时,用作除法的小主元素可能使舍入误差增加,因此需要考虑依次按列选主元素,然后换行使之变到主元素位置上,再进行消元计算。
m=m+A[i][j]*x0[j];
x1[i]=(A[i][n+1]-m)/A[i][i];
}lf\n",i,x1[i]);
return 0;
}
(2)高斯赛德尔迭代法:
#include<>
#include<>
int main()
{
double e,m,q,A[12][12],x0[12],x1[12];/*x[0]和x[1]分别表示第k次和第k+1次迭代结果,且初始x[0]=0*/
1、实验目的和要求:
(1)实验目的:使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。
10X1-X2-2X3=
-X1+10X2-2X3=
-X1-X2+5X3=
(2)实验要求:
1.应用C,C++或JAVA编出通用程序,源程序要有详细的注释和说明;
2.比较计算结果,对不同方法进行比较分析;
3.实验完成,提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。
(1)实验目的:合理利用Gauss消元法、LU分解法求解下列方程组:
++=

太原理工大学软件测试方法和技术实验报告

太原理工大学软件测试方法和技术实验报告

太原理工大学学生实验报告
学院名称计算机科学与技术专业班级软件工程实验成绩
学生姓名学号实验日期
课程名称软件测试方法和技术实验题目使用白盒测试方法测试程序段
一、实验目的
通过实验主要掌握用白盒法中的逻辑覆盖测试技术设计测试用例以及测试流程图的绘制。

二、实验内容
测试以下程序段
Void DoWork(int x,int y,int z)
{
1 int k=0,j=0;
2 if((x>0)&&(z<10))
3 {
4 k=x*y-1;
5 j=sqrt(k);
6 }
7 if((x==4)||(y>5))
8 j=x*y+10;
9 j=j%3;
10 }
三、实验要求
说明:程序段中每行开头的数字(1-10)是对每条语句的编号。

a 画出程序的控制流图(用题中给出的语句编号表示)。

b分别用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。

1)语句覆盖
从流程图看出,程序具有4条路径:
L1:(a-b-d)。

太原理工大学算法与分析实验报告

太原理工大学算法与分析实验报告
本科实验报告
课程名称:算法设计与分析
实验项目:分治法,贪心法,动态规划法,回溯法
2016年6月6日
实验1分治法合并排序
一、实验目的
1.掌握合并排序的基本思想
2.掌握合并排序的实现方法
3.学会分析算法的时间复杂度
4.学会用分治法解决实际问题
二、实验内容
随机产生一个整型数组,然后用合并排序将该数组做升序排列,要求输出排序前和排序后的数组。
for(r=0;r<=n;r++)
{
if(c[j][r]!=MAX)
{
if((c[j][r]+cost[r])<min) //找到最小的r
{
min=c[j][r]+cost[r];
temp=r;
}
}
}
cost[j]=c[j][temp]+cost[temp];
d[j]=temp;
}
path[1]=1;
实验3动态规划法求多段图问题
一、实验目的
1.掌握动态规划算法的基本思想
2.掌握多段图的动态规划算法
3.选择邻接表或邻接矩阵方式来存储图
4.分析算法求解的复杂度
二、实验内容
设G=(V,E)是一个带权有向图,其顶点的集合V被划分成k>2个不相交的子集Vi,1<i<=k,其中V1和Vk分别只有一个顶点s(源)和一个顶点t(汇)。图中所有边的始点和终点都在相邻的两个子集Vi和Vi+1中。求一条s到t的最短路线。参考课本P124图7-1中的多段图,试选择使用向前递推算法或向后递推算法求解多段图问题。
using namespace std;
int c[n][n];

太原理工大学算法设计与分析实验报告资料

太原理工大学算法设计与分析实验报告资料
NQueen(0,n,x);
}
int main(){
int x[N];
for(int i = 0;i<N;i++)
*(x+i) = -10;
for(int j = 0;j<k;j++)
if(x[j] == i || abs(x[j]-i) == abs(j-k))
return false;
return true;
}
void NQueen(int k,int n,int *x){
for(int i = 0;i<n;i++)
if(Place(k,i,x)){
//如果最大期限那一天还未安排作业,则将当前作业安排在所允许的最大期限那天
res[Time] = Work[i];
flag[Time] = true;
}
else {
//如果当前作业所允许的最大期限那一天已经安排的其他作业,就向前搜索空位,将该作业安排进去
for (int j = Time - 1; j >= 0; j--)
int j;
for (j = 0; j<7; j++)
maxReap += res[j];
cout << maxReap << endl;
}
HomeWork(){
int i;
for(i = 0;i<8;i++)
flag[i] = false;maxRFra bibliotekap = 0;
}
};
void main() {
HomeWork a = HomeWork();

太原理工算法实验报告

太原理工算法实验报告

本科实验报告课程名称:《算法设计与分析》实验地点:行知B222专业班级:软件1321 学号:2013005351 学生姓名:乔冠宇指导教师:李建林2015年4月20日实验一分治法合并排序一、实验目的1.掌握合并排序的基本思想2.掌握合并排序的实现方法3.学会分析算法的时间复杂度4.学会用分治法解决实际问题二、实验内容随机产生一个整型数组,然后用合并排序将该数组做升序排列,要求输出排序前和排序后的数组。

三、实验环境程序设计语言:c++编程工具:microsoft visual studio 2010四、算法描述和程序代码#include <iostream.h>struct {int r[50];int length;}SqList, L;void MSort(int SR[], int TR1[], int s, int t);void Merge(int sR[], int TR[], int i, int m ,int n);int LQ1(int a, int b);void main(){cout<<"请输入待排序的数目:";cin>>L.length;cout<<"请输入待排序的数:";for(int c = 0; c < L.length; c++)cin>>L.r[c];MSort(L.r,L.r,0,L.length-1);cout<<"排序后的数为:";for(int i3 = 0; i3 < L.length; i3++)cout<<L.r[i3]<<" ";cout<<endl;}void MSort(int SR[], int TR1[], int s, int t){int m;int TR2[100];if(s == t)TR1[s] = SR[s];else {m = (s + t)/2;MSort(SR, TR2, s, m);MSort(SR, TR2, m+1, t);Merge(TR2, TR1, s, m, t);}}void Merge(int SR[], int TR[], int i, int m ,int n) {int j,k;for(j = m + 1, k = i; i <= m && j <= n; ++k){if(SR[i] <= SR[j])TR[k] = SR[i++];elseTR[k] = SR[j++];}if(i <= m){int k1 = k;for(int i1 = i; i1 <= m; i1++){TR[k1] = SR[i1];k1++;}}if(j <= n){int k2 = k;for (int j2 = j; j2 <= n; j2++){TR[k2] = SR[j2];k2++;}}}五、实验结果截图六、实验总结归并排序算法是用分治法实现对规模为n的记录的序列进行排序。

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

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

太原理工大学数值计算方法实验报告本科实验报告课程名称:计算机数值方法实验项目:方程求根、线性方程组的直接解法、线性方程组的迭代解法、代数插值和最小二乘拟合多项式实验地点:行勉楼专业班级: ******** 学号: *********学生姓名: ******** 指导教师:李誌,崔冬华2016年 4 月 8 日学生姓名实验成绩实验名称实验一方程求根实验内容和要求熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。

选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-x n|<0.5×10-5(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。

(2)加深对方程求根方法的认识,掌握算法。

(3)会进行误差分析,并能对不同方法进行比较。

实验原理1.二分法:如果要求已知函数 f(x) = 0 的根 (x 的解),那先要找出一个区间 [a, b],使得f(a)与f(b)异号。

根据介值定理,这个区间内一定包含着方程式的根。

求该区间的中点m=(a+b)/2,并找出 f(m) 的值。

若 f(m) 与 f(a) 正负号相同,则取 [m, b] 为新的区间, 否则取 [a, m]。

重复第3步和第4步,直到得到理想的精确度为止。

2. 割线法是利用牛顿迭代法的思想,在根的某个领域内,函数有直至二阶的连续导数,并且不等于0,则在领域内选取初值x0,x1,迭代均收敛。

(1)在区间[m ,n]内输入初值x0,x1.(2)计算x2。

x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0))(3) x0=x1,x1=x2(4)判断是否达到精度,若是输出x1,若否执行(2)主要仪器设备HP计算机实验记录1.二分法// 方程求根(二分法).cpp : 定义控制台应用程序的入口点。

//#include "stdafx.h"#include"iostream"using namespace std;class Text{public:float x, y, a, b, c, n = 0;void Getab(){cout << "请输入计算区间:(以空格隔开)" << endl;cin >> a >> b;}float GetY(float x){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 : 定义控制台应用程序的入口点。

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

实验报告 实践报告□课程名称:算法设计与分析R 实验、实践名称:
实验、实践地点:
专业班级:软件班学号:
学生姓名:
指导教师:
2020年月日
五、实验结果截图
实验报告 实践报告□课程名称:算法设计与分析R 实验、实践名称:
实验、实践地点:
专业班级:软件班学号:
学生姓名:
指导教师:
2020年月日
九、实验结果截图
实验报告 实践报告□课程名称:算法设计与分析R 实验、实践名称:
实验、实践地点:
专业班级:软件班学号:
学生姓名:
指导教师:
2020年月日
十三、实验结果截图
实验报告 实践报告□课程名称:算法设计与分析R 实验、实践名称:
实验、实践地点:
专业班级:软件班学号:
学生姓名:
指导教师:
2020年月日
十七、实验结果截图。

相关文档
最新文档