实验7算法答案

合集下载

DSP实验7

DSP实验7

实验七:窗函数及其在谱分析中的作用实验目的:在理论学习的基础上,掌握不同窗函数的性质、特点,并通过实验认识它们在克服FFT 频谱分析的能量泄漏和栅栏效应误差中的作用,以便在实际工作中能根据具体情况正确选用窗函数。

实验任务:1.执行下面例程,分析不同窗函数的特点并比较结果。

2.编程实现汉宁窗。

演示其时域和频域波形。

信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。

下图是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。

下面是四个常用窗函数的示例程序,可在Matlab下执行,注意比较它们的特点。

1.矩形窗:wp=0.2*pi;ws=0.3*pi;rp=.25;as=50;delta1=(10^(rp/20)-1)/(10^(rp/20)+1);delta2=(1+delta1)*(10^(-as/20));deltah=max(delta1,delta2);deltal=min(delta1,delta2);weights=[delta2/delta1 1];deltaf=(ws-wp)/(2*pi);M=ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*deltaf)+1); M=M+4;f=[0 wp/pi ws/pi 1];m=[1 1 0 0];h=remez(M-1,f,m,weights);delta_w=2*pi/1000;wsi=ws/delta_w+1;wpi=wp/delta_w;asd=-max(db(wsi:501));figure(4);subplot(211);stem([0:M-1],h);title('actual impulse response') axis([0 M-1 -0.1 0.3]),xlabel('n');ylabel('h(n)')set(gca,'xtick',[0,M-1])set(gca,'ytick',[-0.1 0 0.1 0.2 0.3]),gridsubplot(212);plot(w/pi,db),title('magnitude response in db'), axis([0 1 -80 10]),xlabel('frequency in pi units')ylabel('decibels')set(gca,'xtick',[0 .2 .3 1])set(gca,'ytick',[-50,0])%set(gca,'YTickLabels',['50';'0'])grid2.汉明窗wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;m=ceil(8*pi/tr_width)+1;n=[0:m-1];wc=(ws+wp)/2;hd=ideal_lp(wc,m);w_ham=(hamming(m))';h=hd.*w_ham;delta_w=2*pi/1000;rp=-(min(db(1:1:wp/delta_w+1)));as=-round(max(db(ws/delta_w+1:1:501)));figure(1)subplot(221);stem(n,hd);title('ideal impuse response')axis([0 m-1 -.1 .3]);ylabel('hd(n)')subplot(222);stem(n,w_ham);title('hamming window')axis([0 m-1 0 1.1]);ylabel('w(n)')subplot(223);stem(n,h);title('actual impulse response')axis([0 m-1 -0.1 .3]);ylabel('h(n)')subplot(224);plot(w/pi,db);title('magnitude response in db');grid axis([0 1 -100 10]);ylabel('decibels')set(gca,'xtickmode','manual','xtick',[0,.2,.3,1])set(gca,'ytickmode','manual','ytick',[-50,0])%set(gca,'yticklabelmode','manual','yticklabels',['50';'0'])3.布莱克曼窗ws1=.2*pi;wp1=.35*pi;wp2=.65*pi;ws2=.8*pi;as=60;tr_width=min((wp1-ws1),(ws2-wp2));m=ceil(12*pi/tr_width)+1;n=[0:m-1];wc1=(ws1+wp1)/2;wc2=(ws2+wp2)/2;hd=ideal_lp(wc2,m)-ideal_lp(wc1,m);w_bla=(blackman(m))'; h=hd.*w_bla;delta_w=2*pi/1000;rp=-min(db(wp1/delta_w+1:wp2/delta_w));as=-round(max(db(ws2/delta_w+1:501)));figure(2)subplot(221);stem(n,hd);title('ideal impulse response')axis([0 m-1 -0.4 0.5]);ylabel('hd(n)')subplot(222);stem(n,w_bla);title('blackman window')axis([0 m-1 0 1.1]);ylabel('w(n)')subplot(223);stem(n,h);title('actual impulse response')axis([0 m-1 -0.4 0.5]);ylabel('h(n)')subplot(224);plot(w/pi,db);title('magnitude response in db');grid ylabel('decibels'),axis([0 1 -150 10])set(gca,'xtickmode','manual','xtick',[0,.2,.35,.65,.8,1])set(gca,'ytickmode','manual','ytick',[-60,0])%set(gca,'yticklabelmode','manual','yticklabels',['60';'0'])4.凯泽窗m=45;as=60;n=[0:m-1];beta=0.1102*(as-8.7);w_kai=(kaiser(m,beta))';wc1=pi/3;wc2=2*pi/3;hd=ideal_lp(wc1,m)+ideal_lp(pi,m)-ideal_lp(wc2,m);h=hd.*w_kai;figure(3)subplot(2,2,1);stem(n,hd);title('ideal impulse response') axis([-1 m -0.2 0.8]);xlabel('n');ylabel('hd(n)')subplot(2,2,2);stem(n,w_kai);title('kaiser window')axis([-1 m 0 1.1]);xlabel('n');ylabel('w(n)')subplot(2,2,3);stem(n,h);title('actual impulse response') axis([-1 m -0.2 0.8]);xlabel('n');ylabel('h(n)')subplot(2,2,4);plot(w/pi,db)title('magnitude response in db');grid;xlabel('frequency in pi units');ylabel('decibels') axis([0 1 -80 10]),set(gca,'xtickmode','manual','xtick',[0,1/3,2/3,1]) set(gca,'ytickmode','manual','ytick',[-60,0])。

