给水课设资料

时间:2019-05-14 09:16:33下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《给水课设资料》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《给水课设资料》。

第一篇:给水课设资料

1设计题目

市区地表水水厂初步设计

2设计原始资料

2.1 用水资料

(1)生活用水

市区规划人口数30万人;给水普及率按88%考虑;设定房

屋平均层数为6层。城市用水量较均匀,时变化系数为1.44。

(2)工业用水

假定该市有大型工业企业2家,用水量情况如下表所示:

工业企业用水量情况统计表

企业用水

编号

A

B 厂名 钢铁厂 化工厂 水压 生产班制(时间)24 18 量(m3/d)(kg/cm2)10000 4000 2.5 2.5 注:上述各厂供水水质要求同生活用水。

(3)其他

绿化浇洒道路每日以500m计。

2.2原水水质资料

编号项目 色度 单位 度 分析结果 40 附注33 4 5 6 7 8 9 10 11

SS 嗅和味 PH值 总硬度 溶解性总固体

铁 锰 氟化物 细菌总数 大肠菌群

mg/L 度mg/L mg/L mg/L mg/L mg/L 个/L 个/L

600 合格 6.9 480 760 3.0/0.2 0.01 0.6/1.5 6000 800

以CaCO3计

2.3地形地貌与地质

按平坦地形设计,平均海拔高度在800米左右。

工程地质良好,适宜于工程建设,地质构造一般皆为四层,耐压力在2kg/cm2以上;

第二篇:高频课设资料

一、课程设计目的

由于高频振动器所产生的高频振动信号的功率很小,不能满足发射机天线对发射机的功率要求,所以在发射之前需要经过功率放大后才能获得足够的功率输出。本次课程设计使通过已学的电路基础知识,模拟高频振动功率放大器,使发射机内部各级电路之间信号功率能有效传输,这就要求放大器输入端和输出端都能实现阻抗匹配。即放大器输入端阻抗和信号阻抗匹配,放大器输出端阻抗和负载阻抗匹配。我们知道能量是不能放大的,高频信号的功率放大,其实质在输入高频信号的控制下将电源直流功率转换为高频功率,因此除要求高频功率放大器产生符合要求的高频功率外,还应要求有尽可能高的转换率。主要是根据已知数据设计一个丙类高频功率放大器。

二、课程设计题目描述和要求

设计一高频功率放大电路; 1.要求三极管工作在丙类状态;

2.主要技术指标:输入已调波的峰值为100mV;载波频率为6.5MHz,输出功率≧1w,负载50Ω,效率≧80%;

3.用相关仿真软件画出电路并对电路进行分析与测试。

三、课程设计报告内容

3.1 设计方案的论证

高频功率放大器的主要功用是放大高频信号,并且以高效输出大功率为目的,它主要应用于各种无线电发射机中。发射机中的振荡器产生的信号功率很小,需要经多级高频功率放大器才能获得足够的功率,送到天线辐射出去。高频功率放大器输出功率范围,可以小到便捷式发射机的毫瓦级,大到无线电广播电台的几十千瓦,甚至兆瓦级。目前,功率为几百瓦以上的高频功率放大器,其有源器件大多为电子管,几百瓦已下的高频功率放大器则主要采用双极晶体管和大功率场效应管。如图所示是一个采用晶体管的高频功率放大器的原理线路,除电源和偏置电路外,它是由晶体管、谐振回路和输入回路三部分组成的。高频功放中常采用平面工艺制造的NPN高频大功率管,它能承受高电压和大电流,并有较高的特征频率fT。

由先修课程可知,低频功率放大器可以工作在甲类状态,也可以工作在乙类状态,或甲乙类装态,乙类状态要比甲类状态效率高(甲类效率最大可达到50%;乙类效率最大可达78.5%),为了提高效率,高频功率放大器多工作于丙类状态。为工作保证在丙类状态下工作,基极偏置电压Eb应使晶体管工作在截止区,一般为负值,即静态时发射结为反偏。此时输入激励信号应为大信号,一般在0.5V 以上,可达1~2V,甚至更大。也就是说,晶体管工作在截止和导通(线性放大)两种状态下,基极电流和集电极电流均为高频脉冲信号。与低频功放不同的是,高频功放选用谐振回路作为负载,既保证输出电压相对于输入电压不失真,还具有阻抗变换的作用,这是因为集电极电流是周期性的高频脉冲,其频率分量除了有用分量(基波分量)外,还有谐波分量和其他有用频率成分,用谐振回路选出有用分量,将其他无用分量滤除;通过谐振回路阻抗的调节,从而使谐振回路呈现高频功放所要求的最佳负载阻抗值,即匹配,使高频功放高效输出大功率。

图2 集电极电流波形

我们知道能量(功率)是不能放大的,高频信号的功率放大,其实质是在输入高频信号的控制下将电源直流功率转换成高频功率,因此,除要求高频功率放大器产生符合要求的高频功率外,还应要求具有尽可能高的转换效率。要想提高效率有两种途径,一是提高电压利用系数ξ,即提高Uc,这通常靠提高回路的谐振阻抗Rl来实现,另一个是提高波形系数γ,γ与有关,即ζ越小,γ越大,效率ε越高。可以根据集电极电流导通角ζ的大小划分功放的工作类型。当ζ=180°时,放大器工作在甲类;当90°<ζ<180°时,为甲乙类;当ζ=90°,为乙类;当ζ<90°时,则为丙类。对于高频功放,ζ<90°,为了兼顾输出功率P1和效率ε,通常选ζ在65°~75°范围。

图3γ、α0(ζ)、α1(ζ)、α2(ζ)、α3(ζ)与ζ的关系

根据实验要求可知,本次设计需要两级放大,但由于丙类放大器的电流波形失真太大,因而不能用于低频功率放大,只能采用谐振回路作为负载的谐振功率放大。由于调谐回路具有滤波能力,回路电流与电压波形仍然极近于正弦波形,失真很小。因此,第一级放大为甲类放大,放大激励信号,为第二级丙类功率放大器提供大信号激励源;第二级为丙类放大,放大输出功率。其中甲类功放采用晶体管3DG130A(NPN型硅管、最高反向电压为45V、损耗功率PCM为700mw、电流放大倍数>40)丙类功放采用晶体管3DA89(NPN型硅管、最高反向电压为40V、损耗功率PCM为750mw、电流放大倍数>=10)。级间采用变压器进行耦合,采用12V直流电源作为电源。

