算法与分析实验报告模板

算法与分析实验报告模板
算法与分析实验报告模板

贵州大学计算机科学与技术学院

计算机科学与技术系上机实验报告

课程名称:算法设计与分析班级:实验日期:YYYY-MM-DD

姓名:学号:指导教师:程欣宇

实验序号:一实验成绩:

一、实验名称

分治算法实验- 棋盘覆盖问题

二、实验目的及要求

1、熟悉递归算法编写;

2、理解分治算法的特点;

3、掌握分治算法的基本结构。

三、实验环境

Visual C++

四、实验内容

根据教材上分析的棋盘覆盖问题的求解思路,进行验证性实验;

要求完成棋盘覆盖问题的输入、分治求解、输出。有余力的同学尝试消去递归求解。

五、算法描述及实验步骤

分治算法原理:

分治算法将大的分解成形状结构相同的子问题,并且不断递归地分解,直到子问题规模小到可以直接求解。

棋盘覆盖问题描述:

在一个2k x 2k个方格组成的棋盘中恰有一个方格与其他的不同称为特殊方格,想要求利用四种L型骨牌(每个骨牌可覆盖三个方格)不相互重叠覆盖的将除了特殊方格外的其他方格覆盖。

实验步骤:

1、定义用于输入和输出的数据结构;

2、完成分治算法的编写;

3、测试记录结构;

4、有余力的同学尝试不改变输入输出结构,将递归消除,并说明能否不用栈,直接消除递归,为什么?

六、调试过程及实验结果

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果。

七、总结

对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。

八、附录

源程序(核心代码)清单或使用说明书,可另附纸

贵州大学计算机科学与技术学院

计算机科学与技术系上机实验报告

课程名称:算法设计与分析班级:实验日期:2014-11-25

姓名:学号:指导教师:程欣宇

实验序号:二实验成绩:

一、实验名称

动态规划实验- 滑雪问题

二、实验目的及要求

1、学会使用在线测评的算法题目评分系统;

2、通过直观的应用问题,加深对动态规划算法的理解;

三、实验环境

任意C或C++编写调试工具,北京大学ICPC在线测评系统POJ

四、实验内容

1、找到题号为1088的题目-滑雪,阅读题目,建立其最优解的递归表达式;

3、使用备忘录式的动态规划算法,实现本题;

4、进行简单测试,完成之后提交到POJ系统。

五、算法描述及实验步骤

动态规划算法原理:

分治算法将大的问题变成小的问题来解决,但是如果划分过程中出现重叠子问题,就可能导致大量的重复计算。为了避免这些重复的计算,可以考虑的一个办法就是动态规划算法。

为了使用动态规划算法,问题还必须具备最优子结构,即问题的最优解包含了子问题的最优解。

滑雪问题描述:

Michael喜欢滑雪百这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在

上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。

Input

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

Output

输出最长区域的长度。

实验步骤:

1、建立滑雪问题的解的递归表达式

请建立!

2、构造算法框架

请构造!

3、分析出算法复杂度

请分析!

六、调试过程及实验结果

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果。

七、总结

对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。

八、附录

#include

#include

int R, C;

int a[101][101];

//各点高度

int f[101][101];

//各点最大滑雪长度

inline int max(int a, int b){ //inline表示编译时直接嵌入至调用处,节省调用函数的时间return a>b?a:b;

}

inline int max(int a, int b, int c, int d){

return max(max(a, b), max(c, d));

}

int dfs(int row, int col, int h){ //递归深搜

if(row < 1 || row > R || col < 1 || col > R || h <= a[row][col]) //超出范围或上一点高度低于该点高度

return 0; //则返回0

if(f[row][col] >= 0) //如果已经搜索过

return f[row][col]; //则直接返回该点最大化学长度

f[row][col] = max(dfs(row - 1, col, a[row][col]), dfs(row, col + 1, a[row][col]), dfs(row + 1, col, a[row][col]), dfs(row, col - 1, a[row][col])) + 1; //动规,当前最大滑雪长度为四周比该点低的最大滑雪长度加1

return f[row][col]; }

int main()

{ int T, i, j;

scanf("%d", &T);

while(T--)

{ int max = 0;

memset(f, -1, sizeof(f));

scanf("%d%d", &R, &C);

for(i = 1; i <= R; ++i)

{ for(j = 1; j <= R; ++j)

{ scanf("%d", &a[i][j]); }

} for(i = 1; i <= R; ++i)

{ for(j = 1; j <= R; ++j)

{ int num = dfs(i, j, 0xffffff); //通过16进制0xffffff方便地给出一个足够大的int型

if(max < num) max = num; }

} printf("%d\n", max); }

return 0; }

贵州大学计算机科学与技术学院

计算机科学与技术系上机实验报告

课程名称:算法设计与分析班级:124班(12级)实验日期:2014-12-02

姓名:何航学号:1208060365 指导教师:程欣宇

实验序号:三实验成绩:

一、实验名称

贪心算法实验- 包装问题

二、实验目的及要求

1、使用在线测评的算法题目评分系统来测试所写代码;

2、通过直观的应用问题,加深对贪心算法的理解;

三、实验环境

任意C或C++编写调试工具,北京大学ICPC在线测评系统POJ

四、实验内容

1、登陆POJ系统,找到题号为1017的题目-包装;