VB实验7 多重循环程序设计

VB实验7 多重循环程序设计
第11页 Visual Basic程序设计实验指导
实验7-2
目的和要求 预备知识
பைடு நூலகம்
【题目】
求素数。编写程序,输出100~300之间的所有素数, 要求按5个一行输出在图片框中。
上一页
下一页
退 出
第12页 Visual Basic程序设计实验指导
实验7-2
目的和要求 预备知识
【分析】
素数(质数)就是大于等于 2 ,并且只能被 1 和本身整除,不 能被其他整数整除的整数,如2、3、5、7、11等。 判断某数 m是否是素数的经典算法是:对于 m,从i = 2,3, 4,…,m1依次判别能否被 i整除,只要有一个能整除,m就不 是素数,否则m是素数。 数学上已证明,对于任一素数m,一定不能被大于 Int(Sqr(m)) 的 整 数 整 除 , 所 以 只 要 判 断 到 m 能 否 被 Int(Sqr(m))整除即可。 在本题中,为了找出100~300之间所有的素数,先设置一个 外循环,循环变量 m 即为判断的数,然后设置一个内循环,用于 判断素数。为了判断素数,程序中引入两个变量 i和Flag。i从2变 化到 Int(Sqr(m)) ,用于控制循环次数,如果 m 不能被 i 整除, 则i = i + 1;如果在本次循环中m能被i整除,则将Flag设置为0, 并且退出内循环。Flag用做标志变量,如果m始终不能被i整除, 则Flag不变化,即Flag = 1时,m为素数。
第19页 Visual Basic程序设计实验指导
上一页
下一页
退 出
实验7-4
目的和要求 预备知识
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图7-7所示的界面设计窗体。 (2)完善程序代码 (3)运行工程并保存文件 运行程序,观察程序运行结果,最后将窗体 文件保存为 F7-4.frm ,工程文件保存为 P74.vbp 。

C实验报告答案完整版

C实验报告答案完整版

实验1简单判定性问题求解一、实验学时完成本实验需4学时。

二、实验目的1、阅读程序题(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;(2)掌握不同的类型数据之间赋值的规律;(3)掌握数据在内存中的存储方式;(4)学会输入、输出函数的基本格式和使用方法;(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。

2、编程题(1)如何运用if-else判定性结构进行程序设计;(2)如何运用switch判定性结构进行程序设计。

3、调试题(1)熟悉C程序的编辑、编译、连接和运行的过程。

三、实验指导为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。

要注意简单判定性问题的结构选择。

3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。

对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。

四、实验内容1、阅读程序题(1)main( ){ /*定义字符型变量*/char c1,c2; /*向字符变量赋以整数*/c1=97;c2=98;printf("%c %c\n",c1,c2); /*以字符形式输出*/printf("%d %d\n",c1,c2); /*以整数形式输出*/}思考:可否改成int c1,c2;输出结果是?相同(2)main(){int a=7,b=5;printf("%d\n",b=b/a);}思考:若将printf语句中%d变为%f,可否输出分式的值?可以(3)main(){int a=9;a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/printf("%d\n",a);}思考:赋值表达式a+=a-=a+a的求解步骤?第一步:a=a-(a+a)=-9 第二步a=a+a=18(4)main(){int k=-1;printf("%d,%u\n",k,k);}思考:-1在内存中的存储形式?取反加一11111111111111111111111111111111(32个)(5)main(){unsigned x1;int b=-1;x1=b; /*有符号数据传送给无符号变量*/printf("%u",x1);}(6)main(){int a=3,b=4,c=5;printf("%d\n",(!(a<b))&&(c=c+1));printf("%d",c);}思考:若将第一个1(换行)6(7)main(){ int a=1,b=2,c=3;if(c=a) ; printf("%d\n",c);else printf("%d\n",b);}2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应具体要求如下:1)用switch语句实现该功能;2)用键盘输入百分制成绩,输入前要有提示信息,对于不合理的数据应输出错误信息;3)输出结果应包含百分制成绩和成绩等级;4)分别输入成绩-10,30,60,68,75,83,95,102,查看记录运行结果。

大学生C语言程序设计(第四版 谭洪强)实验7 答案

大学生C语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。

例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。

注意:n 的值要求不大于100。

算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。

注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。

n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。

参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。

合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。

例如,当a=45,b=12,调用该函数后,c=5241。

算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。

算法与程序实践习题解答7(枚举)

算法与程序实践习题解答7(枚举)

《算法与程序实践》习题解答7——枚举枚举是基于已有的知识进行答案猜测的一种问题求解策略。

在求解一个问题时,通常先建立一个数学模型,包括一组变量,以及这些变量需要满足的条件。

问题求解的目标就是确定这些变量的值。

根据问题的描述和相关的知识,能为这些变量分别确定一个大概的取值范围。

