搜档网
当前位置:搜档网 › 动态规划算法实验报告材料

动态规划算法实验报告材料

动态规划算法实验报告材料
动态规划算法实验报告材料

实验标题

1、矩阵连乘

2、最长公共子序列

3、最大子段和

4、凸多边形最优三角剖分

5、流水作业调度

6、0-1背包问题

7、最优二叉搜索树

实验目的掌握动态规划法的基本思想和算法设计的基本步骤。

实验内容与源码1、矩阵连乘

#include

#include

using namespace std;

const int size=4;

//ra,ca和rb,cb分别表示矩阵A和B的行数和列数

void matriMultiply(int a[][4],int b[][4],int c[][4],int ra ,int ca,int rb ,int cb )

{

if(ca!=rb) cerr<<"矩阵不可乘";

for(int i=0;i

for(int j=0;j

{

int sum=a[i][0]*b[0][j];

for(int k=1;k

sum+=a[i][k]*b[k][j];

c[i][j]=sum;

}

}

void MatrixChain(int *p,int n,int m[][4],int s[][4])

{

for(int i=1;i<=n;i++) m[i][i]=0;//对角线

for(int r=2;r<=n;r++)//外维

for(int i=1;i<=n-r+1;i++)//上三角

{

int j=i+r-1;

m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];

s[i][j]=i;

for(int k=i+1;k

{

int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];

if(t

{

m[i][j]=t;

s[i][j]=k;

}

}

}

}

void Traceback(int i,int j,int s[][4])

{

if(i == j)

{

cout<<"A"<

}

else if(i+1 == j)

{

cout<<"(A"<

}

else

{

cout<<"(";

Traceback(i,s[i][j],s);

Traceback(s[i][j]+1,j,s);

cout<<")";

}

}

int main()

{

int w;

cout<<"矩阵个数:";

cin>>w;

int p[w],s[w][w];

cout<<"输入矩阵A1维数:";

cin>>p[0]>>p[1];

for(int i=2 ; i<=w ; i++)

{

int m = p[i-1];

cout<<"输入矩阵A"<

cin>>p[i-1]>>p[i];

if(p[i-1] != m)

{

cout<

}

}

Traceback(1,w,s);

return 0;

}

运行结果

2、最长公共子序列

#include

#include

#define N 100

using namespace std;

//str1存储字符串x,str2存储字符串y

char str1[N],str2[N];

//lcs存储最长公共子序列

char lcs[N];

//c[i][j]存储str1[1...i]与str2[1...j]的最长公共子序列的长度int c[N][N];

//flag[i][j]==0为str1[i]==str2[j]

//flag[i][j]==1为c[i-1][j]>=s[i][j-1]

//flag[i][j]==-1为c[i-1][j]

int flag[N][N];

//求长度

int LCSLength(char *x, char *y)

{

int i,j;

//分别取得x,y的长度

int m = strlen(x);

int n = strlen(y);

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

c[i][0] = 0;

for(i=0;i<=n;i++)

c[0][i] = 0;

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

for(j=1;j<=n;j++)

{

if(x[i-1]==y[j-1])

{

c[i][j] = c[i-1][j-1] +1;

flag[i][j] = 0;

}

else if(c[i-1][j]>=c[i][j-1])

{

c[i][j] = c[i-1][j];

flag[i][j] = 1;

}

else

{

c[i][j] = c[i][j-1];

flag[i][j] = -1;

}

}

return c[m][n];

}

//求出最长公共子序列

char* getLCS(char *x, char *y,int len,char *lcs) {

int i = strlen(x);

int j = strlen(y);

while(i&&j)

{

if(flag[i][j]==0)

{

lcs[--len] = x[i-1];

i--;

j--;

}

else if(flag[i][j]==1)

i--;

else

j--;

}

return lcs;

}

int main()

{

int i;

cout<<"请输入字符串x:"<

cin>>str1;

cout<<"请输入字符串y:"<

cin>>str2;

int lcsLen = LCSLength(str1,str2);

cout<<"最长公共子序列长度:"<

cout<<"最长公共子序列为:";

for(i=0;i

cout<

return 0;

}

运行结果

3、最大子段和

//分治法求最大子段和

#include

using namespace std;

int MaxSubSum(int *a,int left,int right)

{

int sum=0;

if(left==right) sum=a[left]>0?a[left]:0;

else

{

int center = (left+right)/2;

//最大子段和在左边

int leftsum=MaxSubSum(a,left,center);

//最大子段和在右边

int rightsum=MaxSubSum(a,center+1,right);

//最大子段和在中间

int s1=0;

int lefts=0;

for(int i=center;i>=left;i--)

{

lefts+=a[i];

if(lefts>s1) s1=lefts;

}

int s2=0;

int rights=0;

for(int i=center+1;i<=right;i++) {

rights+=a[i];

if(rights>s2) s2=rights;

}

sum=s1+s2;//前后子段和相加

//判断最大子段和

if(sum>leftsum)sum=leftsum;

if(sum>rightsum) sum=rightsum; }

return sum;

}

int MaxSum(int *a,int n)

{

return MaxSubSum(a,1,n-1);

}

int main()

{

int a[8]={2,-3,-5,4,1,7,1,-5};

cout<<"最大子段和为:"<

}

//动态规划法

#include

using namespace std;

int MaxSum(int *a,int n)

{

int sum=0,b=0;

for(int i=1;i

{

if(b>0) b+=a[i];

else b=a[i];

if(b>sum) sum=b;

}

return sum;

}

int main()

{

int a[8]={2,-3,-5,4,1,7,1,-5};

cout<<"最大子段和为:"<

return 0;

}

运行结果

4、凸多边形最优三角剖分

#include

#include

#include

#define N 50

using namespace std;

struct point

{

int x;

int y;

};

int distance(point X, point Y)//两点距离

{

int dis = (Y.x-X.x)*(Y.x-X.x) + (Y.y-X.y)*(Y.y-X.y);

return (int)sqrt(dis);

}

int w(point a, point b, point c)//权值

{

return distance(a,b) + distance(b,c) + distance(a,c); }

bool JudgeInput()//判断是否能构成凸多边形

{

point *v; //记录凸多边形各顶点坐标

int *total; //记录坐标在直线方程中的值 int m,a,b,c;

cout<<"请输入凸多边形顶点个数:";

cin>>m;

int M = m-1;

for(int i=0 ; i

{

cout<<"输入顶点v"<

cin>>v[i].x>>v[i].y;

}

//根据顶点坐标判断是否能构成一个凸多边形

for(int j=0 ; j

{

int p = 0;

int q = 0;

if(m-1 == j)

{

a = v[m-1].y - v[0].y;

b = v[m-1].x - v[0].y;

c = b * v[m-1].y - a * v[m-1].x;

}

else

{

a = v[j].y - v[j+1].y;

b = v[j].x - v[j+1].x;

c = b * v[j].y - a * v[j].x;

}

for(int k=0 ; k

{

total[k] = a * v[k].x - b * v[k].y + c; if(total[k] > 0)

{

p = p+1;

}

else if(total[k] < 0)

{

q = q+1;

}

}

if((p>0 && q>0) || (p==0 && q==0))

{

cout<<"无法构成凸多边形!"<

exit(1);

}

}

}

bool minWeightTriangulation()//计算最优值算法

{

int M;

int **t, **s;

point *v;

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

t[i][i] = 0;

for(int r=2 ; r<=M ; r++)

for(int i=1 ; i<=M-r+1 ; i++)

{

int j = i+r-1;

t[i][j] = t[i+1][j] + w(v[i-1],v[i],v[j]);

s[i][j] = i;

for(int k=i+1 ; k

{

int u = t[i][k] + t[k+1][j] + w(v[i-1],v[k],v[j]); if(u < t[i][j])

{

t[i][j] = u;

s[i][j] = k;

}

}

}

return true;

}

void Traceback(int i, int j, int **s)

{

if(i == j)

return;

Traceback(i,s[i][j],s);

Traceback(s[i][j]+1,j,s);

cout<<"三角形:v"<

}

int main()

{

int **s; //记录最优三角剖分中所有三角形信息 int **t; //记录最优三角剖分所对应的权函数值 point *v; //记录凸多边形各顶点坐标

int *total; //记录坐标在直线方程中的值

int M=0;

t = new int *[N];

s = new int *[N];

for(int i=0 ; i

{

t[i] = new int[N];

s[i] = new int[N];

}

v = new point[N];

total = new int[N];

if(JudgeInput())

{

if(minWeightTriangulation())

{

Traceback(1,M,s);

cout<

cout<<"最优权值之和为:"<

}

return 0;

}

运行结果:

5、流水作业调度

#include

#define N 100

using namespace std;

class Jobtype

{

public:

/* int operator<=(Jobtype a)const

{

return(key<=a.key);

}*/

int key;

int index;

bool job;

};

void sort(Jobtype *d,int n)

{

int i,j;

Jobtype temp;

bool exchange; //交换标志

for(i = 0;i < n;i ++){ //最多做n-1趟排序

exchange = false; //本趟排序开始前,交换标志应为假

for(j = n - 1;j >= i;j --)

if(d[j+1].key < d[j].key){

temp = d[j+1];

d[j+1] = d[j];

d[j] = temp;

exchange=true; //发生了交换,故将交换标志置为真 }

if(!exchange) //本趟排序未发生交换,提前终止算法 return;

}

}

int FlowShop(int n,int *a,int *b,int *c)

{

Jobtype *d = new Jobtype[n];

for(int i=0;i

{

d[i].key=a[i]>b[i]?b[i]:a[i];// 执行时间

d[i].job=a[i]<=b[i];// 作业组

d[i].index=i;//作业序号

}

sort(d,n);;

int j=0;

int k=n-1;

for(int i=0;i

{

if(d[i].job)

{

c[j++]=d[i].index;

}

else

{

c[k--]=d[i].index;

}

}

j=a[c[0]];

k=j+b[c[0]];

for(int i=1;i

{

j+=a[c[i]];

k=j

}

delete d;//回收空间

return k;//返回调度时间

}

int main()

{

int n,*a,*b,*c;

cout<<"作业数:";

cin>>n;

Jobtype *d = new Jobtype[N];

a=new int[N];

b=new int[N];

c=new int[N];

cout<<"请输入作业号和时间:";

for(int i=0;i

{

cin>>d[i].index>>d[i].key;

}

cout << endl;

int k=FlowShop(n,a,b,c);

cout<<"\n调度时间:"<

cout<<"最优调度序列:";

for (int i = 0; i < n; i++) // 输出最优调度序列 {

cout << c[i] << " ";

}

return 0;

}

运行结果:

6、0-1背包问题

#include

#include

using namespace std;

const int C=10;//容量

const int N=5;//个数

int max(const int a,const int b)

{

return a>b?a:b;

}

int min(const int a,const int b)

{

return a

}

/*

m为记录数组 m[i][j]代表在剩有j容量的条件下,从i开始往后的物品中可以取得的最大价值

w为重量数组,v为价值数组

n为物品个数,c为开始容量

则m[1][c]即此背包能剩下的最大价值

*/

void knapsack(int **m,int n, int c,int *w, int *v)

{

int jMax = min(w[n]-1,c);//前n-1个物品

for(int j=0;j<=jMax;j++)

m[n][j]=0;

for(int j=w[n];j<=c;j++)

m[n][j]=v[n];

for(int i=n-1;i>1;i--)

{

jMax=min(w[i]-1,c);

for(int j=0;j<=jMax;j++)

m[i][j] = m[i+1][j];

for(int j=w[i];j<=c;j++)

m[i][j] = max(m[i+1][j],m[i+1][j-w[i]]+v[i]); }

m[1][c]=m[2][c];

if(c>=w[1])

m[1][c]=max(m[1][c],m[2][c-w[1]]+v[1]);

}

//找出最优解,0表示不能装,1表示能装

void traceback(int **m,int n,int c,int *x,int *w)

{

for(int i=1;i

{

if(m[i][c]==m[i+1][c]) x[i]=0;

else

{

x[i]=1;

c-=w[i];

}

}

x[n]=(m[n][c]==0)?0:1;

}

int main()

{

int *v=new int[N+1];

int *w=new int[N+1];

int **m=new int* [N+1];

int *x=new int [N+1];

for(int i=0;i

{

m[i]=new int[C+1];

}

cout<<"输入重量序列,"<

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

cin>>w[i];

cout<<"输入价值序列,"<

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

cin>>v[i];

knapsack(m,N,C,w,v);

traceback(m,N,C,x,w);

cout<<"最优值:"<

cout<<"是否装入背包的情况:";

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

{

cout<

}

for(int i=0;i

{

delete m[i];

}

delete []m;

return 0;

}

运行结果

7、最优二叉搜索树

#include

#include

#include

#define N 100

using namespace std;

const double MAX = numeric_limits::max(); //double的最大值

//a[i]为结点i被访问的概率

//b[i]为“虚结点”i被访问的概率

//m[i][j]用来存放子树(i,j)的期望代价

//w[i][j]用来存放子树(i,j)的所有结点(包括虚结点)的a,b概率之和//s[i][j]用来跟踪root的

void OptimalBinarySearchTree(double *a,double *b,int n)

{

int s[N][N];

double m[N][N];

double w[N][N];

int i,j,l,r;

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

{

m[i][i-1] = b[i-1];

w[i][i-1] = b[i-1];

}

for(l=1; l<=n; l++)

{

for(i=1; i<=n-l+1; i++)

{

j = l+i-1;

m[i][j] = MAX;

w[i][j] = w[i][j-1] + a[j] +b[j];

for(r=i; r<=j; r++)

{

double k = m[i][r-1] + w[i][j] + m[r+1][j]; if(k

{

m[i][j] = k;

s[i][j] = k;

}

}

}

}

cout<

}

int main()

{

double a[N],b[N];

int n;

double sum = 0;

int i,j,l;

cout<<"请输入关键字的个数:"<

cin>>n;

cout<<"请输入每个关键字的概率:"<

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

{

cin>>a[i];

sum += a[i];

}

cout<<"请输入每个虚拟键的概率:"<

for(i=0; i<=n; i++)

{

cin>>b[i];

sum += b[i];

}

if(abs(sum-1)>0.01)

{

cout<<"输入的概率和不为1,请重新输入"<

}

cout<<"最优二叉查找树的期望搜索代价为:";

OptimalBinarySearchTree(a,b,n);

return 0;

}

运行结果:

实验总结

通过实现动态规划的这个题目,对动态规划算法有了进一步的了

解。先分析问题,判断是否具有最优子结果和重叠字问题的性质。

材料分析方法实验报告

篇一:材料分析方法实验报告 篇二:材料分析方法课程设计报告 材料分析测试方法 课程设计(论文) 题目:磁控溅射c/w多层膜成分及微观分析 学院材料科学与工程 专业材料化学 班级材化082 学生王维娜 学号 3080101296 指导教师陈迪春 起止时间 2010.12.27-2011.1.1 年 材料分析测试方法课程设计任务书 课程设计内容要求: 掌握高分辨透射电子显微镜样品制备方法,学习并了解真空镀膜 技术-磁控溅射技术,多层膜制备过程,以及其微观结构分析,成分 分析所用仪器和原理。 学生(签名) 月日 材料分析测试方法课程设计评语 指导教师(签名) 年日 目录 材料分析测试方法 ............................................................................. .. (1) 1.1 磁控溅射 ............................................................................. (5) 1.2 x射线衍射仪 ............................................................................. . (5) 1.3 透射电子显微镜 ............................................................................. (6) 1.4 x射线光电子能谱仪(xps) ........................................................................ (7) 第二章实验方法 ............................................................................. .. (9) 2.1 tem样品的制备方法 .............................................................................

动态规划实验报告

华东师范大学计算机科学技术系上机实践报告 一、 内容与设计思想 1.对于以下5 个矩阵: M 1: 2?3, M 2: 3?6, M 3: 6?4, M 4: 4?2, M 5: 2?7 , (a) 找出这5个矩阵相乘需要的最小数量乘法的次数。 (b) 请给出一个括号化表达式,使在这种次序下达到乘法的次数最少。 输入: 第一行为正整数N,表示有N 组测试数据; 每组测试数据的第一行为n,表示有n 个矩阵,2<=n<=50; 接下去的n 行,每行有两个整数x 和y,表示第ni 个矩阵是x*y 的。 输出: 对行每组数据,输出一行,每行一个整数,最小的矩阵连乘积。 我们保证输出的结果在2^64之内。 基本思想: 对于n 个矩阵的连乘积,设其不同的计算次序为P(n)。 由于每种加括号方式都可以分解为两个子矩阵的加括号问题:(A1...Ak)(Ak+1…An)可以得到关于P(n)的递推式如下: 2.定义0/1/2背包问题为:}x p max{n 1i i i ∑=。限制条件为:c x w n 1i i i ≤∑=,且 n i 1},2,1,0{x i ≤≤∈。设f(i , y)表示剩余容量为y ,剩余物品为:i ,i+1,…,n 时的最优解的值。 1.)给出f(i , y)的递推表达式; 2.)请设计求解f(i , y)的算法,并实现你的算法; 3.)设W=[10,20,15,30],P=[6,10,15,18],c=48,请用你的算法求解。 输入: 第一行为一个正整数N ,表示有几组测试数据。 每组测试数据的第一行为两个整数n 和M ,0=-=∑-=

动态规划算法实验

一、实验目的 (2) 二、实验内容 (2) 三、实验步骤 (3) 四.程序调试及运行结果分析 (5) 附录:程序清单(程序过长,可附主要部分) (7)

实验四动态规划算法的应用 一、实验目的 1.掌握动态规划算法的基本思想,包括最优子结构性质和基于表格的最优值计算方法。 2.熟练掌握分阶段的和递推的最优子结构分析方法。 3.学会利用动态规划算法解决实际问题。 二、实验内容 1.问题描述: 题目一:数塔问题 给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。 输入样例(数塔): 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16 输出样例(最大路径和): 59 题目二:最长单调递增子序列问题(课本184页例28) 设有由n个不相同的整数组成的数列,记为:a(1)、a(2)、……、a(n)且a(i)<>a(j) (i<>j) 若存在i1

题目三 0-1背包问题 给定n种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为c,。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品只有两个选择:装入或不装入,且不能重复装入。输入数据的第一行分别为:背包的容量c,,物品的个数n。接下来的n 行表示n个物品的重量和价值。输出为最大的总价值。 输入样例: 20 3 11 9 9 10 7 5 输出样例 19 2.数据输入:个人设定,由键盘输入。 3.要求: 1)上述题目任选一做。上机前,完成程序代码的编写 2)独立完成实验及实验报告 三、实验步骤 1.理解算法思想和问题要求; 2.编程实现题目要求; 3.上机输入和调试自己所编的程序; 4.验证分析实验结果; 5.整理出实验报告。

动态规划算法的应用实验报告

实验二动态规划算法的应用 一、实验目的 1.掌握动态规划算法的基本思想,包括最优子结构性质和基于表格的最优值计算方法。 2.熟练掌握分阶段的和递推的最优子结构分析方法。 3.学会利用动态规划算法解决实际问题。 二、实验内容 1.问题描述: 题目一:数塔问题 给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。 输入样例(数塔): 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16 输出样例(最大路径和): 59 三、算法设计 void main() { 申明一个5*5的二维数组; for(int i=0;i<5;i++) { for(int j=0;j<=i;j++) { 输入数组元素p[i][j]; }

} for(int k=0;k<5;k++) { for(int w=0;w<=k;w++) { 输出数组元素p[k][w]; } } for(int a=4;a>0;a--) { for(int s=0;s<=a;s++) { if(p[a][s]大于p[a][s+1]) p[a-1][s]等于p[a-1][s]加p[a][s]; else p[a-1][s] 等于p[a-1][s] 加p[a][s+1]; } } 输出p[0][0] }

四.程序调试及运行结果分析 五.实验总结 虽然这个实验比较简单,但是通过这次实验使我更加了解的动态规划法的好处和、,在解决问题时要尝试使用动态规划,这样就有可能得到一种即简单复杂性有不高的算法。

材料分析(SEM)实验报告

材料专业实验报告 题目:扫描电镜(SEM)物相分析实验学院:先进材料与纳米科技学院专业:材料物理与化学 姓名: 学号:1514122986 2016年6月30日

扫描电镜(SEM)物相分析实验 一.实验目的 1.了解扫描电镜的基本结构与原理 2.掌握扫描电镜样品的准备与制备方法 3.掌握扫描电镜的基本操作并上机操作拍摄二次电子像 4.了解扫描电镜图片的分析与描述方法 二.实验原理 1.扫描电镜的工作原理 扫描电镜(SEM)是用聚焦电子束在试样表面逐点扫描成像。试样为块状或粉末颗粒,成像信号可以是二次电子、背散射电子或吸收电子。其中二次电子是最主要的成像信号。由电子枪发射的电子,以其交叉斑作为电子源,经二级聚光镜及物镜的缩小形成具有一定能量、一定束流强度和束斑直径的微细电子束,在扫描线圈驱动下,于试样表面按一定时间、空间顺序作栅网式扫描。聚焦电子束与试样相互作用,产生二次电子发射以及背散射电子等物理信号,二次电子发射量随试样表面形貌而变化。二次电子信号被探测器收集转换成电讯号,经视频放大后输入到显像管栅极,调制与入射电子束同步扫描的显像管亮度,得到反映试样表面形貌的二次电子像。 本次实验中主要通过观察背散射电子像及二次电子像对样品进行分析表征。 1)背散射电子 背散射电子是指被固体样品原子反射回来的一部分入射电子,其中包括弹性背反射电子和非弹性背反射电子。弹性背反射电子是指被样品中原子和反弹回来的,散射角大于90度的那些入射电子,其能量基本上没有变化(能量为数千到数万电子伏)。非弹性背反射电子是入射电子和核外电子撞击后产生非弹性散射,不仅能量变化,而且方向也发生变化。非弹性背反射电子的能量范围很宽,从数十电子伏到数千电子伏。背反射电子的产生范围在100nm-1mm深度。背反射电子产额和二次电子产额与原子序数的关系背反射电子束成像分辨率一般为50-200nm(与电子束斑直径相当)。背反射电子的产额随原子序数的增加而增加,所以,利用背反射电子作为成像信号不仅能分析形貌特征,也可以用来显示原子序数衬

编译原理实验报告材料(预测分析报告表方法)

预测分析表方法 一、实验目的 理解预测分析表方法的实现原理。 二、实验内容: 编写一通用的预测法分析程序,要求有一定的错误处理能力,出错后能够使程序继续运行下去,直到分析过程结束。可通过不同的文法(通过数据表现)进行测试。 三、实验步骤 1.算法数据构造: 构造终结符数组:char Vt[10][5]={“id”,”+”……}; 构造非终结符数组:char Vn[10]={ }; 构造follow集数组:char *follow[10][10]={ } (可将follow集与预测分析表合并存放) 数据构造示例(使用的预测分析表构造方法1): /*data1.h简单算术表达式数据*/ char VN[10][5]={"E","E'","T","T'","F"}; //非终结符表 int length_vn=5; //非终结符的个数 char VT[15][5]={"id","+","*","(",")","#"}; //终结符表 int length_vt=6; //终结符的个数 char Fa[15][10]={"TE'","+TE'","","FT'","*FT'","","(E)","id"}; //产生式表:0:E->TE' 1:E'->+TE' 2:E'->空 // 3:T->FT' 4:T'->*FT' 5:T'->空 6:F->(E) 7:F->id int analysis_table[10][11]={0,-1,-1,0,-2,-2,0,0,0,0,0, -1,1,-1,-1,2,2,0,0,0,0,0, 3,-2,-1,3,-2,-2,0,0,0,0,0, -1,5, 4,-1,5, 5,0,0,0,0,0, 7,-2,-2,6,-2,-2,0,0,0,0,0}; //预测分析表,-1表示出错,-2表示该行终结符的follow集合,用于错误处理,正数表示产生式在数组Fa 中的编号,0表示多余的列。 (1)预测分析表的构造方法1 给文法的正规式编号:存放在字符数组中,从0开始编号,正规式的编号即为该正规式在数组中对应的下标。如上述Fa数组表示存储产生式。 构造正规式数组:char P[10][10]={“E->TE’”,”E’->+TE’”,……..}; (正规式可只存储右半部分,如E->TE’可存储为TE’,正规式中的符号可替换,如可将E’改为M ) 构造预测分析表:int analyze_table[10][10]={ } //数组元素值存放正规式的编号,-1表示出错 (2)预测分析表的构造方法2 可使用三维数组 Char analyze_table[10][10][10]={ }

材料现代分析方法实验报告

力学与材料学院 材料现代分析方法实验报告二 XRD图谱分析 专业年级:1 姓名:1 指导老师:1 学号:1 2016年12月 中国南京 目录 实验名称:XRD图谱分析…………………………………………… 一、实验目的……………………………………………………

二、实验要求…………………………………………………… 三、操作过程…………………………………………………… 四、结果分析与讨论……………………………………………… 实验名称:XRD图谱分析 一、实验目的 了解XRD基本原理及其应用,不同物相晶体结构XRD图谱的区别,熟练掌握如何来分析利用X射线测试得到的XRD图谱。 二、实验要求

1、熟练掌握如何来利用软件打开、分析XRD图谱,以及输出分析结果。 2、明确不同物质的XRD图谱,掌握XRD图谱包含的晶体结构的关系,通过自己分析、数据查找和鉴别的全过程,了解如何利用软件正确分析和确定不同物相的XRD图谱,并输出分析结果。 3、实验报告的编写,要求报告能准确的反映实验目的、方法、过程及结论。 三、操作过程 1、启动Jade 6.0,并打开实验数据。 2、点击图标使图谱平滑后,再连续两次点击图标扣除背景影响。 3、右击工具栏中的图标,全选左侧的项目,取消选择右侧中的Use Chemistry Filter,最后在下方选择S/M Focus on Major Phases(如图一),并点击OK。 图一

4、得到物相分析,根据FOM值(越小,匹配性越高)可推断出该物相为以ZnO为主,可能含有CaF2、Al2O3、Mg(OH)2混合组成的物质(如图二),双击第一种物质可以得到主晶相的PDF卡片(如图三),点击图三版面中的Lines可以观察到不同角度处的衍射强度(如图四)。 图二

算法实验动态规划----矩阵连乘

实验三:动态规划法 【实验目的】 深入理解动态规划算法的算法思想,应用动态规划算法解决实际的算法问题。 【实验性质】 验证性实验。 【实验要求】 对于下列所描述的问题,给出相应的算法描述,并完成程序实现与时间复杂度的分析。该问题描述为:一般地,考虑矩阵A1,A2,…,An的连乘积,它们的维数分别为d0,d1,…,dn,即Ai的维数为di-1×di (1≤i≤n)。确定这n个矩阵的乘积结合次序,使所需的总乘法次数最少。对应于乘法次数最少的乘积结合次序为这n个矩阵的最优连乘积次序。按给定的一组测试数据对根据算法设计的程序进行调试:6个矩阵连乘积A=A1×A2×A3×A4×A5×A6,各矩阵的维数分别为:A1:10×20,A2:20×25,A3:25×15,A4:15×5,A5:5×10,A6:10×25。完成测试。 【算法思想及处理过程】

【程序代码】

printf ("\n\n矩阵连乘次数的最优值为:\n"); printf ("-----------------------------------------------\n"); print2 (0, 6-1, s); printf ("\n-----------------------------------------------\n\n"); return 0; } void MatrixChain (int p[], int m[][6], int s[][6], int n) { int i, j, k, z, t; for (i=0; i

材料分析与表征方法实验报告

材料分析与表征方法实验报告 热重分析实验报告 一、实验目的 1.了解热重分析法的基本原理和差热分析仪的基本构造。 2.掌握热重分析仪的使用方法。 二、实验原理 热重分析指温度在程序控制时,测量物质质量与温度之间的关系的技术。热重分析所用的仪器是热天平,它的基本原理是,样品重量变化所引起的天平位移量转化成电磁量,这个微小的电量经过放大器放大后,送入记录仪记录;而电量的大小正比于样品的重量变化量。当被测物质在加热过程中有升华、汽化、分解出气体或失去结晶水时,被测的物质质量就会发生变化。 三、实验原料 一水草酸钙CaC2O4·H2O 四、实验仪器 美国TA公司TGA55 升温与降温速率(K/min)0.1-100℃/min 天平灵敏度(μg)0.1μg 温度范围(°C)室温-1000℃ 五、操作条件

第一组:10℃/min空气条件下和20℃/min空气条件下,对TG和DTG 曲线进行对比。 第二组:10℃/min空气条件下和10℃/min氮气条件下,对DSC进行对比。 第三组:10℃/min氮气条件下,得到TG、DTG、DSC曲线。 六、结果与讨论 含有一个结晶水的草酸钙(242CaC.OHO)在100℃以前没有失重现象,其热重曲线呈水平状,为TG曲线的第一个平台。DTG曲线在0刻度。 在100℃和200℃之间失重并出现第二个平台。DTG曲线先升后降,在108.4℃达到最大值,即失重速率的最大值。DSC曲线先降后升,在188.4℃达到最小值,即热功率的最小值。这一步的失重量占试样总质量的12.47%,相当于每mo CaC2O4·H2O失掉1mol H2O,其热分解反应为: CaC2O4·H2O CaC2O4 + H2O 在400℃和500℃之间失重并开始呈现第三个平台,DTG曲线先升后降,在

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

实验报告 (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]中的哪一个计算得到,从而可以得到最优解的当前解分量(即最长公共子序列中的当前字符),最终构造出最长公共子序列自身。

分析化学读书报告

竭诚为您提供优质文档/双击可除 分析化学读书报告 篇一:现代分析化学读书报告 中国科学院大学现代分析化学读书报告课程名称现代 分析化学教师姓名李向军学生姓名吴远东学生学号 20XX28005314010专业地球化学所在院系地球科学学院培养 单位兰州地质所日期:20XX年3月"非稀释剂法电感耦合等离子体质谱测定磷灰石中铀钍钐同位素的含量”的读书报告作者的方法:准确测定235u,、232Th、147sm同位素含量是磷灰石(u-Th)/he同位素定年方法的关键。文章中作者用非稀 释剂法电感耦合等离子体质谱测定磷灰石中235u,、232Th 的同位素含量的测定流程。该方法假定样品中的235u,、 232Th、147sm同位素丰度与其自然丰度是一致的,根据235u,、232Th、147sm同位素的自然丰度和测得的样品中总的u、Th、和sm的含量得到样品中235u,、232Th、147sm同位素的含量。本文只截取其中样品处理的方法加以说明和讨论,其样品处理方法如下:磷灰石样品的样品处理方法。美国加州理工大学(u-Th)/he实验室采用浓hno3在90℃的温度下加热

1h,美国亚利桑那大学(u-Th)/he实验室采用20%的浓hno3在90℃的温度下加热2h,澳大利亚墨尔本大学(u-Th)/he实验室采用5%的浓hno3在超声波中分解2h。 篇二:高等分析化学读书报告 高等分析化学读书报告 一、紫外/可见光谱多元校正来进行水杨酸电化学氧化的动态研究 nelsonmatyasovszky;minTian;Aichengchen.J.phys.chem. A.20XX,113,9348–9353传统水净化工艺的低效率问题,水杨酸和水杨醛是造成环境污染的两种很常见的物质。因此迫切地需要一种新的检测废水中水杨酸和水杨醛的含量以及处理方法。这篇文章,报道了一种在Ti/Iro2-sno2-sb2o5电极上以水杨酸和水杨醛作为典型有机污染物的电化学氧化过程。并探究了一些因素对电化学氧化过程的影响。紫外光谱法和多元校正被用来评估sA和sh氧化混合物在整个过程中的电化学竞争效果。 水杨酸和水杨醛是从sigma-Aldrich采购的且未经过任何纯化,所用的水经过了纳米水处理系统的纯化,电极是用热分解法制备的。 结果与讨论: (A)30ppms水杨酸在置于0.5摩尔40摄氏度硫酸中,电

算法设计与分析实验报告

本科实验报告 课程名称:算法设计与分析 实验项目:递归与分治算法 实验地点:计算机系实验楼110 专业班级:物联网1601 学号:2016002105 学生姓名:俞梦真 指导教师:郝晓丽 2018年05月04 日

实验一递归与分治算法 1.1 实验目的与要求 1.进一步熟悉C/C++语言的集成开发环境; 2.通过本实验加深对递归与分治策略的理解和运用。 1.2 实验课时 2学时 1.3 实验原理 分治(Divide-and-Conquer)的思想:一个规模为n的复杂问题的求解,可以划分成若干个规模小于n的子问题,再将子问题的解合并成原问题的解。 需要注意的是,分治法使用递归的思想。划分后的每一个子问题与原问题的性质相同,可用相同的求解方法。最后,当子问题规模足够小时,可以直接求解,然后逆求原问题的解。 1.4 实验题目 1.上机题目:格雷码构造问题 Gray码是一个长度为2n的序列。序列无相同元素,每个元素都是长度为n的串,相邻元素恰好只有一位不同。试设计一个算法对任意n构造相应的Gray码(分治、减治、变治皆可)。 对于给定的正整数n,格雷码为满足如下条件的一个编码序列。 (1)序列由2n个编码组成,每个编码都是长度为n的二进制位串。 (2)序列中无相同的编码。 (3)序列中位置相邻的两个编码恰有一位不同。 2.设计思想: 根据格雷码的性质,找到他的规律,可发现,1位是0 1。两位是00 01 11 10。三位是000 001 011

010 110 111 101 100。n位是前n-1位的2倍个。N-1个位前面加0,N-2为倒转再前面再加1。 3.代码设计:

材料研究方法与分析测试实验

本科生实验报告 实验课程材料研究方法与分析测试实验 学院名称材料与化学化工学院 专业名称材料科学与工程(无机非金属方向) 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一四年12月15日——二〇一五年12月19日

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水 笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形 式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一扫描电镜实验(SEM) 一、实验目的 1、了解扫描电子显微镜的原理、结构; 2、运用扫描电子显微镜进行样品微观形貌观察。 二、实验原理 扫描电镜(SEM)是用聚焦电子束在试样表面逐点扫描成像。试样为块状或粉末颗粒,成像信号可以是二次电子、背散射电子或吸收电子。其中二次电子是最主要的成像信号。由电子枪发射的电子,以其交叉斑作为电子源,经二级聚光镜及物镜的缩小形成具有一定能量、一定束流强度和束斑直径的微细电子束,在扫描线圈驱动下,于试样表面按一定时间、空间顺序作栅网式扫描。聚焦电子束与试样相互作用,产生二次电子发射以及背散射电子等物理信号,二次电子发射量随试样表面形貌而变化。二次电子信号被探测器收集转换成电讯号,经视频放大后输入到显像管栅极,调制与入射电子束同步扫描的显像管亮度,得到反映试样表面形貌的二次电子像。扫描电镜由下列五部分组成,如图1(a)所示。各部分主要作用简介如下:

研究方法论(读书笔记精华版)

绪论 1、研究的过程 计划阶段+执行阶段 计划阶段(包含文献检索) A、识别宽泛的研究领域 B、选择研究主题 C、确定研究方法 D.撰写研究申请 执行阶段:A、收集研究数据 B、分析数据 C、表达研究结果 在进行执行阶段也有可能返回计划阶段的修正。 第二章确定研究主题 确定宽泛的研究领域——导师认可——主题初选——可行?——社会价值——学术价值——可以接受的主题(过程需要进行修正) 缺少导师有益指导的情况下,学生很可能会迷失研究方向,或者不能满意地完成所确定的研究。导师会指定一些选题,选择新颖的。 选题原则:数据和信息的可用性,研究计划的可操作性,时间限制,所需技能,资金,涉及到的风险。 主题来源:已有的学位论文期刊书籍及书评研究综述专家交流同事工作媒体等 结果分析:对于同一个问题可能得出很多可能结论,要综述和探索出其他方法的可能性,不能过于狭隘的思路研究方法。 而对于应用或者行为研究还需要在得出结论后,要求学生给出相应的应用建议。 选择的题目要不仅今天有用,以后也有用的题目,对职业和发展都大有裨益,不能选择很容易过时的东西。 第三章研究范式 三类 实证主义研究范式解释主义研究范式(强调理解)批判主义研究范式 定量研究,调查,实验定性研究(行为研究案例研究人种学研究数学建模等及扎根理论等) (强调解释而不是理解,目的是预测)

第四章 研究方法和技术 1、行为研究i 行为研究是被设计用来研究变化对于现实的影响,由参与现实的人(一般是了解组织或场所情况的内部知情人,因为他们能识别“变化”,而外部的话在引用变化时要困难)启动,所以需要发生在现实环境中。并通过监测变化以监视产生的结果。 行为研究的螺旋循环过程 2.案例研究 针对一个实例的详细研究,所有的个人、社会群体、组织或者事件都可以被看作是值得研究的“案例”例如: (1) 新担任的CEO (研究重点在此人对CEO 这新角色的反应) (2) 一个坐落在大城市的咖啡厅(研究对象是组织,可能对顾客的变化情况或顾客关系 感兴趣等) (3) 一个小学讲授英语技巧方式的改变(研究对象是事件,描述讲授方式改变的本质, 以及改变后的效果,学生的反应等) 与行为研究相比,案例研究不试图控制变量,或者从仔细挑选的样本收集数据,二是仅仅针对一个案例对其周围的特定交互进行详细描述,目的是建立比调查研究更加精确和丰富的组织描述。 3.人种学研究(略) 4、扎根理论 将俩个以上的概念或者思想联系在一起,并进一步说明其中的一个如何影响另一个的一般陈述。另外,通过收集经验数据,理论还能够被实践所证实。研究的目的是最终形成理论。 5、调查研究 样本会比较大。数据多。 一般研究以下三个方面: (1) 特定人群的特定生活态度和方式,或者特定社会习俗在该类人群中的存在程度 (2) 特定人群的发展趋势 (3) 从事特定职业的特定人群的特点 (对于非生命体如汽车 住房等也适宜调查研究) 技术

算法设计与分析---动态规划实验

《算法设计与分析》实验报告实验二递归与分治策略

Module 1: 免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 59327 Accepted Submission(s): 20813 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标: 为了使问题简化,假设在接下来的一段时间里,馅饼都掉落在0-10这11个位置。开始时gameboy站在5这个位置,因此在第一秒,他只能接到4,5,6这三个位置中其中一个位置上的馅饼。问gameboy最多可能接到多少个馅饼?(假设他的背包可以容纳无穷多个馅饼) Input 输入数据有多组。每组数据的第一行为以正整数n(0

材料工程基础——读书报告

材料工程基础——读书报告 基于专业的局限,可能对于流体力学的认识有些肤浅,以下是我对流体力学的理解和实例的分析。 流体力学主要研究在各种力的作用下,流体本身的状态,以及流体和固体壁面、流体和流体间、流体与其他运动形态之间的相互作用的力学分支。流体力学是力学的一个分支。 流体力学中研究得最多的流体是水和空气。它的主要基础是牛顿运动定律和质量守恒定律,常常还要用到热力学知识,有时还用到宏观电动力学的基本定律、本构方程和物理学、化学的基础知识。除水和空气以外,流体还指作为汽轮机工作介质的水蒸气、润滑油、地下石油、含泥沙的江水、血液、超高压作用下的金属和燃烧后产生成分复杂的气体、高温条件下的等离子体等等。 气象、水利的研究,船舶、飞行器、叶轮机械和核电站的设计及其运行,可燃气体或炸药的爆炸,以及天体物理的若干问题等等,都广泛地用到流体力学知识。许多现代科学技术所关心的问题既受流体力学的指导,同时也促进了它不断地发展。1950年后,电子计算机的发展又给予流体力学以极大的推动。 流体力学是在人类同自然界作斗争和在生产实践中逐步发展起来的。古时中国有大禹治水疏通江河的传说;秦朝李冰父子带领劳动人民修建的都江堰,至今还在发挥着作用;大约与此同时,古罗马人建成了大规模的供水管道系统等等。 20世纪初,飞机的出现极大地促进了空气动力学的发展。航空事业的发展,期望能够揭示飞行器周围的压力分布、飞行器的受力状况和阻力等问题,这就促进了流体力学在实验和理论分析方面的发展。20世纪初,以儒科夫斯基、恰普雷金、普朗克等为代表的科学家,开创了以无粘不可压缩流体位势流理论为基础的机翼理论,阐明了机翼怎样会受到举力,从而空气能把很重的飞机托上天空。机翼理论的正确性,使人们重新认识无粘流体的理论,肯定了它指导工程设计的重大意义。 今天我要谈的就是流体力学在飞机上的应用。 机翼理论和边界层理论的建立和发展是流体力学的一次重大进展,它使无粘流体理论同粘性流体的边界层理论很好地结合起来。随着汽轮机的完善和飞机飞行速度提高到每秒50米以上,又迅速扩展了从19世纪就开始的,对空气密度变化效应的实验和理论研究,为高速飞行提供了理论指导。 机翼在使飞机升空飞行中的重要作用。 飞机在飞行过程中受到四种作用力: 升力----由机翼产生的向上作用力。 重力----与升力相反的向下作用力,由飞机及其运载的人员、货物、设备的重量产生。 推力----由发动机产生的向前作用力。 阻力----由空气阻力产生的向后作用力,能使飞机减速。 由此可见,机翼的主要功用就是产生升力,以支持飞机在空中飞行。它为什么能产生升力呢? 首先要从飞机机翼具有独特的剖面说起,前面名词解释已提到,机翼横断面(横

算法实验 动态规划上机

实验3动态规划上机 [实验目的] 1.掌握动态规划的基本思想和效率分析方法; 2.掌握使用动态规划算法的基本步骤; 3.学会利用动态规划解决实际问题。 [实验要求] 按以下实验内容完成题目,并把编译、运行过程中出现的问题以及解决方法填入实验报告中,按时上交。 [实验学时] 2学时。 [实验内容] 一、实验内容 利用动态规划算法编程求解多段图问题,要求读入多段图,考虑多段图的排序方式,求源点到汇点的最小成本路径。并请对自己的程序进行复杂性分析。 二、算法描述 先输入点的个数和路径数以及每段路径的起点、长度、终点,再计算所有路径的值大小,比较输出后最小值。 三、源程序 #define N 2147483647 #include #include void main() { int i,pointnum,j; cout<<"输入图中点的个数:"<>pointnum; int **array; //array数组描述多段图 int *array2; //array2记录距离起点的最小路径 int *array3; //array3记录上一点编号 array=new int*[pointnum]; array2=new int[pointnum+1]; array3=new int[pointnum+1]; for(i=0;i

} array2[pointnum]=N; array3[pointnum]=N; for(i=0;i>pathnum; int a,k; cout<<"依次输入图中每段路径"<>i; cin>>a; cin>>j; array[i][j]=a; if(array2[j]>(a+array2[i])) { array3[j]=i; array2[j]=a+array2[i]; } // cout<

实验报告:动态规划---0-1背包问题)

XXXX大学计算机学院实验报告计算机学院2017级软件工程专业 5 班指导教师 学号姓名2019年10 月21 日成绩

实验内容、上机调试程序、程序运行结果 System.out.println("选中的物品是第"); for(int i=1;i<=n;i++){ for(int j=1;j<=maxweight;j++){ //当前最大价值等于放前一件的最大价值 maxvalue[i][j] = maxvalue[i-1][j]; //如果当前物品的重量小于总重量,可以放进去或者拿出别的东西再放进去 if(weight[i-1] <= j){ //比较(不放这个物品的价值)和(这个物品的价值放进去加上当前能放的总重量减去当前物品重量时取i-1个物品是的对应重量时候的最高价值) if(maxvalue[i-1][j-weight[i-1]] + value[i - 1] > maxvalue[i-1][j]){ maxvalue[i][j] = maxvalue[i-1][j-weight[i-1]] + value[i - 1]; } } } } return maxvalue[n][maxweight]; } public static void main(String[] args) { int weight[] = {2,3,4,5}; int value[] = {3,4,5,7}; int maxweight = 8; System.out.println(knapsack(weight,value,maxweight)); } } 完成效果:

金相实验报告 实验报告范本

实验一 金属材料显微分析的基本方法 一、实验目的: 了解金相显微镜的构造、原理及使用规则; 掌握金相显微试样制备的基本操作方法。 通过观察,熟悉铁碳合金在平衡状态下的显微组织; 了解并掌握铁碳合金中的相及组织组成物的本质、形态及分布特征; 分析并掌握平衡状态下铁碳合金的组织和性能之间的关系。 二、实验概述: 金相分析是研究工程材料内部组织结构的主要方法金相显微分析法:利用金相显微镜在专门制备的试样上观察 材料的组织和缺陷的方法。 1.金相显微镜的构造、原理及使用; 2.金相显微试样的制备方法。 为了能够在金相显微镜下真实地、清楚地观察到 金属内部的显微组织,需要精心地制备金相显微试样。 金相试样的制备过程主要步骤有: 本实验金相试样制备过程的步骤如下: 3.观察碳钢和白口铸铁的平衡组织 分析各种相组分和组织组成物的特征 碳钢:亚共析钢、共析钢、过共析钢 白口铸铁:亚共晶白口铸铁、共晶白口铸铁、过共晶白口铸铁 相或组织:铁素体、渗碳体、珠光体、莱氏体 区分:铁素体与渗碳体、各种渗碳体

磨制方法 ●砂纸平铺在玻璃板上,一手按住砂纸,另一手握住试样,使 试样磨面朝下并与砂纸接触,在轻微压力作用下向前推行磨制。 方式重复进行。

显微组织。 右图为单相组织和 双 相组织的显微组织图 实验概述: 三、实验设备及材料 ?金相分析实验使用的主要仪器设备有: 光学金相显微镜、抛光机、电吹风机等。 ?实验材料有: 低碳钢试样,工业纯铁、20钢、T8钢、亚共晶白口铸铁等显微组织样品,金相砂纸,抛光粉,硝酸酒精溶液(含4%HNO3),酒精,脱脂棉等。 实验一金属的显微分析法 实验内容及步骤 ?实验前必须仔细阅读实验讲义的有关内容; ?听取实验指导教师讲解金相显微镜的构造、使用方法等内容,熟悉金相显微镜的构造及其操作规程; ?由实验指导教师讲解金相试样制备的基本操作过程,学生每人一块试样,进行试样制备全过程的操作,直至制成合格的金相试样; ?在金相显微镜下观察所制备试样的显微组织特征,并用摄像机拍照存盘。

材料分析方法 考前复习总结(一)

一X射线基础 1 X射线:是一种波长很短的电磁波(0.05-0.25nm,可见光390-760nm)。X射线能使气体电离,使照相底片感光,能穿过不透明的物体,还能使荧光物质发出荧光。呈直线传播,在电场和磁场中不发生偏转;当穿过物体时仅部分被散射。 产生条件:产生自由电子;使电子做定向高速运动;在电子运动的路径上设置使其突然减速的障碍物。 产生方式:利用类似热阴极二极管装置,用一定材料制作的板状阳极(靶)和阴极(灯丝)密封在一个玻璃-金属管壳内,阴极通电加热,在两极间加直流高压U,则阴极产生的热电子将在高压电场作用下飞向阳极,在碰撞的瞬间产生X射线。 连续X射线:强度随波长连续变化的谱线,波长从一最小值(短波限)向长波伸展,并在一波长处有强度最大值。受管电压U、管电流I和阳极靶材原子序数Z的作用。U提高,强度提高,短波限和强度最大值对应的波长减小;I提高,强度提高;Z越高,强度越大。根据量子力学,在管电压作用下电子动能为eU,若电子碰撞时把全部能量给予一个光子,则使其获得最大能量,,此光量子的波长即为短波限。。绝大多数到达阳极靶面的电子经多次碰撞消耗能量,每次碰撞产生一个光量子,并以均大于短波限的波长辐射,产生连续谱。 特征X射线:管电压增高到一定值时,在连续谱的某些特定的波长位置会出现一系列强度很高、波长范围很窄的线状光谱,其波长只取决于阳极靶材元素的原子序数,可作为阳极靶材的标志或特征。莫塞莱定律:(Z越大,特征谱波长越短)。经典原子模型,电子分布在一系列量子化壳层上,内层电子被激出后原子将处于激发状态,必然自发向稳态过渡,此时外层电子将填充内层空位,相应伴随着原子能量的降低。原子从高能态变成低能态时,多出的能量以X射线形式辐射出来。物质一定,原子结构一定,两特定能级间的能量差一定,故辐射出的特征X射波长一定。特征谱强度随U和I的提高而增大。 2 X-ray与物质的相互作用 1)散射:相干散射:当X射线与原子中束缚较紧的内层电子相撞时,光子方向改变但能量无损失,产生波长不变的散射线,可发生干涉,是x射线衍射的基础。(汤姆逊散射) 非相干散射:当X射线光子与束缚不大的外层电子或价电子或金属晶体中的自由电子相撞,电子被撞离原子带走一部分光子的能量成为反冲电子,损失了能量的光子被撞偏一个角度。散布于各方向的散射波波长不等,不能发生干涉。(康-吴效应) 2)真吸收(光电效应、俄歇效应和热效应消耗):入射x射线能量足够大时,可将内层电子击出,产生光电效应。被击出的电子为光电子;外层电子向内层跃迁,辐射出波长严格一定的特征x射线,因属于光致发光的荧光现象,成为荧光X射线。 原子外层电子跃迁填补内层空位后释放能量并产生新的空位,这些能量被包括空位层在内的临近原子或较外层电子吸收,受激发逸出原子的电子叫做俄歇电子。(荧光效应用于表层重元素>20的成分分析;俄歇效应用于表层轻元素的成分分析) 3)衰减X射线吸收规律:强度为I的特征X射线在均匀物质内部通过时,强度的衰减与在物质内通过的距离x成比例,即-dI/I=μdx 。 线吸收系数:即为上式中的μ,指在X射线传播方向上,单位长度上的X射线强弱衰减程度。 质量吸收系数:X射线通过单位面积上单位质量物质后强度的相对衰减量,拜托密度影响。 吸收限:当吸收物质一定时,波长越长越容易被吸收,但吸收系数并不随波长减小单调下降,会有几个跳跃台阶(对应荧光辐射吸收)。 ①根据样品化学成分选择靶材:要求尽可能少激发荧光辐射,入射线波长略长于样品的吸收线或短很多。Z靶≤Z样+1或Z靶>>Z样 ②滤片选择:滤去K系谱线中的Kβ线,使其吸收线位于K系谱线直接,尽可能靠近Kα线。Z靶<40,Z滤=Z靶-1;Z靶>40,Z滤=Z靶-2 1分析下列荧光辐射产生的可能性,为什么? 答:根据经典原子模型,原子内的电子分布在一系列量子化的壳层上,在稳定状态下,每个壳层有一定数量的电子,他们有一定的能量。最内层能量最低,向外能量依次增加。根据能量关系,M、K层之间的能量差大于L、K成之间的能量差,K、L层之间的能量差大于M、L层能量差。由于释放的特征谱线的能量等于壳层间的能量差,所以K?的能量大于Ka的能量,Ka能量大于La的能量。因此在不考虑能量损失的情况下:CuKa能激发CuKa荧光辐射;(能量相同)CuK?能激发CuKa荧光辐射;(K?>Ka)CuKa能激发CuLa荧光辐射;(Ka>la)2为什么出现吸收限?K吸收限只有一个而L吸收限有三个?当激发K系荧光Ⅹ射线时,能否伴生L系?当L系激发时能否伴生K系? 一束X射线通过物体后,其强度将被衰减,它是被散射和吸收的结果。并且吸收是造成强度衰减的主要原因。物质对X射线的吸收,是指X射线通过物质对光子的能量变成了其他形成的能量。原子系统中的电子遵从泡利不相容原理不连续地分布在K,L,M,N等不同能级的壳层上,当外来的高速粒子(电子或光子)的动能足够大时,可以将壳层中某个电子击出原子系统之外,从而使原子处于激发态。这时所需的能量即为吸收限,它只与壳层能量有关。即吸收限只与靶的原子序数有关,与管电压无关。 因为L层有三个亚层,每个亚层的能量不同,所以有三个吸收限,而K只是一层,所以只有一个吸收限。 激发K系光电效应时,入射光子的能量要等于或大于将K电子从K层移到无穷远时所做的功Wk。从X射线被物质吸收的角度称入K 为吸收限。当激发K系荧光X射线时,能伴生L系,因为L系跃迁到K系自身产生空位,可使外层电子迁入,而L系激发时不能伴生K系。3计算当管电压为50 kv时,电子在与靶碰撞时的速度与动能以及所发射的连续谱的短波限和光子的最大动能。 电子静止质量:m0=9.1×10-31kg 光速:c=2.998×108m/s电子电量:e=1.602×10-19C 普朗克常数:h=6.626×10-34J.s 电子从阴极飞出到达靶的过程中所获得的总动能为 E=eU=1.602×10-19C×50kv=8.01×10-18kJ 由于E=1/2m0v02 所以电子与靶碰撞时的速度为v0=(2E/m0)1/2=4.2×106m/s 所发射连续谱的短波限λ0的大小仅取决于加速电压λ0(?)=12400/v(伏) =0.248? 辐射出来的光子的最大动能为 E0=h?0=hc/λ0=1.99×10-15J

相关主题