图4 高频功率放大电路总体设计框图 3.2 丙类谐振功率放大器的效率与功率

功率放大器是依据激励信号放大电路对电流的控制,起到把2.3.1 丙类谐振功率放大器的效率与功率。

集电极电源直流功率变换成负载回路的交流功率的作用。在同样的直流功率作用条件下,转换的功率越高,输出的交流功率越大。集电极电源0V提供的直流功率:

式中C0I为余弦脉冲的直流分解系数

式中,CMI为余弦脉冲的最大值:0C()为余弦脉冲的直流分解系数。

式中,BBU'为晶体管的导通电压;BBV为晶体管的基极偏置;bmV为功率放 大器的激励电压振幅。集电极输出基波功率:

式中CU为回路两端的基频电压,C1I为余弦电流脉冲基频电流,LR为回路 的谐振阻抗。集电极效率:

式中,为集电极电压利用系数;1()cα为余弦脉冲的基波分解系数。功率放大器的设计原则是在高效率下取得较大的输出功率。在实际运用中,为兼顾高的输出效率和高效率,通常ooC=6080~。

3.3 丙类放大器的负载特性

欠压状态:在欠压区至临界点 的范围内,放大器的输出电压CU随负载电阻LR的增大而增大,而电流cmaxI、C1I、C0I基本不变,输出电流的振幅基本上不随CCU变化而变化,故输出功率基本不变。临界状态:负载线和bU正好相交于临界线的拐点。放大器工作在临界状态时,输出功率大,管子损耗小,放大器的效率也就较大。其对应的最佳负载电阻值,用PR表示,即:

当PR变小时,放大器处于欠压工作状态,如C点所示。集电极输出电流较大,集电极电压较小,因此输出功率和效率都较小。PR变大时,放大器处于过压工作状态,如B点所示。集电极电压虽然较大,但集电极电流凹陷,因此输出功率较低,但效率较高。为了兼顾输出功率和效率的要求,谐振功率放大器通常选择在临界工作状态。设计谐振功率放大器为临界工作状态的条件是: CCcmcesV-U=U。

式中,cmU为集电极输出电压幅度;CCV为电源电压;cesU为晶体管饱和压降。

过压状态:放大器的负载较大,在过压区,随着负载LR的加大,1cI要下降,因此放大器的输出功率和效率也要减小。输出电流的振幅将随CCV的减小而下降,故输出功率也随之下降。

其负载特性如图2 谐振功率放大器的负载特性。

3.4 丙类高频功放的振幅特性

高频功放的振幅特性是指只改变激励信号振幅bU时,放大器电流、电压、功率及效率的变化特性。由图3 高频功放的振幅特性可以看出,在欠压区,C0I、C1I、CU随bU的增加而增加,但并不一定是线性关系。在过压区,cU基本不随bU变化,可以认为是恒压区,放大等幅信号时,应选择在此状态。2.3.4 欠压、临界、过压工作状态的调整

调整欠压、临界、过压三种工作状态,大致有以下几种方法:改变集电极负载LR;改变供电电压CCU;改变偏压BBU;改变激励bU。

方法1:改变LR,但bU、CCU、BBU不变:当负载电阻LR由小至大变化时,放大器的工作状态由欠压经临界转入过压。在临界状态时输出功率最大。

方法2:改变CCU,但LR、bU、BBU不变:当集电极供电电压CCU由小至大变化时,放大器的工作状态由过压经临界转入欠压。

方法3: bU变化,但CCU、BBU、LR不变或BBU变化,但CCU、bU、LR不变:这两种情况所引起放大器工作状态的变化是相同的。因为无论是bU还是BBU的变化,其结果都是引起beU的变化。当BBU或bU由小到大变化时,放大器的工作状态由欠压经临界转入过压。

3.5 原理图分析及参数计算

1.确定放大器的工作状态

在CCV=+12V的条件下,晶体管2N2219A的参数:CC VP cm =700mW,ICM=300mA U CES ≤0.6V,β≥30,fT≥150MHz,放大器功率增益AP≥6dB.。为了获得

较高的效率及最大输出功率,选丙类功率器的工作状态为临界状态,取ζ=700,得出谐振回路的最佳负载电阻RP为:

得集电极基波电流振幅

得集电极电流脉冲的最大值Icm及其直流分量

得电源供给的直流功率P为:

得放大器转换效率为

2.计算谐振回路

若取谐振回路电容:固定电容C=50PF 得回路电感

3.偏置电路电压

3.6 软件设计

Multisim是一个专门用于电子电路仿真和设计的EDA软件,它具有直观、方便的操作界面,创建电路、选用元器件和虚拟测试仪器等均可直接从屏幕图形中选取,操作简便。它具有完备的电路分析功能,可以完成电路的瞬态分析和稳态分析、时域分析和频域分析、器件的线性和非线性分析、交直流灵敏度分析等电路分析方法。在进行仿真的过程中,可以存储测试点的数据、测试仪器的工作状态、显示的波形。它先进的高频仿真设计和功能,是目前众多仿真电路所不具备的。

Multisim 用软件的方法虚拟电子与电工元器件,虚拟电子与电工仪器和仪表,实现了“软件即元器件”、“软件即仪器”。Multisim 是一个原理电路设计、电路功能测试的虚拟仿真软件。

Multisim 的元器件库提供数千种电路元器件供实验选用,同时也可以新建或扩充已有的元器件库,而且建库所需的元器件参数可以从生产厂商的产品使用手册中查到,因此也很方便的在工程设计中使用。

Multisim 的虚拟测试仪器仪表种类齐全,有一般实验用的通用仪器,如万用表、函数信号发生器、双踪示波器、直流电源;而且还有一般实验室少有或没有的仪器,如波特图仪、字信号发生器、逻辑分析仪、逻辑转换器、失真仪、频谱分析仪和网络分析仪等。Multisim 具有较为详细的电路分析功能,可以完成电路的瞬态分析和稳态分析、时域和频域分析、器件的线性和非线性分析、电路的噪声分析和失真分析、离散傅里叶分析、电路零极点分析、交直流灵敏度分析等电路分析方法,以帮助设计人员分析电路的性能。