在这个范围内对变量依次取值,判断所取的值是否满足数学模型中的条件,直到找到(全部)符合条件的值为止。

这种解决问题的方法称作“枚举”。

例如“求小于N的最大素数”。

其数学模型是:一个整型变量n,满足:(1)n不能够被[2,n)中的任意一个素数整除;(2)n与N之间没有素数。

利用已有的知识,能确定n 的大概取值范围{2}{2*i+1|1<=i,2*i+1<N}。

在这个范围内从小到大依次取值,如果n不能够被[2,n)中的任意一个素数整除,则满足条件(1)。

在这个范围内找到的最后一个素数也一定满足条件(2),即为问题的解。

枚举是用计算机求解问题最常用的方法之一,常用来解决那些通过公式推导、规则演绎的方法不能解决的问题。

而且,枚举也是现代科学研究和工程计算的重要手段,因为科学研究是在发现问题的规律之前解决问题,然后再寻找不同问题之间的共同规律。

在采用枚举的方法进行问题求解时,要注意3个方面的问题。

●建立简洁的数学模型。

数学模型中变量的数量要尽量少,它们之间相互独立。

这样问题解的搜索空间的维度就小。

反应到程序代码中,循环嵌套的层次少。

模型中的每个条件要反应问题的本质特征。

“求小于N 的最大素数”中的条件(1)是“n不能够被[2,n)中的任意一个素数整除”,而不是“n不能够被[2,n)中的任意一个整数整除”。

这个条件极大的降低了判断n是否是素数的计算开销。

●减小搜索的空间。

利用已有的知识缩小数学模型中各个变量的取值范围,避免不必要的计算。

反应到程序代码中,循环体被执行的次数就少。

除2 之外的其它素数都是奇数,因此“小于N 的最大素数”一定在集合{2,2*i+1|1<=i,2*i+1<N}中。

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)

数据结构(第4版)习题及实验参考答案数据结构复习资料完整版(c语言版)数据结构基础及深入及考试习题及实验参考答案见附录结论1、数据的逻辑结构是指数据元素之间的逻辑关系。

即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。

2、数据的物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。

它依赖于计算机。

存储结构可分为4大类:顺序、链式、索引、散列3、抽象数据类型:由用户定义,用以表示应用问题的数据模型。

它由基本的数据类型构成,并包括一组相关的服务(或称操作)。

它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。

4、算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。

5、在数据结构中,从逻辑上可以把数据结构分成(C)A、动态结构和表态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6、算法的时间复杂度取决于(A)A、问题的规模B、待处理数据的初态C、问题的规模和待处理数据的初态线性表1、线性表的存储结构包括顺序存储结构和链式存储结构两种。

2、表长为n的顺序存储的线性表,当在任何位置上插入或删除一个元素的概率相等时,插入一个元素所需移动元素的平均次数为(E),删除一个元素需要移动的元素的个数为(A)。

A、(n-1)/2B、nC、n+1D、n-1E、n/2F、(n+1)/2G、(n-2)/23、“线性表的逻辑顺序与存储顺序总是一致的。

”这个结论是(B)A、正确的B、错误的C、不一定,与具体的结构有关4、线性表采用链式存储结构时,要求内存中可用存储单元的地址(D)A、必须是连续的B、部分地址必须是连续的C一定是不连续的D连续或不连续都可以5、带头结点的单链表为空的判定条件是(B)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL6、不带头结点的单链表head为空的判定条件是(A)A、head==NULLB、head->ne某t==NULLC、head->ne某t=headD、head!=NULL7、非空的循环单链表head的尾结点P满足(C)A、p->ne某t==NULLB、p==NULLC、p->ne某t==headD、p==head8、在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是(B)A、O(1)B、O(n)C、O(n2)D、O(nlog2n)数据结构(第4版)习题及实验参考答案9、在一个单链表中,若删除p所指结点的后继结点,则执行(A)A、p->ne某t=p->ne某t->ne某t;B、p=p->ne某t;p->ne某t=p->ne某t->ne某t;C、p->ne某t=p->ne某t;D、p=p->ne某t->ne某t;10、在一个单链表中,若在p所指结点之后插入所指结点,则执行(B)A、->ne某t=p;p->ne某t=;B、->ne某t=p->ne某t;p->ne某t=;C、->ne某t=p->ne某t;p=;D、p->ne某t=;->ne某t=p;11、在一个单链表中,已知q是p的前趋结点,若在q和p之间插入结点,则执行(C)A、->ne某t=p->ne某t;p->ne某t=;B、p->ne某t=->ne某t;->ne某t=p;C、q->ne某t=;->ne某t=p;D、p->ne某t=;->ne某t=q;12、在线性结构中,第一个结点没有前趋结点,其余每个结点有且只有1个前趋结点。

答案 实验报告_实验7_数组(学号_姓名)

答案 实验报告_实验7_数组(学号_姓名)

实验报告_实验7_数组(学号_姓名)一、实验目的:1、理解数组的作用、特点;2、掌握一维数组、二维的定义、引用、初始化,能够与循环结合实现批量数据处理(如输入、输出,比较大小,交换等);3、掌握字符数组、字符串的使用;4、熟悉打擂台等典型算法。