2、阅读题目,分析出求解该问题的思路;

3、使用贪心算法,实现本题;

4、进行简单测试,完成之后提交到POJ系统。

五、算法描述及实验步骤

贪心算法原理:

贪心算法通过一系列的选择来达到子问题的解。它所做的每一步选择都是当前状态下局部最好选择,即贪心选择。这种启发式的策略虽不能总是奏效,但大多数情况下确能达到预期目的,得到最优解。

要使用贪心算法,问题必须具备两个基本要素。贪心选择性质和最优子结构性质。贪心选择性质指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。通常采用自顶向下的方式进行,这样每做一次贪心选择就将所求问题化为规模更小的子问题。当然,前提是所求问题本身的最优解包含其子问题的最优解,即具有最优子结构性质。

包装问题描述:

有一个工厂生产一种长宽为1*1、2*2、3*3、4*4、5*5、6*6的产品,这些产品交付到客户手中都是用6*6的包裹包装。因为费用问题,工厂希望使用最少的包裹寄送给订购货物的客户。一个好的程序能够根据订单找到最少需要的包裹数量。你被要求写这样一个程序。

输入

输入文件由若干行组成,每一行市一个订单,所有的订单都由6个整数组成,分别对应1*1产品到6*6产品的需求量。输入文件的最后一行由6个0组成。

输出

输出文件的每一行对应输入文件的每一行,它包含了最少需要的包裹数量。

输入示例

0 0 4 0 0 1 //4个3*3的产品和1个6*6的产品

7 5 1 0 0 0 //7个1*1的产品、5个2*2的产品和1个3*3的产品

0 0 0 0 0 0 //0结束

输出示例

2 //至少需要2个包裹

1 //至少需要1个包裹

实验步骤:

1、建立包装问题的解题思路

装箱问题,利用贪心的思想,从最大的开始装

6×6,5×5和4×4的每个都需要一个箱子

5×5的和11个1×1的装一起,4×4的和5个2×2的装一起

3×3的分4种情况

1.正好装满

2.剩一个,则装5个2×2的,7个1×1的

3.剩两个,则装3个2×2,6个1×1的

4.剩三个,则装1个2×2的,5个1×1的

还要多余的2×2的,装完后用1×1的填充

若2×2的不够,原来用2×2的用1×1的填充

2、构造算法框架

3、分析出算法复杂度

六、调试过程及实验结果

七、总结

对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。

八、附录

#include

#include

using namespace std;

int main()