Multisim 可以设计、测试和演示各种电子电路,包括电工学、模拟电路、数字电路、射频电路及微控制器和接口电路等。可以对被仿真的电路中的元器件设置各种故障,如开路、短路和不同程度的漏电等,从而观察不同故障情况下的电路工作状况。在进行仿真的同时,软件还可以存储测试点的所有数据,列出被仿真电路的所有元器件清单,以及存储测试仪器的工作状态、显示波形和具体数据等。Multisim 有丰富的Help功能,其Help系统不仅包括软件本身的操作指南,更要的是包含有元器件的功能解说,Help中这种元器件功能解说有利于使用EWB进行CAI教学。另外 Multisim还提供了与国内外流行的印刷电路板设计自动化软件Protel及电路仿真软件PSpice之间的文件接口,也能通过Windows的剪贴板把电路图送往文字处理系统中进行编辑排版。支持VHDL和Verilog HDL语言的电路仿真与设计。利用Multisim 可以实现计算机仿真设计与虚拟实验,与传统的电子电路设计与实验方法相比,具有如下特点:设计与实验可以同步进行,可以边设计边实验,修改调试方便;设计和实验用的元器件及测试仪器仪表齐全,可以完成各种类型的电路设计与实验;可方便地对电路参数进行测试和分析;可直接打印输出实验数据、测试参数、曲线和电路原理图;实验中不消耗实际的元器件,实验所需元器件的种类和数量不受限制,实验成本低,实验速度快,效率高;设计和实验成功的电路可以直接在产品中使用。Multisim 易学易用,便于电子信息、通信工程、自动化、电气控制类专业学生自学、便于开展综合性的设计和实验,有利于培养综合分析能力、开发和创新的能力。3.7 硬件设计

3.8测试结果

四、结论

通过在电脑软件Multisim上的模拟,和在元件与功能电路的选择,参数计算,此电路基本达到设计要求,优点是此电路的效率达到了82%。

五、结束语

课程设计是培养学生综合运用所学知识,是发现、提出、分析和解决实际问题、锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。这次的高频课程设计,加深了我对电子电路理论知识的理解,并锻炼了实践动手能力,具备了高频电子电路的基本设计能力和基本调试能力。

回顾起此次高频课程设计,至今我仍感慨颇多。的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正学到属于自己的知识,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到的问题,可以说得是多如牛毛,因为基础不牢固,再加上缺乏实际设计及动手的经验,所以难免会遇到过各种各样的问题。同时在设计的过程中我也发现了自己的很多的不足之处,比如说发现自己 对以前所学过的知识理解得不够深刻,掌握得不够牢固。

不过,这次实验的最大收获就是锻炼了我独立思考的能力,由于参数的计算有点复杂,需要自己独立思考各个参数的意义和各个参数之间的联系,这就要求我在设计过程中必须认真思考,绝不能马虎,否则,算出来的可能就是错误答案。而参数不对,最终将直接影响到仿真的结果。

课设的这段日子真的是给我留下了很深的印象。我总结出,在每次课设中,遇到问题最好的办法就是请教别人,因为每个人掌握的情况都不一样,一个人不可能做到处处都懂,必须发挥群众的力量,复杂的事情才能够简单化。这一点我深有体会,在很多时候,我遇到的困难或许别人之前就遇到过,向他们请教远比自己在那边摸索来得简单,来得快。虽然我现在已经初步学功率放大器,但是离真正能够利用已学的知识自由设计使用电路会了如何设计符合要求的高频谐振的还有一段的距离。课设的这段时间我确实受益匪浅,不仅是因为它发生在特别的实践,更重要的是我的专业知识又有了很大的进步。

参 考 文 献

【1】郑长明.《高频电路实验与仿真》.科学出版社

【2】张新喜《Multisiml0 电路仿真及应用[M]》北京:机械工业出版社.2012 【3】杜武林,李纪澄,曾兴宪.《高频电路原理与分析(第二版)》.西安电子科技大学出版社.1994

【4】赵淑范.《电子技术实验与课程设计[M]》.北京:清华大学出版社.2009 【5】刘泉主.《通信电子线路》.武汉理工大学出版社.2007.1

【6】谢自美.《电子线路设计·实验·测试》.华中科技大学出版社.2007.8

【7】胡宴如.《模拟电子技术基础》.高等教育出版社出版社。

【8】杨志忠.《数字电子技术基础》.高等教育出版社

【9】曾兴雯.《高频电路原理与分析》.西安电子科技大学出版社

利用选频网络作为负载回路的功率放大器称为谐振功率放大器,这是无线电发射机中的重要组成部分。根据放大器电流

导通角ζ的范围可分为甲类、乙类、丙类及丁类等不同类型的功率放大器。电流导通角ζ愈小,放大器的效率ε愈高。如甲类功放的ζ=180,效率ε最高也只能达到50%,而丙类功放的ζ<90º,效率ε可达到80%,甲类功率放大器适合作为中间级或输出功率较小的末级功率放大器。丙类功率放大器通常作为末级功放以获得较大的 利用选频网络作为负载回路的功率放大器称为谐振功率放大器,这是无线电发 射机中的重要组成部分。根据放大器电流导通角ζ的范围可分为甲类、乙类、丙类

及丁类等不同类型的功率放大器。电流导通角ζ愈小,放大器的效率ε愈高。如甲类功放的ζ=180,效率ε最高也只能达到50%,而丙类功放的ζ< 90º,效率ε可达

到80%,甲类功率放大器适合作为中间级或输出功率较小的末级功率放大器。丙类 功率放大器通常作为末级功放以获得较大的输出功率和较高的效率。

图3-1 高频功率放大器

图3-1 为由两级功率放大器组成的高频功率放大器电路,其中VT1组成甲类功 率放大器,晶体管VT2 组成丙类谐振功率放大器,这两种功率放大器的应用十分广 泛,下面介绍它们的工作原理及基本关系式。前 言

在高频范围内为获得足够大的高频输出功率,必须采用高频放大器,高频功率放大器主要用于发射机的未级和中间级,它将振荡产生的信号加以放大,获得足够高频功率后,再送到天线上辐射出去。另外,它也用于电子仪器作未级功率放大器。

高频功率放大器要求功率高,输出功率大。丙类放大器它是紧紧围绕如何提高它的效率而进行的。高频功率放大器的工作频率范围一般为几百KHZ—几十MHZ。一般都采用LC谐振网络作负载,且一般都是工作于丙类状态,如果要进一步提高效率,也可工作于丁类或戊类状态。三.

实验原理及公式推导