二、实验内容1、(基础题)有一个数列,它的第一项为1,第二项为2,第三项为3,以后每一项都等于它的前三项之和。

使用一维数组编程实现功能:计算该数列的前20项并赋值给数组,然后以逆序方式输出,每一行5个数据。

如下图所示:程序代码:#include<stdio.h>int main(){int i;int f[20]={1,2,3};for(i=3;i<20;i++)f[i]=f[i-1]+f[i-2]+f[i-3];//计算数列的值for(i=19;i>=0;i--){//每行输出5个数据printf("%10d",f[i]);if(i%5==0)printf("\n");}printf("\n\n");return0;}2、(基础题)青年歌手大奖赛,有7名评委进行打分,分数取值范围:0.0~10.0,试编程实现如下功能:从键盘输入7位评委给某一选手的评分,之后计算、输出该选手的平均得分(计算规则:去掉一个最高分和一个最低分,求出剩余5个得分的平均值)。

如下图所示:(提示:使用一维数组来保存7位评委的给分,先计算所有评委给分总和,并找到最高分、最低分,然后用给分总和-最高分-最低分,再除5得到选手的平均得分,最后输出。

)程序代码:#include<stdio.h>#define N7int main(){double score[N];double max,min,sum,aver;int i;printf("请输入%d位评委的给分:\n",N);for(i=0;i<N;i++)scanf("%lf",&score[i]);max=min=sum=score[0];for(i=1;i<N;i++){if(max<score[i])max=score[i];if(min>score[i])min=score[i];sum=sum+score[i];}sum=sum-max-min;aver=sum/(N-2);printf("\n去掉一个最高分:%.4f,去掉一个最低分:%.4f\n\n",max,min);printf("该选手的最后得分是:%.4f\n\n",aver);return0;}3、(基础题)计算矩阵之和:先输出这两个矩阵,再输出求和后矩阵。

计算方法实验7

计算方法实验7