{

int p[4]={0,5,3,1},a[10]; //3×3的放完后,余下的放入新箱子后,还可以放几个2×2的包裹(下标对应余数)

while(1)

{

int sum=0;

for(int i=1;i<=6;i++)

{

scanf("%d",&a[i]);

sum+=a[i];

}

if(sum==0)

break;

sum=0;

sum=a[4]+a[5]+a[6]+(a[3]+3)/4; //6*6,5*5,4*4每个都要用一个箱子(画图),3×3的对4向上取整

int need2=a[4]*5+p[a[3]%4]; //需要的2×2的个数

if(need2

sum+=(a[2]-need2+8)/9;

int need1=sum*36-a[2]*4-a[3]*9-a[4]*16-a[5]*25-a[6]*36; //需要的1×1的个数,即所有箱子的总面积减去后5种盒子的总面积

if(need1

sum+=(a[1]-need1+35)/36; //上取整

printf("%d\n",sum);

}

return 0;

}

贵州大学计算机科学与技术学院

计算机科学与技术系上机实验报告

课程名称:算法设计与分析班级:实验日期:YYYY-MM-DD

姓名:学号:指导教师:程欣宇

实验序号:四实验成绩:

一、实验名称

回溯算法实验- 频道分配问题

二、实验目的及要求

1、使用在线测评的算法题目评分系统来测试所写代码;

2、通过直观的应用问题,加深对回溯算法的理解;

三、实验环境

任意C或C++编写调试工具,北京大学ICPC在线测评系统POJ

四、实验内容

1、登陆POJ系统,找到题号为1129的题目-频道分配;

2、阅读题目,分析出求解该问题的思路;

3、使用回溯算法,实现本题;

4、进行简单测试,完成之后提交到POJ系统。

五、算法描述及实验步骤

回溯算法原理:

回溯法是一个既带有系统性又带有跳跃性的搜索算法,用它可以系统地搜索一个问题的所有解或任一解。它在问题的解空间树中,按深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先策略搜索。

回溯法求问题的所有解时,要回溯到根,且根结点的所有子树都已经被搜索遍才结束。回溯法求问题的一个解时,只要搜索到问题的一个解就可结束。

频道分配问题描述:

当一个无线站广播覆盖一个非常大的区域时,需要使用转发器转发增强信号。然而,每个转发器使用的频道数必须仔细的选择,以使得相邻的转发器之间不会相互干扰。它们相互不干扰的条件是相邻的转发器使用不同的频道。

因为无线频谱是非常稀有的资源,因此,所给的转发器网络使用的频道数量必须最小化。你需要写一个程序读出转发器网络的描述,然后算出最小需要的频道数量。

注意:邻接关系具有对称性,如果A邻接B,则B邻接A。另外,因为转发器网络是平面的,所以通道不会交叉。

输入

输入由若干转发器网络的地图组成。每个地图的第一个行是转发器数量(1至26,用0表示输入结束)。每个转发器由字母A至Z标识,每行列出和一个转发器邻接的相邻转发器。

输出

对于每一个转发器网络地图,输出最少占用的频道数量(注意单复数)。

例子输入

2

A:

B:

4

A:BC

B:ACD

C:ABD

D:BC

4

A:BCD

B:ACD

C:ABD

D:ABC

例子输出

1 channel needed.

3 channels needed.

4 channels needed.

实验步骤:

1、建立频道分配问题的解题思路

请建立!

2、构造算法框架

请构造!

3、分析出算法复杂度

请分析!

六、调试过程及实验结果

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果。

七、总结

对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。

八、附录

源程序(核心代码)清单或使用说明书,可另附纸

贵州大学计算机科学与技术学院

计算机科学与技术系上机实验报告

课程名称:算法设计与分析班级:实验日期:YYYY-MM-DD

姓名:学号:指导教师:程欣宇

实验序号:五实验成绩:

一、实验名称

分支限界法实验- 抓住那头奶牛

二、实验目的及要求

1、使用在线测评的算法题目评分系统来测试所写代码;

2、通过直观的应用问题,加深对分支限界算法的理解;

三、实验环境

任意C或C++编写调试工具,北京大学ICPC在线测评系统POJ

四、实验内容

1、登陆POJ系统,找到题号为3278的题目-抓住那头奶牛;

2、阅读题目,分析出求解该问题的思路;

3、使用分支限界算法,实现本题;

4、进行简单测试,完成之后提交到POJ系统。

五、算法描述及实验步骤

分支界限算法原理:

分支界限法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。问题的解空间树是表示问题解空间的一棵有序树。在搜索问题的解空间树时,分支界限法与回溯法的主要区别在于它们对当前扩展结点所采用的扩展方式不同。在分支界限法中,每一个活结点只有一次机会扩展结点。活结点一旦成为扩展结点,便一次性产生其所有儿子结点。在这些儿子结点中,舍弃掉不可行解或导致非最优解的儿子结点,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复此结点扩展过程,直到找出所求解或活结点表为空时为止。

抓奶牛问题描述:

农夫约翰被告知逃跑的奶牛的位置,并且要求立即去抓住她。约翰开始的位置在数轴上位置N(0 ≤ N≤ 100,000),而奶牛的位置在同样一个数轴上的K(0 ≤ K≤ 100,000)。约翰有两种移动方式:步行和瞬间移动。

*步行: 从任意一点X移动到X+1或者X-1,花一分钟。

*瞬间移动: 从任意一点X移动到2X,花一分钟。

如果奶牛没有意识到被抓捕,也就不会移动,最短时间是多少?农夫会抓到奶牛?

输入

一行:用空格分开的两个整数:N和K

输出

一行: 农夫抓到奶牛需要的最少分钟数。

例子输入

5 17

例子输出

4

实验步骤:

1、建立抓奶牛问题的解题思路

请建立!

2、构造算法框架

请构造!

3、分析出算法复杂度

请分析!

六、调试过程及实验结果

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果。

七、总结

对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。

八、附录

#include

using namespace std;

int dir[3][2]={{1,1},{1,-1},{2,0}};//方向数组

int N,K,a[1000000],vis[1000000],step[1000000];

//起点终点队列数组标记数组步数 //数组开小了悲剧了两天我日!!!void bfs(int i)

{

int front,rear,x,k;

front=0;rear=0;

a[rear++]=i;

vis[i]=1;

step[i]=0;

while(front

{

i=a[front++];

for(k=0;k<3;k++)

{

x=i*dir[k][0]+dir[k][1];

if(!vis[x]&&x>=0&&x<=100000)

{

if(x==K)

{

step[x]=step[i]+1;

return;

}

else

{

vis[x]=1;

a[rear++]=x;

step[x]=step[i]+1;

}

}

}

}

}

int main()

{

cin>>N>>K;

memset(vis,0,sizeof(vis)); memset(step,0,sizeof(step)); memset(a,0,sizeof(a));

bfs(N);

printf("%d",step[K]);

//system("pause");

}

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

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

红外光谱(FTIR)实验报告

红外光谱仪调查及实验报告 第一部分红外光谱仪调查 1.1 简介 傅里叶红外光谱仪: 全名为傅里叶变换红外光谱仪(Fourier Transform Infrared Spectrometer,FTIR Spectrometer),是基于对干涉后的红外光进行傅里叶变换的原理而开发的红外光谱仪,主要由红外光源、光阑、干涉仪(分束器、动镜、定镜)、样品室、检测器以及各种红外反射镜、激光器、控制电路板和电源组成。傅里叶红外光谱仪不同于色散型红外分光的原理,可以对样品进行定性和定量分析,广泛应用于医药化工、地矿、石油、煤炭、环保、海关、宝石鉴定、刑侦鉴定等领域。 滤光片型近红外光谱仪器: 滤光片型近红外光谱仪器以滤光片作为分光系统,即采用滤光片作为单色光器件。滤光片型近红外光谱仪器可分为固定式滤光片和可调式滤光片两种形式,其中固定滤光片型的仪器时近红外光谱仪最早的设计形式。仪器工作时,由光源发出的光通过滤光片后得到一宽带的单色光,与样品作用后到达检测器。 色散型近红外光谱仪器: 色散型近红外光谱仪器的分光元件可以是棱镜或光栅。为获得较高分辨率,现代色散型仪器中多采用全息光栅作为分光元件,扫描型仪器通过光栅的转动,使单色光按照波长的高低依次通过样品,进入检测器检测。根据样品的物态特性,可以选择不同的测样器件进行投射或反射分析。 傅里叶变换型近红外光谱仪器: 傅里叶变换近红外分光光度计简称为傅里叶变换光谱仪,它利用干涉图与光谱图之间的对应关系,通过测量干涉图并对干涉图进行傅里叶积分变换的方法来测定和研究近红外光谱。其基本组成包括五部分:①分析光发生系统,由光源、分束器、样品等组成,用以产生负载了样品信息的分析光;②以传统的麦克尔逊干涉仪为代表的干涉仪,以及以后的各类改进型干涉仪,其作用是使光源发出的光分为两束后,造成一定的光程差,用以产生空间(时间)域中表达的分析光,即干涉光;③检测器,用以检测干涉光;④采

算法设计与分析实验报告贪心算法

算法设计与分析实验报告 贪心算法 班级:2013156 学号:201315614 姓名:张春阳哈夫曼编码 代码 #include float small1,small2; int flag1,flag2,count; typedefstructHuffmanTree { float weight; intlchild,rchild,parent; }huffman; huffmanhuffmantree[100]; void CreatHuffmanTree(intn,int m) { inti; void select(); printf("请输入%d个节点的权值:",n); for(i=0;i

printf("\n"); for(i=0;i

计算方法上机实验报告

. / 《计算方法》上机实验报告 班级: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 四、运行结果:

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

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 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.掌握红外光谱分析的基础实验技术 3.学会用傅立叶变换红外光谱仪进行样品测试 4.掌握几种常用的红外光谱解析方法 三、【实验要求】 利用所学过的红外光谱知识对碳酸钙、聚乙烯醇、丙三醇、乙醇的定性分析制定出合理的样品制备方法;并对其谱图给出基本的解析。 四、【实验原理】 红外光是一种波长介于可见光区和微波区之间的电磁波谱。波长在0.78~300μm。通常又把这个波段分成三个区域,即近红外区:波长在0.78~2.5μm(波数在12820~

4000cm-1),又称泛频区;中红外区:波长在2.5~25μm(波数在4000~400cm-1),又称基频区;远红外区:波长在25~300μm(波数在400~33cm-1),又称转动区。其中中红外区是研究、应用最多的区域。 红外区的光谱除用波长λ表征外,更常用波数(wavenumber)σ表征。波数是波长的倒数,表示单位厘米波长内所含波的数目。其关系式为: 作为红外光谱的特点,首先是应用面广,提供信息多且具有特征性,故把红外光谱通称为"分子指纹"。它最广泛的应用还在于对物质的化学组成进行分析。用红外光谱法可以根据光谱中吸收峰的位置和形状来推断未知物的结构,依照特征吸收峰的强度来测定混合物中各组分的含量。其次,它不受样品相态的限制,无论是固态、液态以及气态都能直接测定,甚至对一些表面涂层和不溶、不熔融的弹性体(如橡胶)也可直接获得其光谱。它也不受熔点、沸点和蒸气压的限制,样品用量少且可回收,是属于非破坏分析。而作为红外光谱的测定工具-红外光谱仪,与其他近代分析仪器(如核磁共振波谱仪、质谱仪 等)比较,构造简单,操作方便,价格便宜。因此,它已成为现代结构化学、分析化学最常用和不可缺少的工具。根据红外光谱与分子结构的关系,谱图中每一个特征吸收谱带都对应于某化合物的质点或基团振动的形式。因此,特征吸收

北京理工大学《数据结构与算法设计》实验报告实验一

《数据结构与算法设计》 实验报告 ——实验一 学院: 班级: 学号: 姓名:

一、实验目的 1.通过实验实践、巩固线性表的相关操作; 2.熟悉VC环境,加强编程、调试的练习; 3.用C语言编写函数,实现循环链表的建立、插入、删除、取数据等基本操作; 4.理论知识与实际问题相结合,利用上述基本操作实现约瑟夫环。 二、实验内容 1、采用单向环表实现约瑟夫环。 请按以下要求编程实现: ①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。环表中的 结点编号依次为1,2,……,m。 ②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到 第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点 的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出 了这个环表的全部结点为止。 三、程序设计 1、概要设计 为实现上述程序功能,应用单向环表寄存编号,为此需要建立一个抽象数据类型:单向环表。 (1)、单向环表的抽象数据类型定义为: ADT Joseph{ 数据对象:D={ai|ai∈ElemSet,i=1,2,3……,n,n≥0} 数据关系:R1={ |ai∈D,i=1,2,……,n} 基本操作: create(&L,n) 操作结果:构造一个有n个结点的单向环表L。 show(L) 初始条件:单向环表L已存在。 操作结果:按顺序在屏幕上输出L的数据元素。 Josephf( L,m,s,n) 初始条件:单向环表L已存在, s>0,n>0,s

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

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、学习并掌握美国尼高立IR-6700型红外光谱仪的使用方法; 3、初步学会对红外吸收光谱图的解析。 二、实验原理 红外光是一种波长介于可见光区和微波区之间的电磁波谱。波长在0.75~1000μm 。通常又把这个波段分成三个区域,即近红外区:波长在0.75~2.5μm (波数在13300~4000cm -1),又称泛频区;中红外区:波长在 2.5~50μm (波数在4000~200cm -1),又称振动区;远红外区:波长在50~1000μm (波数在200~10cm -1),又称转动区。其中中红外区是研究、应用最多的区域。 红外区的光谱除用波长λ表征外,更常用波数σ表征。波数是波长的倒数,表示单位厘米波长内所含波的数目。其关系式为: )(10)(4 1 cm cm λσ=- 三、仪器和试剂 1、仪器: 美国尼高立IR-6700 2、试剂: 溴化钾,聚乙烯,苯甲酸 3、傅立叶红外光谱仪(FTIR)的构造及工作原理 计算机检测器样品室干涉仪光源?→??→??→??→? 四、实验步骤 1、打开红外光谱仪并稳定大概5分钟,同时进入对应的计算机工作站。 2、波数检验:将聚乙烯薄膜插入红外光谱仪的样品池处,从4000-650cm -1进行 波数扫描,得到吸收光谱。然后将所得的谱图与计算机上的标准谱图进行匹配,分析得到最吻合的图谱,即可判断物质结构。 3、测绘苯甲酸的红外吸收光谱——溴化钾压片法 取1-2mg 苯甲酸,加入在红外灯下烘干的100-200mg 溴化钾粉末,在玛瑙研钵中充分磨细(颗粒约2μm ),使之混合均匀。取出约80mg 混合物均匀铺洒在干净的压模内,于压片机上制成直径透明薄片。将此片装于固体样品架上,样品架插入红外光谱仪的样品池处,从4000-400cm -1进行波数扫描,得到吸收光谱。然后将所得的谱图与计算机上的标准谱图进行匹配。 4、结束实验,关闭工作站和红外光谱仪。

算法设计与实验报告讲解

算法设计与分析实验报告 学院:信息学院 专业:物联网1101 姓名:黄振亮 学号:20113379 2013年11月

目录 作业1 0-1背包问题的动态规划算法 (7) 1.1算法应用背景 (3) 1.2算法原理 (3) 1.3算法描述 (4) 1.4程序实现及程序截图 (4) 1.4.1程序源码 (4) 1.4.2程序截图 (5) 1.5学习或程序调试心得 (6) 作业2 0-1背包问题的回溯算法 (7) 2.1算法应用背景 (3) 2.2算法原理 (3) 2.3算法描述 (4) 2.4程序实现及程序截图 (4) 2.4.1程序源码 (4) 2.4.2程序截图 (5) 2.5学习或程序调试心得 (6) 作业3循环赛日程表的分治算法 (7) 3.1算法应用背景 (3) 3.2算法原理 (3) 3.3算法描述 (4) 3.4程序实现及程序截图 (4)

3.4.1程序源码 (4) 3.4.2程序截图 (5) 3.5学习或程序调试心得 (6) 作业4活动安排的贪心算法 (7) 4.1算法应用背景 (3) 4.2算法原理 (3) 4.3算法描述 (4) 4.4程序实现及程序截图 (4) 4.4.1程序源码 (4) 4.4.2程序截图 (5) 4.5学习或程序调试心得 (6)

作业1 0-1背包问题的动态规划算法 1.1算法应用背景 从计算复杂性来看,背包问题是一个NP难解问题。半个世纪以来,该问题一直是算法与复杂性研究的热点之一。另外,背包问题在信息加密、预算控制、项目选择、材料切割、货物装载、网络信息安全等应用中具有重要的价值。如果能够解决这个问题那么则具有很高的经济价值和决策价值,在上述领域可以获得最大的价值。本文从动态规划角度给出一种解决背包问题的算法。 1.2算法原理 1.2.1、问题描述: 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 形式化描述:给定c >0, wi >0, vi >0 , 1≤i≤n.要求找一n元向量(x1,x2,…,xn,), xi ∈{0,1}, ?∑ wi xi≤c,且∑ vi xi达最大.即一个特殊的整数规划问题。 1.2.2、最优性原理: 设(y1,y2,…,yn)是 (3.4.1)的一个最优解.则(y2,…,yn)是下面相应子问题的一个最优解: 证明:使用反证法。若不然,设(z2,z3,…,zn)是上述子问题的一个最优解,而(y2,y3,…,yn)不是它的最优解。显然有 ∑vizi > ∑viyi (i=2,…,n) 且 w1y1+ ∑wizi<= c 因此 v1y1+ ∑vizi (i=2,…,n) > ∑ viyi, (i=1,…,n) 说明(y1,z2, z3,…,zn)是(3.4.1)0-1背包问题的一个更优解,导出(y1,y2,…,yn)不是背包问题的最优解,矛盾。 1.2.3、递推关系:

计算方法实验报告

计算方法实验报告(四) 方程和方程组的迭代解法 一、实验问题 利用简单迭代法,两种加速技术,牛顿法,改进牛顿法,弦割法求解习题5-1,5-2,5-3中的一题,并尽可能准确。 选取5-3:求在x=1.5附近的根。 二、问题的分析(描述算法的步骤等) (1)简单迭代法算法: 给定初始近似值,求的解。 Step 1 令i=0; Step 2 令(计算); Step 3 如果,则迭代终止,否则重复Step 2。 (2)Aitken加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令-(计算得到一个新的序列,其中k=0,1,2…);Step 3 如果,则迭代终止,否则重复Step 2。 (3)插值加速法算法 Step 1 令k=0,利用简单迭代算法得到迭代序列; Step 2 令+(计算得到一个新的序列,其中k=1,2,3…); Step 3 如果,则迭代终止,否则重复Step 2。 (4)牛顿法算法

Step 1给定初始近似值; Step 2令,其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (5)改进牛顿法的算法 Step 1给定初始近似值; Step 2令,其中k迭代计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 (6)弦割法算法(双点弦割法) Step 1给定初始近似值,; Step 2令其中k计算得到的序列; Step 3如果,则迭代终止,否则重复Step 2。 三、程序设计 (1)简单迭代法 利用迭代公式进行迭代运算。 #include #include #include double fun(double x) { double c=1+x*x; return pow(c,1/3.0); } void main() { double x=1.5; double y=0; double D=1;

计算方法实验报告格式

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

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

固体红外光谱实验报告

KBr压片法测定固体样品的红外光谱 一、实验目的 1、掌握红外光谱分析法的基本原理。 2、掌握Nicolet5700智能傅立叶红外光谱仪的操作方法。 3、掌握用KBr压片法制备固体样品进行红外光谱测定的技术和方法。 4、了解基本且常用的KBr压片制样技术在红外光谱测定中的应用。 5、通过谱图解析及标准谱图的检索,了解由红外光谱鉴定未知物的一般过程。 二、仪器及试剂 1 仪器:美国热电公司Nicolet5700智能傅立叶红外光谱仪;HY-12型手动液压式红外压片机及配套压片模具;磁性样品架;红外灯干燥器;玛瑙研钵。 2 试剂:苯甲酸样品(AR);KBr(光谱纯);无水丙酮;无水乙醇。 三、实验原理 红外吸收光谱法是通过研究物质结构与红外吸收光谱间的关系,来对物质进行分析的,红外光谱可以用吸收峰谱带的位置和峰的强度加以表征。测定未知物结构是红外光谱定性分析的一个重要用途。根据实验所测绘的红外光谱图的吸收峰位置、强度和形状,利用基团振动频率与分子结构的关系,来确定吸收带的归属,确认分子中所含的基团或键,并推断分子的结构,鉴定的步骤如下: (1)对样品做初步了解,如样品的纯度、外观、来源及元素分析结果,及物理性质(分子量、沸点、熔点)。 (2)确定未知物不饱和度,以推测化合物可能的结构; (3)图谱解析 ①首先在官能团区(4000~1300cm-1)搜寻官能团的特征伸缩振动; ②再根据“指纹区”(1300~400cm-1)的吸收情况,进一步确认该基团的存在以及与其它基团的结合方式。

图1 仪器的基本结构 四、实验步骤 1. 红外光谱仪的准备 (1)打开红外光谱仪电源开关,待仪器稳定30 分钟以上,方可测定; (2)打开电脑,选择win98系统,打开OMNIC E.S.P软件;在Collect菜单下的Experiment Set-up 中设置实验参数; (3)实验参数设置:分辨率 4 cm-1,扫描次数32,扫描范围4000-400 cm-1;纵坐标为Transmittance 2.固体样品的制备 (1)取干燥的苯甲酸试样约1mg于干净的玛瑙研钵中,在红外灯下研磨成细粉,再加入约150mg干燥且已研磨成细粉的KBr一起研磨至二者完全混合均匀,混合物粒度约为2μm以下(样品与KBr的比例为1:100~1:200)。 (2)取适量的混合样品于干净的压片模具中,堆积均匀,用手压式压片机用力加压约30s,制成透明试样薄片。 3.样品的红外光谱测定 (3)小心取出试样薄片,装在磁性样品架上,放入Nicolet5700智能傅立叶红外光谱仪的样品室中,在选择的仪器程序下进行测定,通常先测KBr的空白

银行家算法设计实验报告

银行家算法设计实验报告

银行家算法设计实验报告 一.题目分析 1.银行家算法: 我们可以把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求资源相当于客户向银行家贷款。操作系统按银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程尚需求的资源量,若是系统现存的资源可以满足它尚需求的资源量,则按当前的申请量来分配资源,否则就推迟分配。 当进程在执行中继续申请资源时,先测试该进程申请的资源量是否超过了它尚需的资源量。若超过则拒绝分配,若没有超过则再测试系统尚存的资源是否满足该进程尚需的资源量,若满足即可按当前的申请量来分配,若不满足亦推迟分配。 2.基本要求: (1)可以输入某系统的资源以及T0时刻进程对资源的占用及需求情况的表项,以及T0时刻系统的可利用资源数。 (2)对T0时刻的进行安全性检测,即检测在T0时刻该状态是否安全。

(3)进程申请资源,用银行家算法对其进行检测,分为以下三种情况: A. 所申请的资源大于其所需资源,提示分配不合理不予分配并返回 B. 所申请的资源未大于其所需资源, 但大于系统此时的可利用资源,提 示分配不合理不予分配并返回。 C. 所申请的资源未大于其所需资源, 亦未大于系统此时的可利用资源,预 分配并进行安全性检查: a. 预分配后系统是安全的,将该进 程所申请的资源予以实际分配并 打印后返回。 b. 与分配后系统进入不安全状态,提示系统不安全并返回。 (4)对输入进行检查,即若输入不符合条件,应当报错并返回重新输入。 3.目的: 根据设计题目的要求,充分地分析和理解题 目,叙述系统的要求,明确程序要求实现的功能以及限制条件。 明白自己需要用代码实现的功能,清楚编写每部分代码的目的,做到有的放矢,有条理不遗漏的用代码实现银行家算法。

红外光谱实验报告

红外光谱实验报告 一、实验原理: 1、红外光谱法特点: 由于许多化合物在红外区域产生特征光谱,因此红外光谱法广 泛应用于这些物质的定性和定量分析,特别是对聚合物的定性 分析,用其他化学和物理方法较为困难,而红外光谱法简便易 行,特别适用于聚合物分析。 2、红外光谱的产生和表示 红外光谱定义:分子吸收红外光引起的振动能级跃迁和转动能级跃 迁而产生的吸收信号。 分子发生振动能级跃迁需要的能量对应光波的红外区域分类为: i.近红外区:10000-4000cm-1 ⅱ.中红外区:4000-400cm-1——最为常用,大多数化合物的化键振 动能级的跃迁发生在这一区域。 ⅲ.远红外区:400-10cm-1 产生红外吸收光谱的必要条件: 1)分子振动:只有在振动过程中产生偶极矩变化时才能吸收红外辐射。 ⅰ.双原子分子的振动:(一种振动方式)理想状态模型——把两个 原子看做由弹簧连接的两个质点,用此来 描述即伸缩振动;

图1 双原子分子的振动模型 ⅱ.多原子分子的振动:(简正振动,依据键长和键角变化分两大类) 伸缩振动:对称伸缩振动 反对称伸缩振动 弯曲振动:面内弯曲:剪切式振动 (变形振动)平面摇摆振动 面外弯曲振动:扭曲振动 非平面摇摆振动 ※同一种键型,不对称伸缩振动频率大于对称伸缩振动频率,伸缩振动频率大于弯曲振动频率。 ※当振动频率和入射光的频率一致时,入射光就被吸收,因而同一基团基本上总是相对稳定地在某一特定范围内出现吸收峰。ⅲ.分子振动频率: 基频吸收(强吸收峰):基态到第一激发态所产生分子振动 的振动频率。 倍频吸收(弱吸收峰):基态到第二激发态,比基频高一倍 处弱吸收,振动频率约为基频两倍。 组频吸收(复合频吸收):多分子振动间相互作用,2个或2

南京邮电大学算法设计实验报告——动态规划法

实验报告 (2009/2010学年第一学期) 课程名称算法分析与设计A 实验名称动态规划法 实验时间2009 年11 月20 日指导单位计算机学院软件工程系 指导教师张怡婷 学生姓名丁力琪班级学号B07030907 学院(系) 计算机学院专业软件工程

实验报告 实验名称动态规划法指导教师张怡婷实验类型验证实验学时2×2实验时间2009-11-20一、实验目的和任务 目的:加深对动态规划法的算法原理及实现过程的理解,学习用动态规划法解决实际应用中的最长公共子序列问题。 任务:用动态规划法实现求两序列的最长公共子序列,其比较结果可用于基因比较、文章比较等多个领域。 要求:掌握动态规划法的思想,及动态规划法在实际中的应用;分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的最长公共子序列。 二、实验环境(实验设备) 硬件:计算机 软件:Visual C++

三、实验原理及内容(包括操作过程、结果分析等) 1、最长公共子序列(LCS)问题是:给定两个字符序列X={x1,x2,……,x m}和Y={y1,y2,……,y n},要求找出X和Y的一个最长公共子序列。 例如:X={a,b,c,b,d,a,b},Y={b,d,c,a,b,a}。它们的最长公共子序列LSC={b,c,d,a}。 通过“穷举法”列出所有X的所有子序列,检查其是否为Y的子序列并记录最长公共子序列并记录最长公共子序列的长度这种方法,求解时间为指数级别的,因此不可取。 2、分析LCS问题特征可知,如果Z={z1,z2,……,z k}为它们的最长公共子序列,则它们一定具有以下性质: (1)若x m=y n,则z k=x m=y n,且Z k-1是X m-1和Y n-1的最长公共子序列; (2)若x m≠y n且x m≠z k,则Z是X m-1和Y的最长公共子序列; (3)若x m≠y n且z k≠y n,则Z是X和Y的最长公共子序列。 这样就将求X和Y的最长公共子序列问题,分解为求解较小规模的问题: 若x m=y m,则进一步分解为求解两个(前缀)子字符序列X m-1和Y n-1的最长公共子序列问题; 如果x m≠y n,则原问题转化为求解两个子问题,即找出X m-1和Y的最长公共子序列与找出X 和Y n-1的最长公共子序列,取两者中较长者作为X和Y的最长公共子序列。 由此可见,两个序列的最长公共子序列包含了这两个序列的前缀的最长公共子序列,具有最优子结构性质。 3、令c[i][j]保存字符序列X i={x1,x2,……,x i}和Y j={y1,y2,……,y j}的最长公共子序列的长度,由上述分析可得如下递推式: 0 i=0或j=0 c[i][j]= c[i-1][j-1]+1 i,j>0且x i=y j max{c[i][j-1],c[i-1][j]} i,j>0且x i≠y j 由此可见,最长公共子序列的求解具有重叠子问题性质,如果采用递归算法实现,会得到一个指数时间算法,因此需要采用动态规划法自底向上求解,并保存子问题的解,这样可以避免重复计算子问题,在多项式时间内完成计算。 4、为了能由最优解值进一步得到最优解(即最长公共子序列),还需要一个二维数组s[][],数组中的元素s[i][j]记录c[i][j]的值是由三个子问题c[i-1][j-1]+1,c[i][j-1]和c[i-1][j]中的哪一个计算得到,从而可以得到最优解的当前解分量(即最长公共子序列中的当前字符),最终构造出最长公共子序列自身。

数学计算方法实验报告

数学计算方法实验报告 习题二 2.估计用二分法求方程f(x)=x3+4x2-10=0在区间[1,2]内根的近似值,为使方程不超过10时所需的二分次数。f(x k) 程序过程: function two (tolerance) a=1;b=2;counter=0; while (abs(b-a)>tolerance) c=(a+b)/2; fa=a^3+4*a^2-10;

fb=b^3+4*b^2-10; fc=c^3+4*c^2-10; if ((fa==0|fb==0)) disp(counter); elseif (fa*fc<0) b=c;counter=counter+1; elseif (fb*fc<0) a=c;counter=counter+1; elseif (fb==0) disp(counter); end end solution=(a+b)/2; disp(solution); disp(counter); 实验结果: 6.取x0=1.5,用牛顿迭代法求第三中的方程根.f(x)=x3+4x2-10=0的近似值(精确到||x k+1-x k|≦10-5,并将迭代次数与3题比较。 程序过程: function six (g) a=1.5; fa=a^3+4*a^2-10;

ga=3*a^2+8*a; b=a-fa/ga; k=1; while(abs(b-a)>g) a=b; fa=a^3+4*a^2-10; ga=3*a^2+8*a; b=a-fa/ga; k=k+1; end format long; disp(a); disp(k); 实验结果:程序结果计算结果 8.用弦割法求方程f(x)=x3-3x2-x+9=0在区间[-2,-1]内的一个实根近似值x k,|f(x k)|≦10-5. 程序过程: function eight (t) a=-2; b=-1; fa=a^3-3*a^2-a+9; fb=b^3-3*b^2-b+9; c=b-fb*(b-a)/(fb-fa); k=1; while(abs(c-b)>t) a=b; b=c; fa=a^3-3*a^2-a+9; fb=b^3-3*b^2-b+9; c=b-fb*(b-a)/(fb-fa); k=k+1; end

计算方法实验报告 拟合

南京信息工程大学实验(实习)报告 一、实验目的: 用最小二乘法将给定的十个点拟合成三次多项式。 二、实验步骤: 用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、掌握溴化钾压片法制备固体样品的方法; 2、学习并掌握美国尼高立IR-6700型红外光谱仪的使用方法; 3、初步学会对红外吸收光谱图的解析。 二、实验原理 红外光是一种波长介于可见光区和微波区之间的电磁波谱。波长在~1000μm。通常又把这个波段分成三个区域,即近红外区:波长在~μm(波数在13300~4000cm-1),又称泛频区;中红外区:波长在~50μm(波数在4000~200cm-1),又称振动区;远红外区:波长在50~1000μm(波数在200~10cm-1),又称转动区。其中中红外区是研究、应用最多的区域。 红外区的光谱除用波长λ表征外,更常用波数σ表征。波数是波长的倒数,表示单位厘米波长内所含波的数目。其关系式为: 三、仪器和试剂 1、仪器:美国尼高立IR-6700 2、试剂:溴化钾,聚乙烯,苯甲酸 3、傅立叶红外光谱仪(FTIR)的构造及工作原理 四、实验步骤

1、波数检验:将聚苯乙烯薄膜插入红外光谱仪的样品池处,从4000-650cm-1进行波数扫描,得到吸收光谱。 2、测绘苯甲酸的红外吸收光谱——溴化钾压片法 取1-2mg苯甲酸,加入在红外灯下烘干的100-200mg溴化钾粉末,在玛瑙研钵中充分磨细(颗粒约2μm),使之混合均匀。取出约80mg混合物均匀铺洒在干净的压模内,于压片机上制成直径透明薄片。将此片装于固体样品架上,样品架插入红外光谱仪的样品池处,从4000-400cm-1进行波数扫描,得到吸收光谱。 五、注意事项 1、实验室环境应该保持干燥; 2、确保样品与药品的纯度与干燥度; 3、在制备样品的时候要迅速以防止其吸收过多的水分,影响实验结果; 4、试样放入仪器的时候动作要迅速,避免当中的空气流动,影响实验的准确性。 5、溴化钾压片的过程中,粉末要在研钵中充分磨细,且于压片机上制得的透明薄片厚度要适当。 六、数据处理 该图中在波数700~800、1500~1600、2800~2975左右有峰形,证明了该物质中可能有烯烃的C-H变形振动,C-C间的伸缩振动,同时也拥有烷烃的C-H伸缩振动,推测为聚乙烯的红外谱图。 谱带位置/cm-1吸收基团的振动形式 )n—C— n≥4) (—C—(CH 2

相关文档
最新文档