高频谐振放大器的主要作用是使电路输出功率大,效率高;主要特点是用谐振回路来实现阻抗变换,并且为了提高效率常工作在丙类状态。

高频功率放大器一般有两种:1.窄带高频功率放大器;2.宽带高频功率放大器。前者由于频带比较窄,故常用选频网络作为负载回路,所以又称为谐振功率放大器。而宽带高频功率放大器的输出电路则是传输线变压器或其它宽带高频功率放大器,以高效率,小失真得到较大输出功率。因此一般都工作在丙类状态。其导通角小于π,其通角小于π/2。如图1所示是丙类功率放大器原理图。图中LC谐振回路为集电极的负载,Ec为集电极直流电源,Eb为基极负偏置电源。Ub是高频输入信号,Ub=Ubm cosωt。可见,只有输入信号电压足够大时,即Ub>Eb+Eb1(Eb1为晶体管截止偏压)时晶体管才导通。显然电流的通脚<π/2,集电极电流Ic呈脉冲形状,这个电流经集电极谐振回路选出Ic的基波分量Ic1,再经过变压器耦合,在RL上得到一个放大的基波功率。从而实现了丙类功率放大。

高频功率放大器是由输入回路,晶体管负载和电源几部分组成。

1.高频丙类功率放大器的输出功率和效率。为了便于计算脉冲电流Ic,将晶体管 的动态转移特性曲线ic-Ubc用折线gm表示。如图2所示,由图2所知: ic =gm(Ubζ—E'b)= gm(UbmCosωt+E b'—b E'b)gm为跨导。当ωt=ζ时,ic = 0 E'b+Uc1m cosωt),所以,当ic较大时,Uce的减少使得管子集电极损耗Pc减少,从而提高效率。

3.要提高效率,也可增大g1(ζ)。ζ的减少,可使g1(ζ)增大,于是提高效率。ζ减少,意味着减少ic与Uce均不为零的时间,从而可用甲,乙,丙3种工作状态的集电极电压,电流波形来说明,如图3所示。

甲类在一个周期中都有ic流通,因而Uce正半周,也有ic,所以管耗大,效率低。乙类ic只有半个周期流通,而且,当放大器的负载为电阻时,ic流通半周正好与Uce负半周相对应,此时,Uce小,因而效率比甲类高。

丙类工作时波形,ic流通时间小于半个周期,当集电极谐振回路对激励信号谐振时,ic仅在Uce负半周瞬时值较大时流过,此时Uce较小,所以丙类比乙类效率高。当ζ<π/2,是否可能接近于零,得到最高效率呢?

当ζ→0时,使得输出功率也显著下降,为了兼顾输出功率和不使激励功率过大,因而ζ不能太小,从而限制效率提高。一般情况下ζ=π/3-7π/18时,相应的集电极效率较大,ε在80%-90%之间。

2.丙类功率放大器的负载特性

丙类功率放大器的负载特性是指在Ec,Eb,Ubm不变的条件下,各种电流输出电压,功率和效率等随Re变化的曲线。

因为高频功率放大器的工作状态取决于Rc,Ubm,Eb和Ec四个参数。如果保持Ubm,Eb和Ec不变,则工作状态仅取决于Rc。(1)负载变化对工作状态的影响

如果保持Ubm,Eb和Ec不变则Re变化影响工作状态的变化如图3 从图3看出:

1.动特性表示Re较小时,这时Uc1m也较小,动态负载线A1在线性放大区,这种状态称为欠压状态。在欠压状态,ic呈余弦脉冲。

2.动特性随Rc增加,动态负载线A2在临界线上,称这种状态为临界状态,此时ic还是呈余铉脉冲。3.动特性随Rc继续增大,A3也进入饱和区,此时ic呈凹脉冲,这种状态称过压状态,在过压状态,随Rc增大,ic的幅度也迅速下降,但它的基波输出电压振幅基本不变,即Uc1m≈Ec。

(2)负载Re变化对Ico,Icm,Uc1m,Pout,Po和ε的影响。

当维持Ubm,Eb和Ec不变时,放大器Ico,Icm,Uc1m,Pout,Po,Pc和ε随负载阻 抗Re变化。因为,Uc1m=Ic1m*Re。如图5:

在欠压区:Ic1m与Ico基本不变,仅随Re增加略有下降,Uc1m也随Re增加而直线增加,Pc管耗下降。把放大器看成恒流源。在过压区:Uc1m几乎不变,Ico和Ic1m则随Re的增大也急剧下降。把放大器看成恒流源。从图4看出:集电极电源输入功率Po=Eo*Ico。由于Ec不变,因而Po与Re关系曲线和Ico曲线的形状相同。

放大器输入功率Pout=1/2 Ic1m*Uc1m,Pout与Re关系是根据Uc1m、Ic1m两条曲线相乘求出来。

在临界状态时,Pout达到最大值,放大器效率也较高。这就是希望放大器工作在临界工作状态的原因。

集电极损耗功率Pc=Po – Pout,故Pc曲线由Po与Pout曲线相减得出。

在欠压区,当Re减小,Pc上升很快;当Re=0时,Pc达到最大值,可能使晶体管烧坏。(这种情况是短路)放大器的效率ε=Pout/Po.在欠压状态时,Po变化小,所以ε随Pout增加而增加,到临界状态后,Pout下降没有Po快,在过压状态时,Pout主要是随Ic1m急剧下降而下降,因而ε也略有下降,故在靠近临界的弱过压状态ε出现最大值。3.放大器各级电压对工作状态的影响(1)Ubm对工作状态的影响

在讨论激励电压幅度Ubm的变化对放大器工作状态影响,设Ec,Eb,Re不变。当Ubm较小时,Ubemax=Eb+Ubm也较小,从ic-Ubc动态特性看出:放大器工作在 欠压状态,集电极电流为尖顶余弦脉冲。

当Ubm增大时,Icmax,Ic1m也增大,而引起Uce=Ec-Ic1m*Rc的减少。从而使放大器由欠压状态过渡到过压状态。如图6所示:

(a)为ic-Ubc此称平面上ic的动特性。(b)为集电极电流脉冲波形。(c)Ic1m,Ico,Icm-Ubm的关系。从图6可看出:在欠压状态时,随着Ubm的增加,将引起icmax增加,于是Ic1m,Ico和Uc1m与Ubm几乎成正比增加。在过压状态时,随着Ubm的继续增加,虽然电流脉冲高度继续增大,但其凹度增大。所以Ic1m,Ico在过压区增加不大。在欠压区,Uc1m与Ubm成线性关系。