实验七一、阅读理解下列程序,并在计算机上运行.1. newt.m%x,y分别为插值节点列向量及节点相应的函数值列向量, A为差商表矩阵, z为插值点,s为插值点的newton插值多项式计算值function [A,s]=newt(x,y,z)n=length(x);A=zeros(n);A(:,1)=y;c(1)=y(1);for j=2:nfor i=j:nA(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i-j+1));endc(j)=A(j,j);%差商表每一列的第一个数即newton插值多项式的系数ends=c(n);for k=n-1:-1:1 %秦九韶算法计算newton插值多项式的值s=s*(z-x(k))+c(k);endA=[x,A];以课本P32例2、P33例3测试,并计算课本P6016(x=2.25)2. gaocila.m (以z=4.5测试(此时y=1.578721))%验证高次插值的Runge现象function [y,err]=gaocila(z) % z为插值点x=-5:5;n=11;y=f(x);for i=1:nk=1;for j=1:nif j~=ik=k*(x-X(j))/(X(i)-X(j));endendy=y+k*Y(i);enderr=f(z)-y;function y=f(x) % 子函数y=1./(1+x.*x);3. neville.m%x,y分别为插值节点向量及节点相应的函数值列向量, A为逐步插值表,z为插值点function A=neville(x,y,z)n=length(x);A=zeros(n);A(:,1)=y;for j=2:nfor i=j:nA(i,j)=A(i-1,j-1)+(A(i,j-1)-A(i-1,j-1))*(z-x(i-j+1))/(x(i)-x(i-j+1));endendA=[x,A];以课本P38例6测试.4. neville1.m%x,y分别为插值节点向量及节点相应的函数值列向量,A为逐步插值表,z 为插值点,w为精度function A=neville1(x,y,z,w)n=length(x);A=zeros(n);A(:,1)=y;for j=2:nfor i=j:nA(i,j)=A(i-1,j-1)+(A(i,j-1)-A(i-1,j-1))*(z-x(i-j+1))/(x(i)-x(i-j+1));if abs(A(i,j)-A(i,j-1))<w |abs(A(i,j)-A(i-1,j))<ww=1;breakendendif w==1breakendendA=[x,A];以课本P38例6,对不同的精度进行测试.二、编程并在计算机上调试修改运行.1. 编写复化梯形公式及复化Simpson公式求值程序计算课本P75例2、P8817.2. 应用变步长梯形法编程计算课本P77例3.3. 选做题:应用Romberg算法编程计算课本P81例4.一、1. newt.m>> [A,s]=newt([100 121 144]',[10 11 12]',115)A =100.0000 10.0000 0 0121.0000 11.0000 0.0476 0144.0000 12.0000 0.0435 -0.0001s =10.7228>> x=[0.3 0.4 0.5 0.6 0.7]';>> y=[0.29850 0.39646 0.49311 0.58813 0.68122]';>> [A,s]=newt(x,y,0.462)A =0.3000 0.2985 0 0 0 0 0.4000 0.3965 0.9796 0 0 0 0.5000 0.4931 0.9665 -0.0655 0 0 0.6000 0.5881 0.9502 -0.0815 -0.0533 0 0.7000 0.6812 0.9309 -0.0965 -0.0500 0.0083s =0.4566>> [A,s]=newt([-2 -1 0 1 2 3]',[-5 1 1 1 7 25]',2.25)A =-2 -5 0 0 0 0 0-1 1 6 0 0 0 00 1 0 -3 0 0 01 1 0 0 1 0 02 7 63 1 0 03 25 18 6 1 0 0s =10.14062.gaocila.m (以z=4.5测试(此时y=1.578721))正确的程序:%验证高次插值的Runge现象function [y,err]=gaocila(z) % z为插值点x=-5:5;n=11;Y=f(x);y=0;for i=1:nk=1;for j=1:nif j~=ik=k*(z-x(j))/(x(i)-x(j));endendy=y+k*Y(i);enderr=f(z)-y;function y=f(x) % 子函数y=1./(1+x.*x);>> [y,err]=gaocila(4.5)y =1.5787err =-1.53173. neville.m>> x=[0.3 0.4 0.5 0.6 0.7]';>> y=[0.2985 0.39646 0.49311 0.58813 0.68122]';>> neville(x,y,0.462)ans =Columns 1 through 30.300000000000000 0.298500000000000 0 0.400000000000000 0.396460000000000 0.457195200000000 0.500000000000000 0.493110000000000 0.456383000000000 0.600000000000000 0.588130000000000 0.457002400000000 0.700000000000000 0.681220000000000 0.459665800000000Columns 4 through 60 0 0 0 0 0 0.456537318000000 0 0 0.456575014000000 0.456557673840000 0 0.456496354000000 0.456558757600000 0.4565581127628004.neville1.m>> x=[0.3 0.4 0.5 0.6 0.7]';>> y=[0.2985 0.39646 0.49311 0.58813 0.68122]';>> neville1(x,y,0.462,1e-3)ans =Columns 1 through 30.300000000000000 0.298500000000000 0 0.400000000000000 0.396460000000000 0.457195200000000 0.500000000000000 0.493110000000000 0.456383000000000 0.600000000000000 0.588130000000000 0 0.700000000000000 0.681220000000000 0Columns 4 through 60 0 00 0 0 0 0 0 0 0 0 0 0 0>> neville1(x,y,0.462,1e-4)ans =Columns 1 through 30.300000000000000 0.298500000000000 0 0.400000000000000 0.396460000000000 0.457195200000000 0.500000000000000 0.493110000000000 0.456383000000000 0.600000000000000 0.588130000000000 0.457002400000000 0.700000000000000 0.681220000000000 0.459665800000000Columns 4 through 60 0 0 0 0 0 0.456537318000000 0 0 0.456575014000000 0 0 0 0 0>> neville1(x,y,0.462,1e-5)ans =Columns 1 through 30.300000000000000 0.298500000000000 0 0.400000000000000 0.396460000000000 0.457195200000000 0.500000000000000 0.493110000000000 0.456383000000000 0.600000000000000 0.588130000000000 0.457002400000000 0.700000000000000 0.681220000000000 0.459665800000000Columns 4 through 60 0 0 0 0 00.456537318000000 0 0 0.456575014000000 0.456557673840000 0 0.456496354000000 0.456558757600000 0二、1、复化梯形公式课本P75例2function t1=T(a,b,n)h=(b-a)/n;T1=0;for i=1:n-1x=a+i*h;T1=2*f(x)+T1;endt1=(f(a)+T1+f(b))*(b-a)/(2*n);function y=f(x)if x~=0y=sin(x)/x;elsey=1;end>> T(0,1,8)ans =0.9457P88第17题function t1=t(a,b,n)h=(b-a)/n;T=0;for i=1:n-1x=a+i*h;T=2*f(x)+T;endt1=(1+T+f(b))*(b-a)/(2*n);function y=f(x)y=1+exp(-x)*sin(4*x);>> t(0,1,4)ans =1.2836复化Simpson公式课本P75例2function S=s(a,b,n)h=(b-a)/(2*n);s1=0;s2=0;for i=1:n-1x=a+2*i*h;s1=2*f(x)+s1; %求节点和endfor j=0:n-1x=a+(2*j+1)*h;s2=4*f(x)+s2; %求中间节点的和endS=(f(a)+s1+s2+f(b))*(b-a)/(6*n); function y=f(x)if x~=0y=sin(x)/x;elsey=1;end>> s(0,1,4)ans =0.9461P88第17题function S=s(a,b,n)h=(b-a)/(2*n);s1=0;s2=0;for i=1:n-1x=a+2*i*h;s1=2*f(x)+s1; %求节点和endfor j=0:n-1x=a+(2*j+1)*h;s2=4*f(x)+s2; %求中间节点的和endS=(f(a)+s1+s2+f(b))*(b-a)/(6*n);function y=f(x)y=1+exp(-x)*sin(4*x);>> s(0,1,2)ans =1.30942、%变步长梯形法function y=T(a,b,e)h=b-a;T1=h*(f(a)+f(b))/2;A=[T1];while 1s=0;x=a+h/2;while 1if x<bs=s+f(x);x=x+h;elsebreak;endendT2=T1/2+h*s/2;A=[A,T2]; %记录区间等分数n=2^k,k=0,1,2………对应的积分值Tn。

