第二次实验报告
- 格式:docx
- 大小:652.90 KB
- 文档页数:12
c语言第二次实验报告摘要:本次实验主要是关于C语言的指针和数组的实验。
通过这次实验,我对C语言的指针和数组有了更深入的理解和应用能力。
一、实验要求:1.编写一个程序,实现对10个整数的输入、输出、求和、求平均数等操作。
2.编写一个程序,实现对10个学生的成绩进行排序并输出。
二、实验过程及结果:1.程序一:对10个整数进行输入、输出、求和、求平均数等操作。
步骤:(1)定义整型数组a[10],用for循环对其进行输入。
(2)定义sum变量并用for循环对数组元素进行求和运算。
(3)定义double类型的avg变量,计算数组元素的平均数。
(4)输出数组元素和平均数。
结果:输入10个整数:1 2 3 4 5 6 7 8 9 1010个数字的和为:5510个数字的平均数为:5.502.程序二:对10名学生的成绩进行排序并输出。
步骤:(1)定义数组grade[10],用for循环进行输入。
(2)用冒泡排序法进行排序。
(3)用for循环进行打印输出操作。
结果:输入10名学生的成绩:99 60 88 72 65 92 78 84 70 95排序后的成绩为:60 65 70 72 78 84 88 92 95 99三、实验总结:通过本次实验,我深刻认识到指针和数组对于C语言程序设计的重要性。
指针和数组是C语言中非常重要的概念,其掌握程度直接影响着程序的设计和效率。
在实验过程中,我充分体会到了C语言指针和数组的使用方法,并加深了其中的应用技巧。
在以后的编程过程中,我会更加熟练的使用指针和数组,努力提高自己的编程能力,为今后的学习和工作打下坚实的基础。
第二次分子生物学实验报告DNA的酶切、连接、转化和重组子的筛选与鉴定一、实验目的1、学习和掌握限制性内切酶的分类、特性与作用原理,掌握载体和外源目的DNA酶切的操作技术。
2、学习利用T4 DNA 连接酶把酶切后的载体片段和外源目的DNA 片段连接起来,构建体外重组DNA 分子的技术,了解并掌握几种常用的连接方法。
3、掌握利用CaCl2 制备感受态细胞的方法;学习和掌握热击法转化E. coli 的原理与方法。
4、学习并掌握使用红白菌落法筛选获得重组子以及α互补筛选法的原理及方法。
5、学习和掌握使用试剂盒抽提质粒的方法;6、复习琼脂糖凝胶电泳的原理和方法;7、通过对重组子进行重组质粒DNA 的抽提与酶切鉴定,进一步确定重组质粒中含有外源目的DNA 片段,并验证重组子是期望的重组子。
二、实验原理1、限制性内切酶限制性核酸内切酶是一类能够识别双链DNA 分子中的某种特定核苷酸序列,并由此切割DNA 双链结构的酶,主要是从原核生物中分离纯化出来的。
在限制性核酸内切限制酶的作用下,侵入细菌的“外源”DNA 分子便会被切割成不同大小的片段,而细菌自己固有的DNA 由于修饰酶(通常是一种甲基化酶)的保护作用,则可免受限制酶的降解。
目前已经鉴定出3 种不同类型的限制性核酸内切酶,即Ⅰ型酶、II 型酶和III 型酶。
Ⅰ型酶切割位点是随机的,至少距识别位点1000bp。
Ⅲ型限制酶的切割位点距识别序列3'端为24—26bp。
Ⅱ型限制酶的切割位点一般在识别序列上或与之靠近,而且具有序列特异性,故在基因克隆中有特别广泛的用途。
Ⅱ型核酸内切限制酶具有3个基本的特性:①在DNA 分子双链的特异性识别序列部位切割DNA 分子,产生链的断裂;②2个单链断裂部位在DNA 分子上的分布通常不是彼此直接相对的;③断裂结果形成的DNA 片段往往具有互补的单链延伸末端。
限制性核酸内切酶对DNA 底物的酶切作用是否完全,直接关系到连接反应、重组体分子的筛选和鉴定等实验结果。
两次仪器高法水准测量实验报告对于仪器高法水准测量实验,我进行了两次实验,并撰写了以下报告。
一、实验目的本次实验的目的是掌握水准仪的使用方法,了解仪器高法水准测量的原理,并通过实验计算出不同目标点之间的高差。
二、实验原理1. 仪器高法水准测量原理仪器高法水准测量是利用水准仪来确定不同目标点之间的高度差,根据高度的测量需要,可将测站分为平距越小的几组,每组称为测段。
测量从起始测站开始,沿着测段逐步确定各目标点的高程。
2. 水准仪的使用方法在进行仪器高法水准测量前,需要先通过水准仪来确定起始测站的基准高度,然后再进行不同目标点之间的高度测量。
使用水准仪时,需要进行水平、垂直调节,以保证数据的准确性。
三、实验仪器1. 水准仪2. 四抬杆3. 测量带4. 针式水平仪四、实验步骤1. 调整水准仪的水平和垂直,使其处于工作状态。
2. 根据实际需要,确定不同目标点的位置和编号。
3. 把四抬杆固定在目标点上,并使用水准仪对杆进行观测,记录读数。
4. 计算不同目标点之间的高差。
五、实验结果第一次实验:起始测站高度:100.50米目标点1高度:99.42米目标点2高度:98.75米目标点3高度:98.21米目标点4高度:97.96米计算结果:目标点1高程:100.50-0.08=100.42米目标点2高程:100.50-1.75=98.75米目标点3高程:100.50-2.29=98.21米目标点4高程:100.50-2.54=97.96米第二次实验:起始测站高度:99.75米目标点1高度:98.83米目标点2高度:98.02米目标点3高度:97.60米目标点4高度:97.32米计算结果:目标点1高程:99.75-0.92=98.83米目标点2高程:99.75-1.73=98.02米目标点3高程:99.75-2.15=97.60米目标点4高程:99.75-2.43=97.32米六、实验结论通过本次仪器高法水准测量实验的两次实验结果可看出,不同目标点的高度差是根据起始测站的高度与目标点的高度之差来计算的。
2014-2015学年第一学期实验报告课程名称:Java SE 平台技术实验名称:JA VA编程(基础练习)姓名:学号:成绩:指导教师:日期:目录一、实验目的 (3)二、实验内容 (3)2.1 构建一个继承类。
(3)2.2 抽象类和接口的使用 (3)2.3 图像类编程和事件驱动程序。
(3)三、实验环境 (3)四、实验结果 (3)4.1构建继承类 (3)4.2抽象类和接口的使用 (3)4.3 事件驱动程序 (3)五、附录 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.2 设计方案 (4)5.1构建继承类 (4)5.2抽象类和接口的使用 (4)5.3 事件驱动程序 (4)5.3 算法 (4)5.3.1 三角形继承类 (4)5.3.2 抽象类与接口 (5)5.3.3 画出小车 (5)5.4. 设计图 (6)5.4.1 三角形类UML设计图 (6)5.4.2.1 Colorable接口UML设计图 (7)5.4.2.2 CompareTo与Clone接口UML设计图 (8)5.4.3 小车UML设计图 (9)5.5 仿真结果 (9)5.5.1构建继承类 (9)5.5.2抽象类和接口的使用 (9)5.5.3 事件驱动程序 (10)5.6 调试心得 (10)5.6.1 错误分析 (10)5.6.2 心得与收获 (10)一、实验目的通过使用JA V A语言进行基本程序的开发,掌握JA V A通用IDE,练习类的封装使用、JA V A基本类库的使用、利用UML进行简单建模。
二、实验内容2.1 构建一个继承类。
2.2 抽象类和接口的使用2.3 图像类编程和事件驱动程序。
三、实验环境Eclipse、Win 8.1四、实验结果4.1构建继承类输出了三角形的三边长,面积,周长。
4.2抽象类和接口的使用4.2.1执行Colorable接口,输出了一条how to color的信息4.2.2执行Comparable 和Cloneable接口,输出了创建的五边形和克隆五边形的周长和面机的信息。
第二次实验报告心得前言本次实验是第二次实验,我们小组研究的主题是XXX。
通过这次实验,我们掌握了XXX的基本原理和实验操作方法。
在实验过程中,我们遇到了挑战和问题,但也取得了进步和收获。
实验过程与成果我们小组在实验前制定了详细的实验计划并分工合作。
首先,我们对XXX进行了深入的了解和学习,并通过查阅大量的文献和资料来提高对该主题的理解和认识。
在熟悉了实验内容和操作流程后,我们进行了实验的准备工作,包括搭建实验装置、调试仪器设备等。
在实验过程中,我们认真操作,严格遵守实验操作规范,确保了实验的安全性和准确性。
我们按照实验计划逐步进行实验并记录下实验数据和现象。
同时,我们也积极讨论和交流,共同解决实验中遇到的问题和困难。
通过实验,我们获得了大量的实验数据和结果。
我们对实验数据进行了仔细的整理和分析,并进行了合理的处理和计算。
最终,我们得到了一系列有关XXX的重要结论和发现。
实验收获与成长本次实验让我们获得了许多宝贵的经验和知识,也让我们在实践中得到了成长。
首先,通过实验过程,我们掌握了XXX的基本原理和实验方法。
我们深入研究了相关的理论知识,并将其运用到实际操作中。
我们通过实验实践,进一步加深了对XXX的理解,加强了对实验方法的掌握。
其次,通过团队合作,我们学会了有效地协作和沟通。
在实验过程中,我们互相帮助、共同解决问题,并且共同分工合作,提高了实验效率和质量。
我们在团队中形成良好的合作氛围,培养了团队意识和合作能力。
最后,通过实验报告的撰写,我们学会了对实验数据进行整理和分析,并将实验结果清晰准确地表达出来。
这锻炼了我们的科学思维和表达能力,提高了我们的写作水平。
反思与改进在实验中,我们也面临了一些挑战和问题。
通过实验的反思和总结,我们认识到了不足之处,并提出了一些改进的建议。
首先,我们在实验前准备方面需要更加细致和仔细。
在本次实验中,我们发现有些仪器设备的调试工作并没有充分准备,导致实验过程中出现了一些意外情况。
东南大学生物科学与医学工程学院虚拟仪器实验报告第二次实验实验名称:程序结构专业:生物医学工程姓名:学号:同组人员:学号:实验室: 综合楼716实验时间:10月14日评定成绩:审阅教师:一、计算n的阶乘 (3)1实验题目 (3)2实验目的 (3)3实验内容 (3)4设计方案选择、方案的优缺点。
(3)5软件设计: (3)6调试: (6)7测试结果和分析。
(6)8使用说明: (7)9结束语、总结、心得体会。
(7)二、实现加减乘除的计算器 (7)1实验题目 (7)2实验目的 (7)3实验内容 (7)4设计方案选择、方案的优缺点。
(7)5软件设计: (8)6调试: (9)7测试结果和分析 (10)8使用说明: (10)9结束语、总结、心得体会。
(10)一、计算n的阶乘1实验题目完成计算n的阶乘2实验目的①前面板数字控制器可随意输入n的值,并能显示结果(注:0!=1)。
②For循环中重复时间不少于100ms(即程序每100ms循环一次)。
3实验内容⑴学习while、For循环的使用方法。
⑵学习移位寄存器的概念,学习移位寄存器的使用。
⑶学习使用Case结构,学习添加和删除分支。
4设计方案选择、方案的优缺点。
计算n的阶乘的计算器方案选择:利用循环语句,进行数字n的阶乘运算,利用移位寄存器实现数据的传送完成数字连乘。
利用时间计时器的差值得出程序运行所用时间。
能够简洁明了的实现计算n的阶乘的功能,数据正确。
5软件设计:虚拟仪器设计步骤详细介绍。
(1)程序前面板设计:数值输入控件:名称:输入n 属性:双精度(DBL)用途:面向用户,手动输入n值数值显示控件:名称:n!的值属性:双精度(DBL)用途:显示n!运算结果名称:运行时间(ms)属性:双精度(DBL)用途:显示程序运行时间面板的布局:。
(2)框图程序设计:程序流程图:源程序:6调试:调试步骤:使用高亮执行该段程序,观察数据流的动向。
调试中问题:一开始使用整型,对于较小数值,结算结果正确,但对于较大的数值计算结果错误。
北京工业大学- 第学期信息学部计算机学院3月31日报告题目:输入中缀体现式,输出后缀体现式,并对体现式求值A.分析中缀体现式旳运算顺序受运算符优先级和括号旳影响。
因此,将中缀体现式转换成等价旳后缀体现式旳核心在于如何恰当旳去掉中缀体现式中旳括号,然后在必要时按照先乘除后加减旳优先规则调换运算符旳先后顺序。
在去括号旳过程中用栈来储存有关旳元素。
基本思路:从左至右顺序扫描中缀体现式,用栈来寄存体现式中旳操作数,开括号,以及在这个开括号背面旳其她临时不能拟定计算顺序旳内容。
(1)当输入旳是操作数时,直接输出到后缀体现式(2)当遇到开括号时,将其入栈(3)当输入遇到闭括号时,先判断栈与否为空,若为空,则表达括号不匹配,应作为错误异常解决,清栈退出。
若非空,则把栈中元素依次弹出,直到遇到第一种开括号为止,将弹出旳元素输出到后缀体现式序列中。
由于后缀体现式不需要括号,因此弹出旳括号不放到输出序列中,若没有遇到开括号,阐明括号不匹配,做异常解决,清栈退出。
(4)当输入为运算符时(四则运算+ - * / 之一)时:a.循环,当(栈非空&&栈顶不是开括号&&栈顶运算符旳优先级不低于输入旳运算符旳优先级)时,反复操作将栈顶元素弹出,放到后缀体现式中。
b.将输入旳运算符压入栈中。
(5)最后,当中缀体现式旳符号所有扫描完毕时,若栈内仍有元素,则将其所有依次弹出,放在后缀体现式序列旳尾部。
若在弹出旳元素中遇到开括号,则阐明括号不匹配,做异常解决,清栈退出。
B.实现#include<stdio.h>#include<string.h>#include<stdlib.h>#include<stack>using namespace std;#define N 1000char infix[N]; //中缀体现式(未分离,都在一种字符串里)char expression[N][10]; //保存预解决过旳体现式,也就是每个元素都分离过旳体现式char suffix[N][10]; //保存后缀体现式旳操作数int count;//体现式中元素旳个数(一种完整到数字(也许不止一位数)或者符号)int suffixLength;//后缀体现式旳长度int level(char a){switch(a){case '#':return 0;case '+':case '-':return 1;case '*':case '/':return 2;case '^':return 3;default:break;}return -1;}int isDigital(char x){if( (x>='0'&&x<='9') || (x>='A'&&x<='Z') || (x>='a'&&x<='z') || (x=='.') )return 1;return 0;}int isNumber(char *str){int i;for(i=0;str[i];i++){if(isDigital(str[i])==0)return 0;}return 1;}/*************************************预解决中缀体现式,把持续旳字符分离成不同旳元素,用字符串数组(expression[][])保存,以便背面旳计算,由于这里考虑了运算数也许不全是个位数例如:(12+3)在解决成后缀体现式时,是123+,容易产生歧义(1+23 ? 12+3)*************************************/void pretreatment(char *str){int i,j,numberFlag;char temp[3];char number[10];count=0;numberFlag=0;for(j=0,i=0;str[i];i++){if(isDigital(str[i])==0){if(numberFlag==1){number[j]=0;strcpy(expression[count++],number); j=0;numberFlag=0;}if(str[i]!=' '){temp[0]=str[i];temp[1]=0;strcpy(expression[count++],temp); }}else {numberFlag=1;number[j++]=str[i];}}puts("分离后旳体现式为");for(i=0;i<count;i++){printf("%s ",expression[i]);}puts("");puts("");}/*****************************************中缀体现式转后缀体现式遍历字符串,对于str[i]str[i]是运算数(或者是字母替代旳运算变量)输出;str[i]是符号,有两种状况(1),是右括号,栈顶元素输出,直到与str[i]匹配旳左括号出栈(左括号不用输出打印)(2),是运算符,判断str[i]与栈顶元素旳优先级,str[i]优先级不高于栈顶符号,则栈顶元素输出,直到栈空或者栈顶符号优先级低于str[i]*****************************************/void infix_to_suffix(char str[N][10]){memset(suffix,0,sizeof(suffix));suffixLength=0;stack <char*> st;int i=0;char Mark[2]="#";st.push(Mark);do{if(isNumber(str[i])==1)//运算数直接保存到后缀体现式中strcpy(suffix[suffixLength++],str[i]);else if(str[i][0]=='(') //是左括号,直接入栈st.push(str[i]);else if(str[i][0]==')'){ //是右括号,栈顶出栈,直到与其匹配旳左括号出栈while( strcmp(st.top(),"(")!=0 ){char temp[10];strcpy(temp,st.top());strcpy(suffix[suffixLength++],temp);st.pop();}st.pop();}else if( strcmp(st.top(),"(")==0 )//是运算符,且栈顶是左括号,则该运算符直接入栈st.push(str[i]);else { //是运算符,且栈顶元素优先级不不不小于运算符,则栈顶元素始终//出栈,直到栈空或者遇到一种优先级低于该运算符旳元素while( !st.empty() ){char temp[10];strcpy(temp,st.top());if( level(str[i][0]) > level(temp[0]) )break;strcpy(suffix[suffixLength++],temp);st.pop();}st.push(str[i]);}i++;}while(str[i][0]!=0);while( strcmp(st.top(),"#")!=0 ){ //将栈取空结束char temp[10];strcpy(temp,st.top());strcpy(suffix[suffixLength++],temp);st.pop();}puts("后缀体现式为:");for(i=0;i<suffixLength;i++){printf("%s",suffix[i]);}puts("");puts("");}/**************************************计算后缀体现式旳值**************************************/char kt[N][10];int stackTop;void getResult(char str[N][10]){stackTop=0;/*这里要注意,内存旳分派方案导致 i 旳位置就在temp[9]旁边,然后strcpy()函数直接拷贝内存旳话,在temp越界状况下会覆盖 i 旳值*/int i;char temp[10];for(i=0;i<suffixLength;i++){if(isNumber(str[i])==1){strcpy(kt[stackTop++],str[i]);}else {char a[10],b[10];double na,nb,nc;strcpy(a,kt[stackTop-1]);na = atof(a);stackTop--;strcpy(b,kt[stackTop-1]);nb = atof(b);stackTop--;if(str[i][0]=='+')nc=nb+na;else if(str[i][0]=='-')nc=nb-na;else if(str[i][0]=='*')nc=nb*na;else if(str[i][0]=='/')nc=nb/na;sprintf(temp,"%lf",nc);strcpy(kt[stackTop++],temp);}}puts("\nThe result is : %f\n");printf("%s\n",kt[stackTop-1]);}int main(){printf("Please input calculate Expression :\n"); char temp[N];while(gets(infix)){strcpy(temp,infix);pretreatment( strcat(temp," ") );infix_to_suffix(expression);getResult(suffix);}return 0;}C.总结实验需要细心细心再细心。
实验名称:I/O接口实验与LED显示实验目录一.实验目的和要求 (3)二.实验原理 (3)三.实验方案与实验步骤 (5)四.实验设备与器材 (7)五.实验记录 (7)六.实验总结 (7)七.源代码 (7)一.实验目的与要求(一)实验目的1、I/O接口实验了解单片机各个口的输出,以及延时程序的计算;2、L ED显示实验,了解数码管显示机理,学会片外编码。
(二)实验要求1、I/O接口实验利用实验板I/O口(例如P0口)控制8个LED循环显示,循环点亮时间间隔约为1秒(采用软件延时实现)。
2、LED显示实验要求在8个LED数码管显示8个指定的数(例如学号后8位)。
本实验不需要接线。
二.实验原理1、I/O接口实验图2-1 上排LED指示灯(与FPGA相连)原理图图2-2 下排LED指示灯(通过CPLD译码与CPU相连)原理图主板左下方有16个LED指示灯,其中上面8个LED指示灯FLED0~FLED7输入直接与FPGA 插座引脚相连,可由FPGA模块输出引脚直接驱动,电路如图2-1所示,输入高电平时相应指示灯被点亮(这里实验箱开机复位后默认是点亮的)。
下面一排的8个LED指示灯LED0~LED7输入与CPU总线相连,作为系统扩展接口,其地址选通(0F600H)由CPLD地址译码控制,电路如图2-2所示,输入低电平时相应指示灯被点亮。
本实验采用的是上面一排与FPGA 相连的LED,需要8根导线将I/O口与相应的LED连接。
2、LED显示实验如图所示:实验装置上设有8只共阳极七段数码管及驱动电路,8只数码管共数据线,通过片选可以分别显示。
段码表为:表2-1 数码管段码表编程提示:数码管模块具有两个地址:片选地址(位控地址)0F400H和数据(段码)地址0F300H,要在某个数码管上显示1个数,需要先向片选地址上送一个数选中其中一个数码管,再向数据地址送要显示的数据的段码值,这就是位控和段控。
数码管的I/O地址都为片外地址。
计算机系统基础实验课第二次实验报告对二进制炸弹求解过程的详细描述首先使用objdump命令对bomb程序进行反汇编,并将汇编代码输出到asm.txt中。
阶段一、字符串比较打开asm.txt文件,搜索到phase_1函数,可以看到以下代码。
08048b33 <phase_1>:8048b33: 83 ec 14 sub $0x14,%esp8048b36: 68 7c a0 04 08 push $0x804a07c8048b3b: ff 74 24 1c pushl 0x1c(%esp)8048b3f: e8 3e 05 00 00 call 8049082 <strings_not_equal>8048b44: 83 c4 10 add $0x10,%esp8048b47: 85 c0 test %eax,%eax8048b49: 74 05 je 8048b50 <phase_1+0x1d>8048b4b: e8 29 06 00 00 call 8049179 <explode_bomb>8048b50: 83 c4 0c add $0xc,%esp8048b53: c3 ret可以看出,用户输入字串指针保存在0x1c(%esp),然后调用<strings_not_equal>,待<strings_not_equal>返回后,测试返回值,若equal则进入下一phase,否则<explode_bomb>,从<strings_not_equal>可知该函数用于比较两函数的值,因此需要两个字串作为输入,上面代码中, pushl 0x1c(%esp)用于传递用户字串指针,则push $0x804a07c自然是传递比较字串的指针了。
打开gdb,x/s 0x80497c0, 可以直接查看到该指针指向的子符串:所以第一个炸弹的拆弹指令为:I turned the moon into something I call a Death Star.阶段二、循环在asm.txt文件中可以找到phase_2函数代码如下:08048b54 <phase_2>:8048b54: 56 push %esi8048b55: 53 push %ebx8048b56: 83 ec 2c sub $0x2c,%esp8048b59: 65 a1 14 00 00 00 mov %gs:0x14,%eax8048b5f: 89 44 24 24 mov %eax,0x24(%esp)8048b63: 31 c0 xor %eax,%eax8048b65: 8d 44 24 0c lea 0xc(%esp),%eax8048b69: 50 push %eax8048b6a: ff 74 24 3c pushl 0x3c(%esp)8048b6e: e8 2b 06 00 00 call 804919e <read_six_numbers>8048b73: 83 c4 10 add $0x10,%esp8048b76: 83 7c 24 04 01 cmpl $0x1,0x4(%esp)8048b7b: 74 05 je 8048b82 <phase_2+0x2e>8048b7d: e8 f7 05 00 00 call 8049179 <explode_bomb>8048b82: 8d 5c 24 04 lea 0x4(%esp),%ebx8048b86: 8d 74 24 18 lea 0x18(%esp),%esi8048b8a: 8b 03 mov (%ebx),%eax8048b8c: 01 c0 add %eax,%eax8048b8e: 39 43 04 cmp %eax,0x4(%ebx)8048b91: 74 05 je 8048b98 <phase_2+0x44>8048b93: e8 e1 05 00 00 call 8049179 <explode_bomb>8048b98: 83 c3 04 add $0x4,%ebx8048b9b: 39 f3 cmp %esi,%ebx8048b9d: 75 eb jne 8048b8a <phase_2+0x36>8048b9f: 8b 44 24 1c mov 0x1c(%esp),%eax8048ba3: 65 33 05 14 00 00 00 xor %gs:0x14,%eax8048baa: 74 05 je 8048bb1 <phase_2+0x5d>8048bac: e8 df fb ff ff call 8048790 <__stack_chk_fail@plt>8048bb1: 83 c4 24 add $0x24,%esp8048bb4: 5b pop %ebx8048bb5: 5e pop %esi8048bb6: c3 ret根据call 804919e <read_six_numbers>可以推测题目要求是输入六个数字。
MATLAB数学实验报告指导老师:班级:小组成员:时间:201_/_/_Matlab第二次实验报告小组成员:1题目:实验四;MATLAB选择结构与应用实验目的:掌握if选择结构与程序流程控制;重点掌握break;return;pause语句的应用..问题:问题1:验证“哥德巴赫猜想”;即:任何一个正偶数n>=6均可表示为两个质数的和..要求编制一个函数程序;输入一个正偶数;返回两个质数的和..问题分析:由用户输入一个大于6的偶数;由input语句实现..由if判断语句判断是否输入的数据符合条件..再引用质数判断函数来找出两个质数;再向屏幕输出两个质数即可..编程:function z1;z2=geden;n=input'please input n'if n<6disp'data error';returnendif modn;2==0for i=2:n/2k=0;for j=2:sqrtiif modi;j==0k=k+1;endendfor j=2:sqrtn-iif modn-i;j==0k=k+1;endendif k==0fprintf'two numbers are'fprintf'%.0f;%.0f';i;n-ibreakendendend结果分析:如上图;用户输入了大于6的偶数返回两个质数5和31;通过不断试验;即可验证哥德巴赫猜想..纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰;更快的解决问题..2题目:实验四;MATLAB选择结构与应用实验目的:用matlab联系生活实际;解决一些生活中常见的实际问题..问题:问题四:在一边长为1的四个顶点上各站有一个人;他们同时开始以等速顺时针沿跑道追逐下一人;在追击过程中;每个人时刻对准目标;试模拟追击路线;并讨论.. (1)四个人能否追到一起(2)若能追到一起;每个人跑过多少路程(3)追到一起所需要的时间设速率为1问题分析:由正方形的几何对称性和四个人运动的对称性可知;只需研究2个人的运动即可解决此问题..编程:hold onaxis0 1 0 1;a=0;0;b=0;1;k=0;dt=0.001;v=1;while k<10000d=norma-b;k=k+1;plota1;a2;'r.';'markersize';15;plotb1;b2;'b.';'markersize';15;fprintf'k=%.0f b%.3f;%.3f a%.3f;%.3f d=%.3f\n';k;b1;b2;a1;a2;da=a+b1-a1/d*dt;b2-a2/d*dt;b=b+b2-a2/d*dt;-b1-a1/d*dt;if d<=0.001breakendendfprintf'每个人所走的路程为:%.3f';k*v*dtfprintf'追到一起所需要的时间为%.3f';k*dt结果分析:上图为2人的模拟运动路线;有对称性可解决所提问题..-上图为运算过程和运算结果..四个人可以追到一起;走过的路程为1.003;时间也为1.003.纪录:此题利用正方形和运动的对称性可以简便运算..3题目:实验八;河流流量估计与数据插值目的:由一些测量数据经过计算处理;解决一些生活实际问题..问题:实验八上机练习题第三题:瑞士地图如图所示;为了算出他的国土面积;做以下测量;由西向东为x轴;由南向北为y轴;从西边界点到东边界点划分为若干区域;测出每个分点的南北边界点y1和y2;得到以下数据mm..已知比例尺1:2222;计算瑞士国土面积;精确值为41288平方公里..测量数据如下:x=7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158 ;y1=44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68;y2=44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68;问题分析:先由题目给定的数据作出瑞士地图的草图;再根据梯形法;使用trapz语句;来估算瑞士国土的面积..编程:x=7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158;y1=44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68;y2=44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68;plotx;y1;'r.';'markersize';15;plotx;y2;'r.';'markersize';15;axis0 160 0 135grid;hold ont=7:158;u1=splinex;y1;t;u2=splinex;y2;t;plott;u1plott;u2s1=trapzt;u1;s2=trapzt;u2;s=s2-s1*2222*22222/10000000;fprintf'S=%.0f';s结果分析:上图为由所给数据绘制出的瑞士地图..上图为运算结果;计算出瑞士的国土面积为42472平方公里;与准确值41288较为接近..纪录:使用梯形分割的方法;trapz语句可以方便计算不规则图形面积;但存在一定误差..4题目:实验七:圆周率的计算与数值积分目的:将数值积分最基本的原理应用于matlab之中;解决一些与积分有关的问题..问题:实验七上机练习题第一题:排洪量某河床的横断面如图7.3所示;为了计算最大排洪量;需要计算其断面积;试根据所给数据m用梯形法计算其断面积..问题分析:河床断面可近似分割成若干曲边梯形;近似处理把它们当做梯形来计算面积可使问题得到简化..编程:clc;clear;x=0 4 10 12 15 22 28 34 40;y=0 1 3 6 8 9 5 3 0;y1=10-y;plotx;y1;'k.';'markersize';15;axis0 40 0 10;grid;hold ont=0:40;u=splinex;y1;t;plott;u;s=40*10-trapzt;u;fprintf's=%.2f\n';s结果分析:上图为河床的断面图..上图为计算结果面积约为180.70平方米..纪录:使用梯形法计算不规则图形面积十分简便易行..5题目:实验七:圆周率的计算与数值积分目的:使用matlab计算解决一些有关积分的问题..问题:实验七上机练习题第三题:从地面发射一枚火箭;在最初100秒内记录其加速度如下;试求火箭在100秒时的速度..Ts=0 10 20 30 40 50 60 70 80 90 100;Am/s*s=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.67 54.01 57.23;问题分析:加速度为速度的微分;已知微分求积分;类似于面积问题;可使用梯形法来计算..编程:clc;clear;x=0 10 20 30 40 50 60 70 80 90 100;y=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.6754.01 57.23;plotx;y;'k.';'markersize';15;axis0 100 20 60;grid;hold ons=0:10:100;z=splinex;y;s;plots;y;v=trapzx;y;fprintf'v=%.2f\n';v结果分析:上图为加速度变化图..上图为计算结果;求得火箭在100秒时速度约为4168.95m/s..纪录:梯形法可以推广解决许多已知微分求积分的其他问题..6题目:实验七:圆周率的计算与数值积分目的:计算曲线弧长闭曲线周长可使用微元法;ds=sqrtdx^2+dy^2;在转化微积分问题;累加即可得到结果..问题:实验七上机练习题第三题:计算椭圆想x^2/4+y^2=1的周长;使结果具有五位有效数字..问题分析:编程:s=0;dx=0.001;for x=0:0.001:1.999dy=1.-x+0.001.^2/4-1.-x.^2/4;ds=sqrtdx.^2+dy.^2;s=s+ds;ends=4*s;fprintf'the length is'fprintf'%.4f';s结果分析:上图为计算结果;给定椭圆的周长约为9.1823五位有效数字纪录:计算不规则曲线弧长;可使用微元法;划分为若干小的看做直角三角形;利用勾股定理解决..7题目:实验九人口预测与数据拟合目的:掌握一些曲线拟合的方法;了解曲线拟合常用函数..问题:用电压U=10v的电池给电容器充电;t时刻的电压Vt=U-U-V0exp-t/τ;其中V0是电容器的初始电压;τ是充电常数;由所给数据确定V0和τ..t=0.5 1 2 3 4 5 7 9;V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;问题分析:题中已给出函数关系式;为指数函数曲线拟合;将所给函数式整理可得标准的exp形函数曲线;从而便于解决..编程:t=0.5 1 2 3 4 5 7 9;V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;plott;V;'k.';'markersize';20;axis0 10 0 4;grid;hold onpause0.5n=8;a=sumt1:n;b=sumt1:n.*t1:n;c=sumlogV1:n;d=sumt1:n.*logV1:n;A=n a;a b;B=c;d;p=invA*Bx=0:10;y=expp1+p2*x;plotx;y;'r-';'linewidth';2结果分析:上图为电压与时间关系图..上图为计算结果;即U-V0=1.4766;所以V0=8.5234;-1/τ=-0.2835;所以τ=3.5273纪录:曲线拟合的一个重难点是选择合适的曲线函数;才能提高拟合度..8题目:实验七圆周率的计算与数值积分目的:拓展圆周率的各种计算方法;掌握其他数值的近似计算方法..问题:实验七练习2:计算ln2的近似值精确到10的-5次方(1)利用级数展开的方法来计算(2)利用梯形法计算(3)利用抛物线法问题分析:级数展开;梯形法;抛物线法是常见的近似运算方法..编程:1级数展开的方法clc;clear;n=0;r=1;p=0;k=-1;while r>=0.1e-5n=n+1;k=k*-1;p1=p+k/n;r=absp1-p;fprintf'n=%.0f;p=%.10f\n';n;p1;p=p1;end2梯形法clc;clear;f=inline'1./x';x=1:0.1:2;y=fx;p=trapzx;y;fprintf'p=%.6f\n';p3抛物线法clc;clear;f=inline'1./x';a=1;b=2;n=1;z=quadf;a;b;fprintf'z=%.10f\n';z结果分析:(1)级数展开的方法(2)梯形法3抛物线法纪录:级数展开法;梯形法;抛物线法;计算近似值时应合理利用..梯形法和抛物线法不易提高精确度;级数展开法可以提高精确度..9题目:实验八河流流量估计与数据插值目的:掌握求插值多项式的方法;并利用此计算近似值..问题:已知y=fx的函数表如下x=0.40 0.55 0.65 0.80 0.90 1.05;y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382;求四次拉格朗日插值多项式;并由此求f0.596问题分析:利用所给函数表可计算拉格朗日插值多项式..编程:function p=lagrangex;yL=lengthx;a=onesL;for j=2:La:;j=a:;j-1.*x';endx=inva*y';for i=1:Lpi=xL-i+1;endx=0.40 0.55 0.65 0.80 0.90 1.05;y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382; plotx;y;'k.';'markersize';15axis0 2 0 2grid;hold on;p=lagrangex;y;t=0:0.1:1.5;u=polyvalp;t;plott;u;'r-'a=polyvalp;0.596结果分析:上图为所求结果;估算值和插值多项式..纪录:插值多项式是一项十分实用的方法..10题目:求正整数n的阶乘:p=1*2*3*…*n=n;并求出n=20时的结果目的:练习使用循环变量解决数学问题问题:对程序:Clear;clc;n=20;p=1;for i=1:np=p*i;fprintf’i=%.0f;p=%.0f\n’;i;pend进行修改使它:利用input命令对n惊醒赋值问题分析:题中给出程序中“n=20”修改;使用input命令;讲题中的输出命令放出循环之外..编程:clear;clc;n=input'n=';p=1;for i=1:np=p*i;endfprintf'i=%.0f;p=%.0f\n';i;p结果:n=20i=20;p=2432902008176640000>>结果分析:使用input命令可以实现人机对话;使用户自由赋值;输出语句在程序中的位置对输出的结果有很大的影响;在循环内部可以在计算过城中不断输出结果;在循环之外则可以控制只输出最后结果..11题目:对于数列{√2};n=1;2;…;求当其前n项和不超过1000时的n的值及合的大小..目的:运用条件循环解决文帝个项数的循环程序求解;问题:对程序:clear;clc;n=0;s=0;while s<=1000n=n+1;s=s+sqrtn;fprintf’n=%.0f;s=%.4f\n’;n;send问题分析:题中所给程序中的限制变量为上次循环之后的s;导致s超过上限后仍有一次的循环;若把循环变量改为这次的s;则可以避免这种情况的发生..编程:clear;clc;n=0;s=0;while s+sqrtn<=1000n=n+1;s=s+sqrtnfprintf'n=%.0f;s=%.4f\n';n;send结果:……s =970.8891n=128;s=970.8891s =982.2469n=129;s=982.2469s =993.6487n=130;s=993.6487>>结果分析:从结果中可以看出;最后一步为我们需要的答案;从这道题我们可以得出循环变量对一道编程的重要性..。
班级: 学号: 姓名: 成绩:实验2 非线性方程的数值解法实验1实验目的1)进一步熟练掌握求解非线性方程的牛顿迭代法和弦截法。
2)根据牛顿迭代法和弦截法的原理,编写程序求解非线性方程,提高编程解决问题的能力。
2 实验内容(1)用牛顿法和割线法求下列方程的根x^2-e^x=0;x*e^x-1=0;(23实验原理(1)牛顿迭代公式:1()/'()k k k k x x f x f x +=- 双点弦法公式:111()()()()k k k k k k k f x x x x x f x f x +--=--- (2)令2()f x x A =-,再用牛顿法求根。
4实验步骤1)根据牛顿迭代法,双点弦法的算法编写相应的求根函数;2)用牛顿迭代法和双点弦法分别对方程进行求解;5 程序设计牛顿迭代法x0=1.0;N=100;k=0;eps=5e-6;delta=1e-6;while(1)x1=x0-fc1(x0)/fc2(x0);k=k+1;if k>Ndisp('Newton method failed')breakendif(abs(x1-x0)<delta || abs(fc1(x1))<delta) break;endx0=x1;endfprintf('%f',x0)fprintf('%f',abs(fc1(x1)))双点弦法function cutline(x0,x1)N=100;k=0;delta=5e-8;while(1)(abs(x1-x0)>=delta)c=x1;x1=cutnext(x0,x1);x0=c;k=k+1;if k>Ndisp('Cutline method failed')break;endif(abs(x1-x0)<delta || abs(fc1(x1))<delta) break;endendfprintf('%10f\n',x1);function y=cutnext(a,b)y=b-fc(b)/(fc(b)-fc(a))*(b-a);1)原函数function fc1=fc1(x)fc1=x^2-exp(x);end导函数function fc2=fc2(x)fc2=2*x-exp(x);end2)原函数导函数3)原函数导函数6实验结果及分析注:牛顿迭代法由于设置delta=1e-6,所以算出的误差e<1.0*10^-6;割线法由于设置delta=5e-8,所以误差e<5.0*10^-8.7总结。
《数学建模实验》上机实验报告班级:计算机35班学号:2130505099姓名:田博文【实验一】一上底面半径2米、下底面半径4米、高4米的圆台形水池内盛满了水,由池底一横截面积为0.001平方米的小孔放水。
求在任意时刻的水面高度和将水放空所需的时间。
一、问题分析:在dt很小一段时间内,水的流速v可以看成是不变的与水面高度h有关的函数,即v=gh2;在dt时间内流出的水量,可以近似的为一圆柱,对应的圆柱高为dh;由于容器下降的水量与流出的水量相等,令小孔面积为b,即dV=π2r dh=bvdt;可得dh与dt的关系为:dh=bvdt/(π2r);根据相似三角形原理可得,r=4-h/2;初始条件有;h(0)=4;为表示方便,引入变量L=4-h故r=2+L/2二、代码:T=0;for L=0:0.001:4-0.001 %选取积分微元为0.001,即dhV=0.001*pi*(2+(1/2*L))^2; %水面处的dV,b=0.001t=V/(sqrt(2*(4-L)*9.8)*0.001) %dV与dt关系T=T+t;plot(T,(4-L),'red'); hold onend三、运行结果:四、结论:在任意时刻的水面高度和将水放空所需的时间如上图红线所示,横轴为时间,纵轴为水面高度。
【实验二】有A、B、C三个场地,每一个场地都出产一定数量的原料,同时也消耗一定数量的产品,具体数据如下表所示。
已知制成每吨产品需要消耗3吨原料,A、B两地,A、C两地和B、C两地之间的距离分别为150千米、100千米和200千米,假设每万吨原料运输1千米的运费为5000元,每万吨产品运输1千米的运费为6000元。
由于地区条件的差异,在不同地区设厂的费用不同,由于条件的限制,在B处建厂的规模不能超过5万吨,问:在这三地如何建厂、规模建多大才能使得总费用最小?地点年产原料(万吨)年销产品(万吨)生产费用(万元/万吨)A 20 7 150B 16 13 120C 24 0 100一、问题分析:设nij为i地运往j地的原料量,mij为i地运往j地的产品量,设A地为1地,B 为2地,C地为3地。
西北⼯业⼤学-数字电⼦技术基础-实验报告-实验2数字电⼦技术基础第⼆次实验报告⼀、题⽬代码以及波形分析1. 设计⼀款可综合的2选1多路选择器①编写模块源码module multiplexer(x1,x2,s,f);input x1,x2,s;output f;assign f=(~s&x1)|(s&x2);endmodule②测试模块`timescale 1ns/1psmodule tb_multiplexer;reg x1_test;reg x2_test;reg s_test;wire f_test;initials_test=0;always #80 s_test=~s_test;initialbeginx1_test=0;x2_test=0;#20x1_test=1;x2_test=0;#20x1_test=0;x2_test=1;#20x1_test=1;x2_test=1;#20x1_test=0;x2_test=0;#20x1_test=1;x2_test=0;#20x1_test=0;x2_test=1;#20x1_test=1;x2_test=1;endmultiplexer UUT_multiplexer(.x1(x1_test),.x2(x2_test),.s(s_test),.f(f_test));endmodule③仿真后的波形截图④对波形的分析本例⽬的是令s为控制信号,实现⼆选⼀多路选择器。
分析波形图可以知道,s为0时,f 输出x1信号;s为1时,f输出x2信号。
所以实现了⽬标功能。
2. 设计⼀款可综合的2-4译码器①编写模块源码module dec2to4(W,En,Y);input [1:0]W;input En;output reg [0:3]Y;always@(W,En)case({En,W})3'b100:Y=4'b1000;3'b101:Y=4'b0100;3'b110:Y=4'b0010;3'b111:Y=4'b0001;default:Y=4'b0000;endcaseendmodule②测试模块`timescale 1ns/1psmodule tb_dec2to4;reg [1:0]W_test;reg En_test;wire [0:3]Y_test;initialEn_test=0;always #80 En_test=~En_test;initialbeginW_test=2'b00;#20W_test=2'b01;#20W_test=2'b11;#20W_test=2'b10;#20W_test=2'b00;#20W_test=2'b01;#20W_test=2'b11;#20W_test=2'b10;#20W_test=2'b00;enddec2to4 UUT_dec2to4(.W(W_test),.En(En_test),.Y(Y_test));endmodule③仿真后的波形截图④对波形的分析本例⽬的是实现可综合的2-4译码器,其中数组W是输⼊信号,共有两个值,输⼊⼀个两位⼆进制数据,⽬的是通过译码器将它转换成独热码,数组Y是输出信号,输出四个⼆进制数据,构成独热码。
人工智能第二次实验报告产生式系统推理班级:姓名:学号:一、实验目的1. 理解并掌握产生式系统的基本原理;2. 掌握产生式系统的组成部分,以及正向推理和逆向推理过程。
二、实验要求1. 结合课本内容, 以动物识别系统为例,实现小型产生式系统;2. 要求: 正向推理中能根据输入的初始事实,正确地识别所能识别的动物;逆向推理中能根据所给的动物给出动物的特征。
三、实验算法1. 如何表示事实和特征的知识;在本程序中,我将动物的特征写入data.txt,将规则记入rules.txt,将动物种类记为goal.txt。
通过函数void readFiles(){readGoal();readCod();readRule();}读入所有数据分别存放于goal[],rule[],cod[]自定义数组中。
2. 指出综合数据库和规则库分别使用哪些函数实现的?综合数据库(包括特征和目标)typedef struct{int xuh;//存放编号char valu[50];//存放具体内容}Node;Node goal[20];Node cod[50];规则库typedef struct{int rslt;int codNum;//记载前提的个数int cod[10];//记载前提的序号int used;//记载是否已匹配成功}Nrule;Nrule rule[50];void readRule(){FILE *fp;int i;int tempxuh,tempcodn;char ch;if((fp=fopen("rules.txt","r"))==NULL){printf("cannot open data\n");exit(0);}i=0;rule[i].codNum=0;while((ch=fgetc(fp))!=EOF){if(i==14)i=i;tempcodn=0;while(ch!='\n'&&ch!=EOF) //每一条规则{tempxuh=0;while(ch<='9'&&ch>='0'){tempxuh=tempxuh*10+ch-'0';ch=fgetc(fp);}rule[i].cod[tempcodn++]=tempxuh;tempxuh=0;if(ch=='-')//下一个是结论{ch=fgetc(fp);ch=fgetc(fp);while(ch<='9'&&ch>='0'){tempxuh=tempxuh*10+ch-'0';ch=fgetc(fp);}rule[i].rslt=tempxuh;}//ifelse if(ch=='*'){ch=fgetc(fp);}rule[i].codNum++;}i++;}rulenum=i;fclose(fp);}3. 规则库的匹配算法是什么?如何选用可用规则集中的规则?分别使用哪些函数实现的?程序中的正向与逆向搜索分别是在void main()中调用forwardFinger()和backFinger()来实现的。
Windows实验报告计算机科学与技术学院计112 1113022032 康照玲一、实验一1、题目:在一个窗口中央加载一个任意位图,位图尺寸为窗口面积的四分之一,当单击鼠标左键或键盘上的向上箭头时,位图向上移动,当移动到窗口的上边界时,在模式对话框中显示“不能再向上移动了”字样;当单击鼠标右键或键盘上的向下箭头时,位图向下移动,当到达窗口的下边界时,在模式对话框中显示“不能再向下移动了”字样;当单击键盘上的向左箭头时,位图向左移动,当移动到窗口的左边界时,在模式对话框中显示“不能再向左移动了”字样;当单击键盘上的向右箭头时,位图向右移动,当移动到窗口的右边界时,在模式对话框中显示“不能再向右移动了”字样。
并要求图片在移动到窗口的任意边界时不消失。
2、关键代码分析首先设置窗口大小,加载位图,获得位图左上角的坐标,在按下上下左右键的时候对相关坐标进行加减,同时建立相关的模式对话框,在对位图进行移动到相关边界时出现相关对话框。
相关代码:PAINTSTRUCT ps; //定义包含绘图信息的结构变量switch(iMessage){case WM_KEYDOWN:switch(wParam){case VK_UP: //按上箭头时,位置-10iY=iY-10;break;case VK_DOWN: //按下箭头时,位置+10iY=iY+10;break;case VK_LEFT: //按左箭头时,位置-10iX=iX-10;break;case VK_RIGHT: //按右箭头时,位置+10iX=iX+10;break;}InvalidateRect(hWnd,NULL,1);//刷新用户区break;case WM_CREATE: //初始化窗口消息hDC=GetDC(hWnd); //得到设备环境指针hdcmem=CreateCompatibleDC(hDC); //得到内存指针ReleaseDC(hWnd,hDC); //删除设备环境指针case WM_PAINT: //处理绘图消息hDC=BeginPaint(hWnd,&ps); //得到设备环境指针if(iX>0&&iX<iWindowWidth/2) //当位图完整的在窗口中时{SelectObject(hdcmem,hBm); //选入内存句柄BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);//输出位图}else if(iX<=0) //当位图的左边界超出了窗口时{DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG3),hWnd,(DLGPROC)ModalDlgProc);}else //当位图的右边界超出了窗口时{DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG4),hWnd,(DLGPROC)ModalDlgPr oc);}if(iY>0&&iY<iWindowHeight/2) //当位图完整的在窗口中时{SelectObject(hdcmem,hBm); //选入内存句柄BitBlt(hDC,iX,iY,bm.bmWidth,bm.bmHeight,hdcmem,0,0,SRCCOPY);break; //输出位图}else if(iY<=0) //当位图的上边界超出了窗口时{DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),hWnd,(DLGPROC)ModalDlgPr oc);}else //当位图的下边界超出了窗口时{DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG2),hWnd,(DLGPROC)ModalDlgProc);}EndPaint(hWnd,&ps); //输出环境指针break;case WM_DESTROY: //关闭窗口消息DeleteObject(hBm); //删除内存句柄PostQuitMessage(0);return 0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam));}return 0;3、模式对话框的设置,相关代码如下:IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 187, 96STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "对话"FONT 10, "System"BEGINPUSHBUTTON "确定",IDCANCEL,130,82,50,14LTEXT "不能再向上移动了"IDC_STA TIC,50,35,170,10ENDIDD_DIALOG2 DIALOG DISCARDABLE 0, 0, 187, 96STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "对话"FONT 10, "System"BEGINPUSHBUTTON "确定",IDCANCEL,130,82,50,14LTEXT "不能再向下移动了"IDC_STA TIC,50,35,170,10ENDIDD_DIALOG3 DIALOG DISCARDABLE 0, 0, 187, 96STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "对话"FONT 10, "System"BEGINPUSHBUTTON "确定",IDCANCEL,130,82,50,14LTEXT "不能再向左移动了"IDC_STA TIC,50,35,170,10ENDIDD_DIALOG4 DIALOG DISCARDABLE 0, 0, 187, 96STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "对话"FONT 10, "System"BEGINPUSHBUTTON "确定",IDCANCEL,130,82,50,14LTEXT "不能再向右移动了"IDC_STA TIC,50,35,170,10END二、实验二1、题目:建立两套菜单,第一套菜单:单击menu2,窗口加载第二套菜单:给每套菜单的每个菜单项放置热键和加速键,单击menu1后,加载第一套菜单。
一、实验步骤1.从中经网统计数据库以及国家统计局找到实验所需的各项数据并完成下载。
2.将已经下载好的2002年至2016年的CPI月度数据(以上月=100)经过简单算术平均转化成季度CPI, 以2010年第一季度的CPI=100,处理各季度CPI,得到以2002年第一季度=100的CPI。
)3.将以下载好的M2的期末存量月度数据进行简单算术平均得出季度M2。
4.通过社会融资规模2002年至2016年的增量月度数据以及2016年所给出的社会融资规模倒推出2002年至2016年社会融资规模每月的存量数据,并将其进行简单算术平均处理称为社会融资规模月度存量数据。
5.用已经处理下载好的名义GDP当季数据,M2,社会融资规模除以以2010年第一季度=100的CPI 指数,算出每一年去除通货膨胀影响的实际GDP.实际M2,实际社会融资规模,如图一所示,可以看出实际GDP,实际M2,实际社会融资规模的曲线有成波动状,因此我们认为这些时间序列都受季节因素影响,因此我们对这四列时间序列进行季节调整。
6.用EViews进行季节调整后,我们得到数据如图二所示,可以看出我们消除了曲线的波动趋势。
可以看出,GDP当季值平缓上升,但远小于社会融资规模和M2的体量。
社会融资规模的增长与M2增长几乎同步,体量也几乎一致。
7. 用经过季节调整的数据求出GDP,M2,社会融资规模的实际增长率,得出如图三所示趋势变动图,除M2增长率在2002年有一个巨大波动,其他数据的增长率都是平稳变动的。
8. 以各项增长率时间序列为基础进行平稳性检验,经单位根检验后,我们得出GDP 、M2、CPI 时间序列都是平稳序列,社会融资规模不是平稳的,因此对它进行一阶差分,将其处理成平稳的。
9. 用已经得到的平稳的GDP 、 M2、社会融资规模、CPI 数据进协整检验,V AR 模型,以及格兰杰因果检验。
二、 实验结论(一) 协整分析1.GDP 与社会融资规模(二) V AR 模型1.稳定性检验在对货币政策中间目标、最终目标长期均衡关系基础上,建立V AR 模型,利用脉冲响应函数来探讨货币政策在传导过程中对变量的影响程度以及发生效力的滞后时间。
脉冲响应函数分析要求各变量序列平稳。
因此,首先运用各变量同阶数据将分别判断构建V AR(M2 CPI)、V AR(M2 GDP)、V AR(DSFS CPI)、V AR(DSFS GDP)共计4组V AR 模型是否稳定。
从图1可以看出,4组V AR 模型所有单位根的模均在单位圆内,模型结构稳定,可以运用脉冲响应进行分析。
Inverse Roots of AR Characteristic Polynomial (M2 CPI )Inverse Roots of AR Characteristic Polynomial(M2 GDP)Inverse Roots of AR Characteristic Polynomial(DSFS CPI)Inverse Roots of AR Characteristic Polynomial(DSFS GDP)图1各VAR 模型特征方程根的倒数值图2.脉冲反应对比从M2对CPI 的脉冲反应图(图2)和社会融资规模对CPI 的脉冲反应图(图3)可以看出。
来自M2的一个冲击对CPI 的影响,CPI 在整个观察期内均对冲击作出了反应,前期反应较强,后期反应不大回归平稳。
来自社会融资规模的一个冲击,对CPI 的影响在观察期到12期就趋于平稳了,前期反应强度弱于来自M2的冲击。
因此从长期看,M2和社会融资规模对政策累积效应作用时间较短,且M2反应强度更大,所以M2更适合做中间目标.Response of CPI to CholeskyOne S.D. M2 Innovation图2 M2对CPI 的脉冲反应图One S.D. DSFS Innovation图3 社会融资规模对CPI 的脉冲反应图从M2对GDP(图4)和社会融资规模对GDP(图5)的脉冲反应图中可以看出。
来自M2的一个冲击,最大影响出现在第二期,4期之后影响逐渐减小回归平稳;而来自社会融资规模的一个冲击,对GDP 的影响2到9期有一个波动,10期后逐渐收敛于0。
综上所述,社会融资规模较M2的敏感度稍强,但后期收敛于0;M2政策作用持续时间长,因此如果注重政策的长期效应因多关注M2,短期效应可以看社会融资规模Response of GDP to CholeskyOne S.D. M2 Innovation图4M2对GDP 的脉冲反应图One S.D. DSFS Innovation图5 社会融资规模对GDP 的脉冲反应图3.方差分解脉冲响应函数描述的是VAR 模型中一个内生变量的冲击给其它变量所带来的影响。
而方差分解是通过分析每一个结构冲击对内生变量的变化(通常用方差来度量)的贡献度,进一步评价不同结构冲击的重要性。
因此,方差分解能够给出对V AR 模型中的变量产生影响的各个随机扰动的相对重要性信息。
下面利用已建立的向量自回归模型进行方差分解分析。
方差分解结果如图6:Percent CPI variance due to DSFSPercent CPI variance due to M2Percent GDP variance due to DSFSPercent GDP variance due to M2社会融资规模对CPI 的贡献值最大为18%,M2对CPI 的贡献值为30%左右;社会融资规模对GDP 的贡献度仅为2%左右,而M2对GDP 的贡献度逐渐增加在20期达到41%左右。
由图6可得,中间目标M2对CPI的贡献度要高于社会融资规模对CPI的贡献度;社会融资规模对GDP的贡献度要远低于M2对GDP的贡献度,从总体上来看M2的贡献度要更多,说明M2对最终目标的实现发挥着重要影响。
4.结论根据var模型的各项结论,从中间目标与最终目标CPI的脉冲反应看,M2和社会融资规模对政策累积效应作用时间较短,但是M2反应强度更大敏感度更高一点,所以M2更适合做中间目标。
从中间目标与最终目标GDP的脉冲反应看,社会融资规模较M2的敏感度稍强,但后期收敛于0;M2政策作用持续时间长,因此如果注重政策的长期效应因多关注M2,短期效应可以看社会融资规模。
从方差分解分析看,从中间目标至最终目标的传导过程中,M2对GDP和CPI的贡献度要总体要远高于社会融资规模对GDP和CPI的贡献度,因此,此过程中间目标应更多关注M2。
综上,中间指标M2对最终指标的相关性更好。
(三)格兰杰因果检验1.M2与GDP的格兰杰因果检验结论:我们分别选取了2~3的滞后长度,分别进行格兰杰因果检验,得出当Lag=2时,p=0.0392,因此拒绝M2不能引起GDP变化的原假设,因此说明中介目标M2影响了最终目标GDP。
2.M2与CPI的格兰杰因果检验结论:我们分别选取了2~8的滞后长度,分别进行格兰杰因果检验,得出的概率均大于0.05,因此接受M2不能引起CPI变化的原假设,因此不能说明中介目标M2很好地影响了最终目标CPI。
3.社会融资规模(sfs)与GDP的格兰杰因果检验结论:我们分别选取了2~8的滞后长度,分别进行格兰杰因果检验,得出的概率均大于0.05,因此接受社会融资规模不能引起GDP变化的原假设,因此不能说明中介目标社会融资规模影响了最终目标GDP。
4.社会融资规模与CPI的格兰杰因果检验结论:我们选取了2~8的滞后长度,进行格兰杰因果检验,得出的概率均大于0.05,因此接受社会融资规模不能引起GDP变化的原假设,因此说明中介目标社会融资规模不能影响了最终目标CPI。
5.关于CPI的格兰杰因果检验结论:在进行中介目标M2以及社会融资规模对最终目标CPI的检验时,我们发现并不能检验出中介目标M2以及社会融资规模影响了CPI,相反,却得出了最终目标CPI影响了社会融资规莫以及M2。
这与经济学理论是不同的,但是从现实中经济运行来考虑,物价的上涨确实有可能会引起广义货币和社会融资规模的上升。
6.实验结论从格兰杰因果检验的结果来看,我们只可以检验出M2是GDP的因,因此从现有的数据支持来看,我们认为M2更适合作为货币中介目标。
这与之前的var模型所得出的结论是一致的。
三、实验反思(一)数据处理的错误本次实验在进行平稳性检验的时候,发现社会融资规模的增长率是不平稳的,这从图三也可以得到映证,早几年的社会融资规模增长率远高于后几年的社会融资规模增长率,这是因为2002年以后我国中央人民银行设置社会融资规模指标以后的爆发式增长。
在之前的的实验过程中,我们将不平稳的社会融资规模时间序列进行了一阶差分,进行社会融资规模增长率的增长率与GDP 和CPI 的关系检验是没有经济意义的。
因此,我们截掉了社会融资规模增长率较高的2002年-2009年的时间序列,进行2009-2016年中介目标社会融资规模增长率与最终目标GDP 、CPI 的关系检验。
1. 协整检验2. V AR 模型(1) 稳定性检验首先运用调整后的变量同阶数据将分别判断构建V AR(SFS GDP)、V AR(SFS CPI)共计4组V AR 模型是否稳定。
从图1可以看出,2组V AR 模型所有单位根的模均在单位圆内,模型结构稳定,可以运用脉冲响应进行分析。
Inverse Roots of AR Characteristic Polynomial (SFS GDP )Inverse Roots of AR Characteristic Polynomial(SFS CPI)图1 VAR 模型特征方程根的倒数值图(2) 脉冲反应对比从调整前后社会融资规模对CPI 的脉冲反应对比图(图2)可以看出,来自调整后的社会融资规模的一个冲击,CPI 整个观察期内均对冲击做出了反应,前期反应更强,10期之后反应也比未调整的反应强,因此从长期看,调整后的社会融资规模对政策累积效应作用时间较长,且比M2对CPI (如图 )的反应强度还要大,调整过后的社会融资规模更适合做中间指标。
图2(调整后)从调整前后社会融资规模对GDP(图3)的脉冲反应对比图中可以看出。
来自调整后的社会融资规模的一个冲击,GDP 的影响2到9期的波动更加明显,敏感性更好,这也显然要优于M2对GDP (如图 )脉冲反应前期的敏感性,因此如果注重政策的长期效应因多关注M2,短期效应可以看调整后的社会融资规模。
-.008-.004.000.004.008.012Response of GDP to SFS图3(调整后)(3) 方差分解Response of CPI to SFSPercent CPI variance due to SFS(调整后)调整后的社会融资规模对CPI 的贡献度由18%变化至30%,和M2对CPI 的贡献度不相上下(如图 )。