(2)Eb变化对工作状态影响

设Ec,Ubm,Re不变。

由于Ubemax=Eb+Ubm。所以Eb变化与Ubm变化一样,都要引用Ubemax的变化。

当Ec,Ubm,Re不变时,| Eb|减小相当于Ubm的增大。这样,当Eb反向偏置向正向 偏置变化时,icmax增大,放大器从欠压状态转入过压状态。因此,Eb变化对集电极 电流脉冲波以及Ico,Ic1m和Uc1m的影响与Ubm变化引起的影响类似。

如图7,在欠压状态改变Eb,可控制高频输出电压,这就是基极偏压调幅的原理。Eb1

(3)集电极电源Ec对放大器的影响 设Eb,Ubm,Re不变。当Eb,Ubm不变时,Ubemax=Eb+Ubm也不变,若Re不变,则ic-Uce坐标平面上的ic的动特性的斜率也不变。假设放大器原来工作在临界状态,则当Ec增大,ic动特性向右平行移动,放大器将工作与欠压状态。反之,Ec减小,ic动特性向左平行移动,放大器工作于过压状态。如图8所示。当Ec>Ec2时,放大器工作在欠压状态。由于Ubemax不变,所以Ec减小而使得 Ucem减小时,icmax略有下降,ζ变化也很小,故Ic1m,Ico随Ec减小而略有下降。这 样,欠压状态,Ec对Ic1m不能有效控制。

当Ec

第二.在过压区,Ico随Re的减少而迅速增加,这对集电极谐振回路的调谐提供了一个标准。在调谐时,适当降低Ec的值,使放大器工作在过压状态。调节谐振回路,当Ico为最小时,说明电路谐振于工作频率。

四.实验电子线路

如图8所示,输入信号频率为4MHZ,电源电压为Ec=15V,输入信号由高频信号发生

器产生,经过BG1,BG2三极管放大推动未级功放管BG3。BG1集电极输出信号经L1、C7、C8组成的T型匹配电路接BG3基极。输出是由L和C10组成的谐振回路,谐振于4MHZ频率。当开关K1拨在“天线”时,其负载就是天线。当开关K1拨到R时,表示以电阻作为输出负载。本实验要求在75Ω负载电阻上,使信号Ub=0.6V,输出功率最大值。

第三篇:数值线性代数课设课件资料

数值线性代数课程设计报告

姓名:陶英 学号:081410124

任课教师:杨熙

南京航空航天大学

2016 年 6 月 22日

求解线性方程组的三种迭代法及其结果比较

摘要

当今的环境下,数值计算越来越依赖于计算机。大规模科学计算和工程技术中许多问题的解决,最终归结为大型稀疏线性方程组的求解,其求解时间在整个问题求解时间中占有很大的比重,有的甚至达到80%。由于现今科学研究和大型项目中各种复杂的可以对计算精度和计算速度的要求越来越高。因此,作为大规模科学计算基础的线性代数方程组的高效数值求解引起了人们的普遍关注。这种方程组的求解一般采用迭代法。

关于迭代法,是有很多种解决公式的:Jacobi,G-S和超松弛迭代法。这三种方法的原理大致相同,Jacobi需要给定初向量,G-S则需要给定初值,超松弛法是对Guass-Seidel迭代法的加权平均改造。而本文则是对大型稀疏线性方程组迭代求解与三种迭代法(Jacobi,Gauss-Seidel和超松弛迭代法)的收敛速度与精确解的误差比较做出研究。

关键词:Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;线性方程组 方法与理论的叙述

1.1迭代法简介

1.Jacobi迭代法:

对于非奇异线性方程组Ax=b,令A=D-L-U,其中

则原方程组可改写为:

其中

给定初始向量:

由(2.2)可以构造迭代公式:

其分量形式为:

2.2)(2.Guass-Seidel迭代法: 类似于Jacobi迭代法,给定初值:

则得到Guass-Seidel公式:

其分量形式为:

3.超松弛迭代法(SOR 迭代法):

SOR迭代法是对Guass-Seidel迭代法的加权平均改造,即

为Guass-Seidel迭代解,即

它的分量形式为:

其中ω称为松弛因子,当ω>1时称为超松弛;当ω<1时叫低松弛;ω=1时就是

Guass-Seidel迭代。

上述三种经典迭代法收敛的充分必要条件是迭代矩阵谱半径小于1。

谱半径不易求解,而在一定条件下,通过系数矩阵A的性质可判断迭代法的收敛性。定理1:

若系数矩阵A是严格对角占优或不可约对角占优,则Jacobi迭代法和Gauss-Seidel迭代法均收敛。定理2:

(1)SOR迭代法收敛的必要条件是0

(2)若系数矩阵A严格对角占优或不可约对角占优且0

2.1问题

考虑两点边值问题:

d2ydya,0a12 dxdxy(0)0,y(1)1.1a(1e)ax 容易知道它的精确解为:y1/1ex为了将微分方程离散,把[0,1]区间n等分,令h=1/n,xiih,i1,2,...n1,得到差分方程

(h)yi1(2h)yiyi1ah2,从而得到迭代方程组的系数矩阵A。

对=1,a=1/2,n=100,分别用jacobi,G-S,超松弛迭代法分别求线性方程组的解,要求4位有效数字,然后比较与精确解的误差。

对=0.1,=0.01,=0.001,考虑同样问题。

1.方程的表示及存储

由于本题中线性方程组的系数矩阵为三对角矩阵,所以可以采用紧缩方法存储,即

然后在矩阵乘法时对下标处理一下即可。但是考虑到三种迭代方法的一般性,且本题中n=200并不是很大,所以实验中并没有采用紧缩存储,而是采用了直接存储。2.边值条件的处理

由于差分得到的方程组的第一行和最后一行中分别出现了边值y(0)与y(1)作为常数项,因此要在常向量的第一项和最后一项作一些修改:

3.迭代终止条件

首先确定要求的精度tol,我们希望当

则停止迭代。对于迭代格式,若

且,则迭代序列的

第k 次近似解和精确解之间有估计式由题目要求知我们需要有

。,而由上面的迭代估计,只要,即取为,因此最后令迭代终止条件为

即可。而本题中q可近似

4.SOR 迭代中最佳松弛因子的选取

由于SOR 迭代法的效果和其松弛因子w的选取有关,所以有必要选取合适的松弛因子。当选择最佳松弛因子

时,SOR 方法的迭代速度最快。

Matlab实现:

迭代矩阵是n-1阶的,不是n阶;

等号右端向量b的最后一项,不是ah^2,而是ah^2-eps-h

2.2精确解

1ay(1e)ax 1/1ex带入a=1/2,=1 代码: >> clear >> x=linspace(0,1);truy=(1-0.5)/(1-exp(-1/1))*(1-exp(-x./1))+x.*0.5;figure;plot(x,truy,'g','LineWidth',1.5);hold on;Grid

图:

2.3三种迭代法

Jacobi法:代码见附录 Eps=1 结果:

迭代次数k:22273 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.1 结果:

迭代次数k:8753 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.01 结果:

迭代次数k:661 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

G-S迭代法:代码见附录 Eps=1 结果:

迭代次数k:11125 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.1 结果:

迭代次数k:4394 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.01 结果:

迭代次数k:379 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

超松弛法:代码见附录 Eps=1 w=1.56 结果:

迭代次数k:3503 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.1 w=1.56 结果:

迭代次数k:1369 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)