循环实验带答案

循环实验带答案

实验标题:循环实验1 完善程序A_计算s=1+1/2+1/3+…+1/n的值实验内容和要求:【程序功能】从键盘输入正整数n,计算1+1/2+1/3+…+1/n并存放到考生文件夹中,删除扩展名为dsp、ncb、dsw、plg、opt、obj和exe等文件。

main(){int i,n;float sum=0;printf("please input n: ");scanf("%d",&n);for(i=1; i<=n ;i++)sum=sum+ 1.0/n ;printf("n=%d,sum= %.2f ",n,sum);system("pause");}实验标题:循环实验2 完善程序A_输出九九乘法表实验内容和要求:【程序功能】输出如下格式的九九乘法表1 12 2 43 3 6 94 4 8 12 165 5 10 15 20 256 6 12 18 24 30 367 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 811 2 3 4 5 6 7 8 9 【要求】最左边一列为行序号,最下面一行为列序号,其它数据为对应行序号与列序号的乘积。

将源程序保存为文件xh2.c,并存放到考生文件夹中,删除扩展名为dsp、ncb、dsw、plg、opt、obj和exe等文件。

main (){int i, j;for (i = 1; i <=9; i++) /*对列进行循环*/{printf ("%-3d", i); /*输出列的序号*/for (j = 1; j<=i ; j++) /*输出三角形乘法表*/printf ("%-3d", i*j );printf ("\n");}printf (" ");for (i = 1; i <=9; i++) /*输出最下面一行的列序号*/printf ("%3d",i);system("pause");}实验标题:循环实验3 完善程序B_输出m到n之间的素数并统计素数个数实验内容和要求:【程序功能】从键盘输入正整数m和n,显示m到n之间的所有素数。

《实验7银行家算法》课件

《实验7银行家算法》课件

系统资源分配与回收
当进程请求资源时,系统需要判断资 源的分配是否会导致系统进入不安全 状态。
在回收资源时,系统需要确保不会导 致死锁的发生。
如果安全,则分配资源;如果不安全 ,则撤销已分配的资源并让进程等待 。
死锁的检测与避免
1
死锁是指系统中出现的一种状态,在该状态下, 每个进程都在等待其他进程释放资源,从而导致 所有进程都无法继续执行。
测试案例不够全面
在测试算法时,我只使用了几个简单的测试案例,可能没有覆盖到 所有可能的场景。
缺乏对算法的深入分析
在实验过程中,我可能没有对算法进行深入的理论分析,导致对算 法的理解不够深入。
银行家算法在实际应用中的思考
01
02
03
安全性考虑
在实际应用中,银行家算 法可以帮助我们在分配资 源时避免死锁,提高系统 的安全性。
死锁的检测结果
总结词:结果呈现
详细描述:通过死锁的检测结果,可以了解系统在运 行过程中是否出现了死锁情况,以及死锁发生的条件 和位置,从而对算法的性能和效果进行评估。
05 实验总结与思考
CH家算法的基本原理
01
通过实验,我深入理解了银行家算法是如何工作的,包括安全
04 实验结果与分析
CHAPTER
系统状态变化图
总结词:直观展示
详细描述:通过系统状态变化图,可以清晰 地观察到系统在运行银行家算法过程中的资 源分配情况,以及随着时间推移系统状态的
变化趋势。
安全序列的生成
总结词:关键步骤
详细描述:安全序列的生成是银行家算法的核心步骤之一,通过安全序列的生成 ,可以确保系统在分配资源时始终处于安全状态,避免死锁的发生。
更新资源的状态,包括可用资 源数和已分配资源数。

项目七 课后练习参考答案

项目七 课后练习参考答案
2、推荐系统分为基于内容的推荐、基于知识的推荐和基于协同过滤的推荐等类别。基于内容的推荐算法,原理是用户喜欢和自己关注过的Item在内容上类似的Item;协同过滤包括基于用户的协同过滤、基于物品的协同过滤。基于用户的协同过滤推荐,可以用“臭味相投”这个词汇表示;当一个用户A需要个性化推荐时,可以先找到与A兴起相似的其他用户,然后把那些用户喜欢的、而用户A没听过的物之间的相似度,然后找出最相似的物品进行推荐。
一、判断题
√√×××
二、问答题
1、k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。

遗传算法实验七

遗传算法实验七