Eps=0.01 w=1.56 结果:

迭代次数k:131 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果)分析讨论及心得体会

3.1三种方法的比较

Jacobi、G-S、超松弛法,三者都能够取得对精确解的良好逼近,但是,在相同的精度条件下,三者的收敛速度是不一样的,jacobi

3.2心得体会

这次课程设计,平时感觉挺简单的那些枯燥单调的代码和数学公式,真正到了自己运用的时候却无从下手,但是,解决问题的过程恰是不断学习的过程:数学算法转换为代码的过程要对题目有深入的了解,然后对程序函数定义还要有一定的掌握能力,通过这个的过程让我巩固了自己的数学知识,对数学专业知识和MATLAB的操作有了更深的体会。

课程设计中遇到的问题只凭自己苦思冥想是不能全部解决的,这是同学老师的建议和网络给了我很大的帮助。遇到自己解决不了的问题时,多多向老师同学请教,或许问题就能迎刃而解。

4参考文献

[1]徐树方.数值线性代数.北京:北京大学出版社,1995.[2]马昌凤.现代数值分析.北京:国防工业出版社.2013.[3]刘春凤,米翠兰.实用数值分析教程.北京冶金工业出版社.2006

5附录

源代码

1.Jacobi:

function [y,k]=jacobi2(a,eps,h,delta)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;while 1 z=B*y+g;if norm(z-y,inf)

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

2.G-S: function [y,k]=gs2(a,eps,h,delta)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end

if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;while 1 z=(D-L)U*y+(D-L)b;if norm(z-y,inf)

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

3.SOR:

function [y,k]=sor(a,eps,h,delta,w)n=1.0/h;A=ones(n-1);y=zeros(n-1,1);z=zeros(n-1,1);k=0;for i=1:n-1 for j=1:n-1 A(i,j)=0;end end

for i=1:n-1 A(i,i)=-(2*eps+h);end

for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps;end if i==j-1 A(i,j)=eps+h;end

end end

b=zeros(n-1,1);for i=1:n-2 b(i,1)=a*h^2;end

b(n-1,1)=a*h^2-eps-h;D=zeros(n-1);for i=1:n-1 D(i,i)=A(i,i);end

L=zeros(n-1);for i=1:n-1 for j=1:n-1 if i>j L(i,j)=-A(i,j);end

end end

U=zeros(n-1);for i=1:n-1 for j=1:n-1 if i

end end

B=D(L+U);g=Db;Lw=((D-w*L)^-1)*((1-w)*D+w*U);while 1 z=Lw*y+w*(D-w*L)^-1*b;if norm(z-y,inf)

y=z;k=k+1;end

x=linspace(0,1);truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a;figure;plot(100*x,truy,'g','LineWidth',5);hold on;grid hold on;plot(y,'b')

第四篇:数据结构课设

数据结构课设 大整数计数器 1.问题描述

实现大整数(200位以内的整数)的加、减、乘、除运算。2.设计要求

设计程序实现两个大整数的四则运算,输出这两个大整数的和、差、积、商及余数。

3.数据结构

本课程设计采用顺序串来实现。4.问题分析

由于整数数据存储位数有限,因此引入串的概念,将整型数据用字符串进行存储,利用字符串的一个字符存储大整数的一位数值,然后根据四则运算规则,对相应位依次进行相应运算,同时保存进位,从而实现大整数精确的运算。具体设计思路如下:

(1)计算大整数加法时,采用数学中列竖式的方法,从个位(即字符串的最后一个字符)开始逐位相加,超过或达到10则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。

(2)计算大整数减法时,首先调用库函数strcmp判断这两个大整数是否相等,如果相等则结果为0,否则用compare函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。

(3)计算大整数乘法时,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。

(4)计算大整数除法时,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。

需求分析(1)任何一个表达式都是由操作数、运算符和界限符组成的,我们称之为单词.(2)表达式求值首先要符合四则运算规则: ① 先乘除,后加减 ② 从左到右进行运算 ③ 先括号内,后括号外(3)功能实现: ① 若当前单词为数字串,则压入数值栈 ② 若当前单词为运算符并大于运算栈的栈顶符号,则进栈 ③ 若当前单词为运算符并等于运算栈的栈顶符号,去括号,输出 ④ 若当前单词为运算符并小于运算栈的栈顶符号,则进行运算

课程设计的目的 通过课程设计全面掌握《C语言程序设计》关键知识点,掌握C语言中数组、指针、结构体、文件等方面的基本知识。

通过课程设计了解并掌握C语言程序设计的方法,熟悉C程序设计的开发环境及C程序的

调试过程。

培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。

课程设计的任务和要求 任务: 编程求出输入的两个正整数之和,这两个正整数的可能达到200位。

要求:

输入:

共有两行,第一行为第1个正整数;第二行为第2个正整数。

输出:

2个正整数之和。

主要参与成员

姓 名 学 号

系 别 班 级 主要作用(分工)

成果形式

设计 软件 作品 其他:

完成情况及以后的拓展设想 通过用C语言编写函数基本实现了大整数相加这个程序,但该程序仍存在一些不足,还可以加上一些语句使程序具有容错功能,并且可以正确计算一个负数和一个正数相加。

课 程 设 计 鉴 定 情 况 表 小组鉴定意见

小组长签名:

年 月 日

指导教师意见

教师签名:

****年**月**日

课程设计成绩 优 良 及格 不及格 教研室意见

年 月 日 备注 《C语言程序设计》课程设计报告书 作者:廖 序 课程设计概述 课程设计名称

大整数相加 任务要求: 编程求出输入的两个正整数之和,这两个正整数的可能达到200位。

输入:

共有两行,第一行为第1个正整数;第二行为第2个正整数。

输出:

2个正整数之和。开发环境: C语言。C语言是目前世界上流行、使用最广泛的高级程序设计语言。1972年,C语言在美国贝尔实验室里问世,后来又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准。

目前,在微机上广泛使用的C语言编译系统有MicrosoftC、Turbo C、Borland C等。这些C语言版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

C语言的特点: C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。

此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

参考资料

李铮、叶艳冰、汪德俊,C语言程序设计基础与应用,清华大学出版社,2005 [2]CSDN技术中心

二、概要设计

为了实现大整数相加这个程序,将程序划分为了三个模块: 输入数据。运算。输出结果。

首先定义了子函数Input()来存储用户输入的两个加数,为了满足任意位数的两个大整数相加,在子函数Input()中嵌套调用子函数Init()使sum数组里面存放的数初始化为”0”。

然后定义子函数Long_Add()使两个大整数作加法运算,从后面往前面相加,附带进位。定义子函数Output()实现输出结果。

最后如下图所示,在主函数main中调用Input(),Long_Add(),Output()三个子函数实现程序。

三、详细设计

程序的流程图:

四、调试过程 第一次 测试数据a=***7,b=111111 编译运行后不能输出结果,检查函数后编译正确。再次分析,发现如果直接把a,b,sum定义为unsigned int型的话,计算出来的和的范围只能在0~65535之间,否则就会出现错误。尝试将a,b,sum存放到字符数组中,从个位开始,一位一位相加。

第二次 测试数据a=***7,b=111111 编译运行后仍不能输出结果。分析原因,在用于输出的子函数Output()中,输出数组字符数组sum[]前未确定和的最高非零位。