三、种群参数(Population Options) type—指定适应度函数的输入 数据类型。其中 Double vector表示输入数据双精度向量; Bit string表示输入数据位串; Custom表示输入数据为自定义类型,此时 用户必须自己编写创建变异和交叉函数来 接受这种类型种群的输入。 Population size—指定种群规模
Linear
一、适应度函数参数
Bounds—变量边界 Lower—变量下界向量 Upper—变量上界向量 Nonlinear
constraint function—定义非线性 约束函数,一般格式为@ nonlcon,其中 nonlcon.m是非线性约束函数的M文件,在 使用gatool之前,先用MATLAB的M文件编 辑器编辑好.
单击“Crossover”选 项前的“+”号
九、迁移参数(Migration Options)
– 迁移方向,可选项为Forward 或Both。如果为Forward,则迁移发生在下 一个子种群,即由第n个子种群向第n+1个 子种群迁移;如果为Both,则迁移发生在 两个邻近子种群,即由第n个子种群向第n1个和第n+1个子种群迁移。 Fraction—迁移个体数目在子种群个体总 数中所占的比例。 Interval—指定两次迁移间要经过多少代。
gatool图形界面窗口中各选项说明
一、适应度函数参数
function—定义适应度函数 极小化问题的适应度函数句柄,一般 格式为@objfun,其中objfun.m 是极小化问 题适应度函数的M文件,在使用 gatool 之 前,先用MATLAB的M文件编辑器进行编 辑。 Number of variables—适应度函数中独立 的变量个数。

实验7 基于Dijsktra算法的最短路径求解_数据结构习题解析与实验指导_[共2页]

实验7 基于Dijsktra算法的最短路径求解_数据结构习题解析与实验指导_[共2页]
数据结构习题解析与实验指导
实验 7
基于 Dijsktra 算法的最短路径求解
【实验目的】 1.掌握图的邻接矩阵表示法,掌握采用邻接矩阵表示法创建图的算法。 2.掌握求解最短路径的 Dijsktra 算法。 【实验内容】 问题描述 一张地图包括 n 个城市,假设城市间有 m 条路径(有向图),每条路径的长度已知。给定地 图的一个起点城市和终点城市,利用 Dijsktra 算法求出起点到终点之间的最短路径。 输入要求 多组数据,每组数据有 m+3 行。第一行为两个整数 n 和 m,分别代表城市个数 n 和路径条数 m。第二行有 n 个字符,代表每个城市的名字。第三行到第 m+2 行每行有两个字符 a 和 b 和一个 整数 d,代表从城市 a 到城市 b 有一条距离为 d 的路。最后一行为两个字符,代表待求最短路径 的城市起点和终点。当 n 和 m 都等于 0 时,输入结束。 输出要求 每组数据输出 2 行。第 1 行为一个整数,为从起点到终点之间最短路的长度。第 2 行为一串 字符串,代表该路径。每两个字符之间用空格隔开。 输入样例 33 ABC AB1 BC1 CA3 AC 68 ABCDEF A F 100 A E 30 A C 10 BC5 C D 50 D E 2

实验7安全协议练习一

实验7安全协议练习一

实验7安全协议练习一
一、判断题
1.一个人可以通过执行一系列的步骤来完成一项任务构成协议。

2.通过执行协议必须完成某项任务或达成某项共识。

3.在公钥协议中,数字证书可离线担保实体确实是公钥的所有者。

4.对不同类型的安全协议,存在着不同的攻击,而且新的攻击方法在不断产生。

5.协议中使用的密码算法被认为是抽象的并且不能对密码分析
免疫。

6.安全协议又称为密码协议。

7.密钥协商可以不需要任何的可信第三方来完成。

8.算法应用于协议中消息处理的环节,对不同的消息处理方式要求不同的算法。

9.当用户接收到的信息都是二进制串时,用户无法判断是否是经过加密等处理。

10.重放属于对安全协议攻击类型中的复改。

答案:
1.错
2.对
3.对
4.对
5.错
6.对
7.对8对9.对10.对
二、名词解释
1.协议
2.安全协议协议来解决
3.攻击者
4.可信第三方
5.密码分析
答案:
1.协议是两个或两个以上的参与者采取一系列步骤以完成某项特定的任务。

2.安全协议是以密码学为基础的信息交换协议,其目的是在网络环境中提供各种安全服务。

3.攻击者就是协议过程中企图破坏协议安全性和正确性的人。

4.可信第三方是指在完成协议的过程中,值得信任的第三方,能帮助互不信任的双方完成协议。

5.攻击者利用在协议运行中所获取的消息进行分析以获取有用的信息。

实验七 参考答案

实验七 参考答案

实验七参考答案实验七参考答案实验七指针(参考答案)1、设计程序sy7-1.c,有三个整形变量i,j,k。

设置三个指针变量p1,p2,p3,分别指向i,j,k。

然后通过指针变量使i,j,k三个变量的值顺序交换,即原来i的值赋给j,把j的原值赋给k,把k的原值赋给i。

i,j,k的原值由键盘输入,要求输出i,j,k的原值和新值。

算法分析:过去可以实现两个数字的交换,但现在被三个数字的交换所取代。

算法首先将K的值赋给中间变量,然后将J赋给K,I赋给J,最后将中间变量中存储的K赋给I;使用指针访问每个变量就是使用指针间接访问变量。

参考答案:#includevoidmain(){inti,j,k,*p1,*p2,*p3,t;printf(\请输入i,j,k:\scanf(\printf(\交换前:i=%dj=%d,k=%d\\n\p1=&i;p2=&j;p3=&k;//p1指向i,p2指向j,p3指向kt=*p3;*p3=*p2;*p2=*p1,*p1=t;//通过指针间接访问i,j,k并实现交换printf(\交换后:i=%dj=%dk=%d\\n\}手术结果:2、设计程序sy7-2.c,已知数组{1,3,5,7,9},在其中分别用下标法、地址法和指针法访问数组元素,将它们输出。