尝试加入for(i=0;i

第三次 测试数据a=99999919,b=99 编译运行后发现计算出来结果不正确。经过分析,函数中没有对最后

一个进位进行处理。

尝试加入while(carry > 0)语句,再次进行调试。

{ tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} 第四次 测试数据a=99999919,b=99 编译运行后得到正确结果。

第五次 随意输入几组数据进行测试,结果都是正确的。程序得到实现。

五、结论与体会

通过不断的调试、修改,本课程设计最终实现了200位以内的两个大整数相加,但程序还

可以进一步完善,程序中仍存在一些不足之处,比如缺少容错功能,不能准确计算负整数加正整数,等等问题

虽然C语言程序设计在上学期做为我们的必修课已经学习过了,但书到用时方恨少,这次课程设计的学习程序设计中暴露出的我自身的问题更是非常明显。

一开始看到题目认为非常简单,直接将两个数都定义为整型。编写程序并运行后发现并不能达到题目的要求,计算出来的和只能小于等于65535,否则就会出现错误。分析后,将数据作为字符串来处理,用for循环语句从存数的字符数组中一位一位的取数出来,按照数位对齐,从个位开始,按位相加,逢十进一的运算规则进行运算。最后用字符输出函数putchar()输出计算出来的结果。由于程序偏大且较复杂,将程序划分为了输入数据、运算、输出数据三个子程序。数次编译调试后,最终使程序得以实现。

经过三个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,让我能够进一步的掌握和运用C语言来编写程序。要想学好C语言要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处和薄弱环节。

首先,基础掌握不牢固,对于C语言中的许多基本语法尚没有熟练掌握,在设计过程中仍需请教其它同学,查阅课本,设计效率很低。

其次,经典算法掌握不牢。在完成作业的过程中还需查阅书籍和借鉴他人。

再次,程序量过大的时候,头绪理不清。杂乱无章,无系统性,不便调试和阅览,自己也易于出错。

并且对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

六、源程序清单 #include #include &l

t;string.h> #define Max 1000 char sum[Max+1];/*和*/ char a[Max],b[Max];/*两个加数*/ int len1,len2;void Input(char a[],char b[]){ int i,len;void Init(char a[]);/*对Init()函数进行声明*/ printf(“Please enter two integer:n”);scanf(“%s %s”,a,b);len1=strlen(a);len2=strlen(b);Init(sum);len=strlen(a);for(i=len-1;i>=0;i--)sum[Max+i-len] = a[i];} void Init(char a[])

{ int i;for(i=0;i

void Long_Add(char sum[],char new[]){ int i,j;int len;int tempsum;int carry = 0;/*进位*/ len = strlen(new);/*从个位开始,按位相加,逢十进一*/ for(i=Max-1,j=len-1;i>=0,j>=0;i--,j--){ tempsum = sum[i]-'0'+new [j]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;} while(carry > 0)/*处理最后一个进位*/ {

tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} return;} void Output(char sum[]){int i,n;/*寻找和的最高非零位*/ for(i=0;i

Long_Add(sum,b);Output(sum);getch();return 0;

第五篇:计算机网络课设

计算机网络应用课程设计

报告

系(院):

计算机科学学院 专业班级: 计科11511 姓

名: 钟灿均 学

号: 201503687 指导教师: 余绍文 设计时间: 2017.6.12-2017.6.23 设计地点: 12教1楼机房

一、课程设计目的和意义

计算机网络课程设计的目的,是为了让我们更深入地掌握计算机网络的核心内容,实现理论与实践相结合。让学生用具体的实践成果,体现对理论知识的掌握程度。有利于学生提高计算机网络的实践能力,加深对计算机网络理论知识的理解。其基本目的是:

1. 培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中问题的能力,从而使基础理论知识得到巩固和加深。2. 学习掌握网络应用工程的一般设计过程和方法。

二、设计题目和要求

1.编写程序,实现系统的基本功能;

2.要有用户界面:要求至少采用文本菜单界面;鼓励采用图形菜单界面; 3.写课程设计报告,内容包括:  封面(参见附录I)

 需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?给出功能模块图和流程图。同时明确规定:输入的形式和输出值的范围;输出的形式;程序所能够达到的功能;测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 概要设计:包括程序设计组成框图,程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

 详细设计:包括模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等),每个模块的算法设计说明(可以是描述算法的流程图)。其中源程序要按照写程序的规则来编写,结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 运行结果:包括典型的界面、输入和输出数据等;

 总结:包括课程设计中遇到的问题,解决问题的过程及体会、收获、对课程设计的认识与思考等。

 附录:包括主要程序清单,要有适当的注释,使程序容易阅读。 开发环境:windows 10

 开发工具: vs2008

题目3:基于UDP协议的简易聊天机器人

设计目标:

1.了解Socket通信的原理,在此基础上编写一个聊天程序; 2.理解upd原理;课程设计系统组成及模块功能: 此课程设计实现了基于UDP的客户/服务器通信程序,需要实现以下一些基本功能: 1.客户端连接聊天机器人服务器;

2.消息发送:客户端发送消息给机器人服务器。

3.消息接收:客户端接收到机器人服务器发送给他的消息。4.可以有多个客户端同时连接

5.智能回复功能:根据用户发送的消息内容,稍微有点智能回复。

运行效果:

服务器端和客户端截图

三、设计内容

1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。

2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。

3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。

4、UDP传送数据较TCP快速,系统开销也少。

5、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。

从以上UDP协议特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。

1.服务端

1.2.3.4.5.加载协议栈; 创建套接字;

将套接字绑定到一个本地地址和端口bind; 等待接收数据recvfrom;关闭套接字;

2.客户端

1.2.3.4.加载协议栈;

创建套接字socket;

向服务器发送数据sendto;关闭套接字; 3.相关代码显示:(客户端)

int main(int argc, char* argv[]){

system(“@color 0e”);WORD socketVersion = MAKEWORD(2, 2);WSADATA wsaData;if(WSAStartup(socketVersion, &wsaData)!= 0){ } sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = inet_addr(m);int len = sizeof(sin);return 0;以上代码为相关版本信息及热启动的一些操作;;

结构体端口号及相关地址信息以及转化函数,将输入的信息转化为计算机可识别的二进制代码,进行相关构造

char * sendData = new char[255];cout << “主人:”;cin >> sendData;while(strcmp(sendData, “#”)!= 0){

sendto(sclient, sendData, strlen(sendData), 0,(sockaddr *)&sin, len);char recvData[255];int ret = recvfrom(sclient, recvData, 255, 0,(sockaddr *)&sin, &len);if(ret > 0){

} recvData[ret] = 0x00;cout << “机器人:”;printf(recvData);4.相关代码展示:(服务端)

SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if(serSocket == INVALID_SOCKET){

} printf(“socket error!”);return 0;3

if(bind(serSocket,(sockaddr *)&serAddr, sizeof(serAddr))== SOCKET_ERROR){

} sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);char * sendData = new char[255];char recvData[255];while(true){

int ret = recvfrom(serSocket, recvData, 255, 0,(sockaddr *)&remoteAddr, //printf(recvData);if(ret > 0){

} struct Ro { char recv[255];char send[255];recvData[ret] = 0x00;printf(“接受到一个连接:%s rn”, inet_ntoa(remoteAddr.sin_addr));cout << “主人:”;printf(recvData);printf(“bind error!”);closesocket(serSocket);return 0;以上为对套接字的绑定及判断绑定是否成功,以及对于相关信息的初始化

&nAddrLen);}Ro;FILE *fp;fp = fopen(“G:机器人问答机制.txt”, “r”);while(!feof(fp)){

} fscanf(fp, “%s %s”, Ro.recv, Ro.send);if(strcmp(recvData, Ro.recv)== 0){

} else { } strcpy(sendData, Ro.send);break;strcpy(sendData, “对不起,我不知道”);4

fclose(fp);cout << endl;cout << “机器人:” << sendData << endl;sendto(serSocket, sendData, strlen(sendData), 0,(sockaddr *)&remoteAddr, nAddrLen);

四、设计成果以及心得 1.成果

2.心得

通过对课设的相关的操作,加强了对于相关知识的理解,对于知识的应用也得以加强,在课设过程中,聊天机器人制作较为有趣,对于TCP与UDP的通信方式有了进一步的理解和加强,对于socket编程的相关基础也得以进一步的理解和学习。在今后的学习过程中希望可以将所学知识应用于实际,学以致用。而且对于课设中存在的问题和不足,以及通过老师的讲解,对一些算法加以分析和改进,从而不断完善课设内容,对内容的理解得以加深。

指导老师意见:

成绩:

教师签名: 2017年6月23日

下载给水课设资料word格式文档
下载给水课设资料.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    课设小结

    本次课程设计我们小组顺利的完成了锅炉内胆水温与循环水流量串级控制系统。我们通过讨论对过程参数方面的知识有了更加深入的了解。我负责的是传模拟量采集模块。 和以前做......

    课设规范

    电 子 工 程 学 院 课程设计报告格式及要求 一、封面:单独1页(见样件) 二、摘要、关键词:中文(250~300字)、英文;单独1页 中文摘要前加:“摘要:”,英文摘要前加“Abstract:”。 关键词一......

    操作系统课设

    操作系统课程设计 一实验目的 在多道程序或多任务系统中,系统中同时处于就绪态的进程有若干个,也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊......

    操作系统课设

    课 程 设 计 报 告 课程名称: 计算机操作系统 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 华 中 科 技 大 学 课 程 设 计 报 告 目 录 1 2 3 实验目......

    课设心得

    课程设计心得 在这学期的期末课设中我们很幸运的接触到了嵌入式,通过历时两天的课程设计,我们对嵌入式虽然说不上熟练,不过也算是已经入门。 通过老师介绍,我们知道当今社会,嵌入......

    ERP课设

    ERP原理与应用 课程设计报告-电器公司ERP系统应用班级:1121808 姓名:丁贤民 学号:201120180827 指导老师:徐玮 日期:2014.6.25 一. 实验时间和地点: 2014.06.25~2014.06.26 二.......

    EDA课设

    EDA课程设计报告 课题名称:智力竞赛抢答器 班级:11电科2班 姓名:代维宽 学号:201114580207 同组人:闻仔逊 指导老师:贾默伊任务书 一、用VHDL运用层次化设计方法设计一个小型数字......

    课设心得

    财务管理专业综合实验心得201123090133邓雨长安大学渭水校区WX23042014.6.25—6.27摘要:本实验主要是通过使用“理财之道”财务软件,进行预算,报表建立与分析,成本分析,销售分析......