算法分析:如果指针P指向一维数组a,有几种方法可以访问数组元素:a[i]、P[i]、*(a+i)、*(P+i)参考答案:#includevoidmain(){inta[5]={1,3,5,7,9},i,*p;printf(\下标法a[i]:\for(i=0;i<5;i++)printf(\a[i]);printf(\地址法*(a+i):*(a+i):\for(i=0;i<5;i++)printf(\*(a+i));Printf(\pointer method*P:\for(P=a;P3、设计程序sy7-3.c,利用字符指针编程,要求在一行文字:“ihave50yuan.”中,删去字符‘0’,使其变成:“ihave5yuan.”,并输出结果。

实验7 生产平衡计算实训

实验7 生产平衡计算实训

实验十二生产平衡计算实训实训目的了解生产平衡的意义所在及几种常见的平衡算法实训流程建立BOM基础资料/生产工艺-->计算生产平衡生产线平衡概念将作业分成可控制的作业包分配给各个工作地,每一个工作地有一个或者两个工人操作,决定如何将作业分配给工作地这一过程叫生产线平衡。

生产线平衡的目标是分到各个工作地的时间大致相等。

步骤一:建立BOM基础资料/生产工艺打开【制造商】【物料管理】-【BOM资料】模块,点击整张新增按钮新建一个BOM清单,录入成品编码(父阶料号,如电脑主机),名称,再点击按钮保存表头;点击表身新增按钮,录入产品组成的零件物料(子阶料号),如下图1示:图1说明:子阶料号:就是组装电脑的物料清单。

制程代号:也就工序或工艺,就是改物料消耗的工序或者工艺。

用于工位领料的依据。

使用量:就是完成一个产品应该消耗的数量,是采购单生成的依据。

单击窗口下面的“工艺流程”标签后如下图2所示。

图2也就是完成这个产品的工艺流程(自动产生)。

CYCLE TIME:表示完成这个工序的时间(h、m、s、)用小时、分钟、秒钟表示。

紧前:就是完成这个工序前必须完成的工序,也就是做这道工序的前提,没有用“-”表示。

步骤二:计算生产平衡打开【制造商】【生产管理】模块,双击【生产平衡计算】命令。

打开图3所示对话框。

选择一种平衡算法。

图3图4所示为按照时间产量计算平衡,录入或修改产品对应的相关平衡计算必要参数,如下图4示:图4计算前:选择产品编号电脑主机模拟次数(100以上),在一定范围内,计算次数越多越平衡:瓶颈上限百分比(误差的比率),也是瓶颈时间的依据。

瓶颈时间:生产节拍的上限。

也就是说,计算的生产节拍是360秒,这个是标准的。

那么工位的生产节拍有可能会大于这个时间,但是有一个上限,这就是瓶颈上限百分比。

瓶颈时间就是生产节拍的时间+生产节拍的时间*瓶颈上限百分比。

生产平衡参数:生产情况。

输入每天的工作时间,计划产量。

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

一、实验名称:Apriori和Fp-growth算法
二、实验日期:2013年10 月18 日
三、实验目的:
通过本次实验掌握Apriori和Fp-growth算法的思想
四、实验用的仪器和材料:
硬件:PC电脑一台;
配置:内存,2G及以上硬盘250G及以上
软件环境:操作系统windows server 2003
数据库环境:Microsoft SQL SERVER 2005
五、实验的步骤和方法:
假设事务集合T如下表所示:
事务ID事务的项目集
T1A,B,E
T2B,D
T3B,C
T4A,B,D
T5A,C
T6B,C
T7A,C
T8A,B,C,E
1、根据以上事务集合,通过Apriori算法实现:
1)假定最小事务支持数是2,写出搜索所有频繁项集的过程。

2)假定最小置信度为60%,写出1)题中已求出的频繁3-项集的所有项组成的强关联规则。

在事务数据库中,频繁项集L={A,B,E},可以由L产生哪些关联规则?
L的非空子集S有:{A, B}, {A, E}, {B, E}, {A}, {B},{E}。

可得到关联规则如下:
A ∧
B → E conf=2/3=66%
A ∧ E →
B conf=2/2=100%
B ∧ E → A conf=2/2=100%
A →
B ∧ E conf=2/5=40%
B → A ∧ E conf=2/6=33%
E → A ∧ B conf=2/2=100%
假设最小置信度为60%,则最终输出的关联规则为:
A ∧
B → E 66%
A ∧ E →
B 100%
B ∧ E → A 100%
E → A ∧ B 100%
2、根据以上事务集合,通过Fp-growth算法实现:
1)画出FP树。

2)列出逐层递归产生的频繁项集。

六、数据记录和计算:指从实验中测到的数据以及计算结果。

七、实验结果或结论:即根据实验过程中所见到的现象和测得的数据,作出结论。

八、备注或说明:可写上实验成功或失败的原因,实验后的心得体会、建议等。

九、引用参考文献:
1. 张兴会.数据仓库与数据挖掘技术.清华大学出版社。

相关文档
最新文档