




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验二Java程序设计基础及简单类的设计一、实验目的1.掌握数组类型的声明和动态内存申请,理解数组的引用模型;2.掌握String类的应用及对字符串变量的操作;3.掌握类的声明格式和多种封装措施,理解对象的引用模型;4.掌握成员变量和方法的概念及构造方法的定义和使用;5.掌握方法的重载。二、实验内容1.给定一个一维整型数组,实现以下功能:(1)求数组元素中的最大值;(2)求数组元素中的最小值;(3)求某个关键字在数组中的序号,若给定关键字在数组中不存在,返回-1;(4)将数组中所有元素按升序重新排列;(5)判断数组的元素序列是否己排序;要求每个功能用一个方法实现,并编写main方法进行测试。packagejava实验二;importjava.util.Arrays;publicclass实验二{ publicstaticintMax(int[]table) { intb=table[0]; for(inti=1;i<table.length;i++) { if(b<table[i]) b=table[i]; } returnb; }publicstaticintMin(int[]table) { intc=table[0]; for(inti=1;i<table.length;i++) { if(c>table[i]) c=table[i]; } returnc; }publicstaticint索引位置(int[]table){intindex=Arrays.binarySearch(table,8);if(index<=0)return-1;elsereturnindex;}publicstaticint[]数组排序(int[]table){Arrays.sort(table);returntable;} publicstaticboolean判断排序(int[]table){ for(inti=0;i<table.length-1;i++) { if(table[i]<table[i+1]) { for(intj=0;j<table.length-1;j++) { if(table[j]>table[j+1]) returnfalse; } } } returntrue;} publicstaticvoidmain(String[]args){ //TODO自动生成的方法存根 int[]a=newint[]{2,5,6,8,0,7,9}; System.out.println("数组是否已经排序:"+判断排序(a)); System.out.println("数组元素的最大值为:"+实验二.Max(a));System.out.println("数组元素的最小值为:"+实验二.Min(a));System.out.println("8的索引位置是:"+实验二.索引位置(a));a=实验二.数组排序(a);System.out.print("排序后的数组:");for(inti=0;i<a.length;i++) System.out.print(a[i]+",");System.out.println();System.out.println("数组是否已经排序:"+实验二.判断排序(a)); }}2.编写一个方法找出两个字符串中所有共同的字符,并在main方法中通过键盘输入两个字符串进行测试。packagejava实验二;importjava.util.*;importjavax.swing.*;publicclass寻相同字符{ publicvoid找相同字符(Strings1,Strings2){ char[]c1=s1.toCharArray(); char[]c2=s2.toCharArray(); ArrayList<Character>lis=newArrayList<Character>(); for(inti=0;i<c1.length;i++){ for(intj=0;j<c2.length;j++){ if(c1[i]==c2[j]){ lis.add(c1[i]); } } } for(inti=0;i<lis.size();i++){ for(intj=0;j<lis.size();j++){ if(lis.get(i)==lis.get(j)&i!=j){ lis.remove(lis.get(i)); } } } for(inti=0;i<lis.size();i++){ System.out.print(lis.get(i)+""); } } publicstaticvoidmain(String[]args){ //TODO自动生成的方法存根 StringA=JOptionPane.showInputDialog("请输入第一个字符串"); StringA2=JOptionPane.showInputDialog("请输入第二个字符串"); 寻相同字符B=new寻相同字符(); B.找相同字符(A,A2); }}3.声明银行账户类,成员变量包括账号、储户姓名、开户时间、身份证号码、存款余额等账户信息,成员方法包括开户、存款、取款、查询余额、销户等操作。packagejava实验二;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassBankAccount{//创建银行账户类privateString_account;//账号privateString_name;//储户姓名privateString_ID;//身份证号码privateDate_accounTimet;//开户时间privatedouble_balance;//存款余额publicBankAccount(Stringaccount,Stringname,StringID,doublebalance){//构造方法进行初始化this._account=account;this._name=name;this._ID=ID;this._accounTimet=newDate();this._balance=balance;System.out.println("开户成功");}//存款publicvoiddeposit(doubleamount){_balance+=amount;System.out.println("成功存款:"+amount);checkAccount();//方法调用}//取款publicvoidwithDrawal(doubleamount){if(amount>_balance){System.out.println("账户:"+this._account+"卡上余额不足,取款失败!"+"\n"+"操作时间:"+this.操作时间()+"\n");return;}this._balance=this._balance-amount;System.out.println("成功取款:"+amount);checkAccount();}publicDate操作时间(){ Datea=newDate();returna; }publicvoidcheckAccount(){//显示进行操作后的余额和操作的时间System.out.println("账户:"+this._account+"卡上余额为:"+_balance+"\n"+"操作时间:"+this.操作时间()+"\n");}publicStringgetID(){return_ID;}publicvoidsetID(StringiD){//建户人证件号码_ID=iD;}publicStringgetAccount(){return_account;}publicvoidsetAccount(Stringaccount){//新建账号名称this._account=account;}publicStringgetName(){return_name;}publicvoidsetName(Stringname){//建户人姓名this._name=name;}publicStringgetAccounTimet(){SimpleDateFormatsdf=newSimpleDateFormat("yyyy:MM:ddHH:mm:ss");returnsdf.format(this._accounTimet);}publicvoidsetAccounTimet(DateaccounTimet){//开户时间this._accounTimet=accounTimet;}publicdoublegetBalance(){return_balance;}publicvoidsetBalance(doublebalance){//存款余额this._balance=balance;}publicstaticvoidmain(String[]args){BankAccountaccount=newBankAccount("","","",0.00);account.setAccounTimet(account.操作时间());System.out.println("输出开户时间:");System.out.println(account.getAccounTimet());System.out.println("请输入账户信息:");System.out.println("请输入身份证号码:");account.setID("4509**********");System.out.println(account.getID());System.out.println("请输入账户号码:");account.setAccount("000001");System.out.println(account.getAccount());System.out.println("请输入你的名字:");account.setName("张三");System.out.println(account.getName());System.out.println("请输入你要存进账户里的钱:");account.setBalance(500.00);System.out.println(account.getBalance());System.out.println("输出查询信息:");account.checkAccount();account.deposit(100.00);account.withDrawal(400.00);account.checkAccount();account=null;System.gc();System.out.println("您已经成功销户");}}4.声明一个矩阵类,使用二维数组存储矩阵元素,实现以下方法:(1)输出矩阵类中所有元素值;(2)返回当前矩阵的转置矩阵;(3)判断当前矩阵是否是上三角矩阵;(4)将当前矩阵加上另一矩阵;(5)将当前矩阵与另一个矩阵相加,不改变当前矩阵;(6)判断当前矩阵与另一个矩阵是否相等。packagejava实验二;importjavax.swing.*;publicclassMatrix{//创建矩阵类 publicintrow;//二维数组行数 publicintrank;//二维数组列数 publicint[][]mat;//创建数组(成员变量) publicMatrix(inta,intb){//构造方法,初始化 row=a;rank=b;mat=newint[row][rank];} publicvoid输入数组(){//创建输入数组方法 for(inti=0;i<row;i++) for(intj=0;j<rank;j++){ Stringij=JOptionPane.showInputDialog("请输入数组中的元素"); mat[i][j]=Integer.parseInt(ij); } } publicvoidOutput(){//输出数组中元素的值 System.out.println("Matrix="); for(inti=0;i<row;i++){ for(intj=0;j<rank;j++) System.out.print(mat[i][j]+""); System.out.println(); } System.out.println(); } publicMatrixTrans(){//矩阵转置 Matrixc=newMatrix(rank,row); for(inti=0;i<c.row;i++) for(intj=0;j<c.rank;j++) c.mat[i][j]=mat[j][i]; returnc; } publicstaticvoidisUpperTriangularMatrix(Matrixx){ for(intj=0;j<x.rank;j++){ for(inti=j+1;i<x.row;i++) if(x.mat[i][j]!=0){ System.out.println(x.mat+"此矩阵不是上三角矩阵"); return; } } System.out.println(x.mat+"此矩阵为上三角矩阵"); } publicint[][]Plus1(Matrixa){ if(a.row==row&&a.rank==rank){ for(inti=0;i<row;i++) for(intj=0;j<rank;j++) mat[i][j]=mat[i][j]+a.mat[i][j]; }else{ System.out.println("matrixAdderror!"); } returnmat; } publicMatrixPlus(Matrixa){//创建返回值为本类的方法(参数为本类的一个对象) //行数列数相同的矩阵的加和 Matrixc=newMatrix(row,rank); if(a.row==row&&a.rank==rank){ for(inti=0;i<row;i++) for(intj=0;j<rank;j++) c.mat[i][j]=mat[i][j]+a.mat[i][j]; }else{ System.out.println("matrixAdderror!"); } returnc; } publicbooleanequals(Matrixb){ if(b.row==row&&b.rank==rank){ for(inti=0;i<row;i++) for(intj=0;j<rank;j++) if(b.mat[i][j]!=mat[i][j]) returnfalse; } returntrue; } publicstaticvoidmain(String[]args){ Matrixy=newMatrix(4,4); System.out.println("请输入数组中的元素"); y.输入数组(); System.out.println("输出数组:"); y.Output(); Matrixz=newMatrix(4,4); System.out.println("请将刚输入的数组进行转置"); z=y.Trans(); System.out.println("输出转置后得到的另一个矩阵:"); z.Output(); System.out.println("请判断输入的矩阵是否为上三角矩阵:"); isUpperTriangularMatrix(y); Matrixp=newMatrix(4,4); System.out.println("在不改变原矩阵的情况下加另一矩阵"); p=y.Plus(z); System.out.println("输出和矩阵"); p.Output(); System.out.println("加上另外一个矩阵"); y.Plus1(z); System.out.println("输出相加后变化得到的矩阵"); y.Output(); System.out.println("再输入一个矩阵"); Matrixx=newMatrix(4,4); System.out.println("请输入数组中的元素"); x.输入数组(); System.out.println("输出数组:"); x.Output(); System.out.println("判断两个矩阵是否相等"); System.out.println(y.equals(x)); }}自动控制原理实验报告实验名称:二阶系统的动态特性与稳定性分析班级:姓名:学号:实验二二阶系统的动态特性与稳定性分析一、实验目的掌握二阶系统的电路模拟方法及其动态性能指标的测试技术过阻尼、临界阻尼、欠阻尼状态分析二阶系统特征参量()对系统动态性能的影响;分析系统参数变化对系统稳定性的影响,加深理解“线性系统稳定性至于其结构和参数有关,与外作用无关”的性质;了解掌握典型三阶系统的稳定状态、临界稳定、不稳定状态;学习二阶控制系统及其阶跃响应的Matlab仿真和simulink实现方法。二、实验内容构成各二阶控制系统模拟电路,计算传递函数,明确各参数物理意义。用Matlab和simulink仿真,分析其阶跃响应动态性能,得出性能指标。搭建典型二阶系统,观测各个参数下的阶跃响应曲线,并记录阶跃响应曲线的超调量、峰值时间tp以及调节时间ts,研究其参数变化对典型二阶系统动态性能和稳定性的影响;搭建典型三阶系统,观测各个参数下的阶跃响应曲线,并记录阶跃响应曲线的超调量、峰值时间tp以及调节时间ts,研究其参数变化对典型三阶系统动态性能和稳定性的影响;将软件仿真结果与模拟电路观测的结果做比较。三、实验步骤二阶系统的模拟电路实现原理将二阶系统:可分解为一个比例环节,一个惯性环节和一个积分环节研究特征参量对二阶系统性能的影响将二阶系统固有频率保持不变,测试阻尼系数不同时系统的特性,搭建模拟电路,改变电阻R6可改变的值当R6=50K时,二阶系统阻尼系数=0.8当R6=100K时,二阶系统阻尼系数=0.4当R6=200K时,二阶系统阻尼系数=0.2(1)用Matlab软件仿真实现二阶系统的阶跃响应,计算超调量、峰值时间tp以及调节时间ts。当,时:clearg=tf(12.5^2,[125*0.812.5^2]),step(g)Transferfunction:156.3-------------------s^2+200s+156.3超调量:=2%;峰值时间:tp=0.409s调节时间:ts=0.271s当时g=tf(12.5^2,[125*0.412.5^2]),step(g)Transferfunction:156.3------------------s^2+10s+156.3超调量:=25%;峰值时间:tp=0.254s调节时间:ts=0.608s当时g=tf(12.5^2,[125*0.212.5^2]),step(g)Transferfunction:156.3-----------------s^2+5s+156.3超调量:=52%;峰值时间:tp=0.245s调节时间:ts=1.1s(2)在自控原理实验箱中搭建对应的二阶系统的模拟电路,输入阶跃信号,观测不同特征参量下输出阶跃响应曲线,并记录出现超调量超调量:=52%、峰值时间tp及调节时间ts3、研究特征参量对二阶系统性能的影响将二阶系统特征参量=0.4保持不变,测试固有频率不同时系统的特征,搭建模拟电路,理论计算结果如下:当R5=256K、R6=200K时,则该二阶系统固有频率=6.25当R5=64K、R6=100K时,则该二阶系统固有频率=12.5当R5=16K、R6=50K时,则该二阶系统固有频率=25(1)用Matlab软件仿真实现二阶系统的阶跃响应,计算超调量、峰值时间tp以及调节时间ts。当时g=tf(6.25^2,[112.5*0.46.25^2]),step(g)Transferfunction:39.06-----------------s^2+5s+39.06超调量:=25%;峰值时间:tp=0.509s调节时间:ts=1.22s当时,g=tf(12.5^2,[125*0.412.5^2]),step(g)Transferfunction:156.3------------------s^2+10s+156.3超调量:=25%;峰值时间:tp=0.254s调节时间:ts=0.608sg=tf(25^2,[150*0.425^2]),step(g)Transferfunction:625----------------s^2+20s+625超调量:=25%;峰值时间:tp=0.128s调节时间:ts=0.304s(2)在自控原理实验箱中搭建对应的二阶系统的模拟电路,输入阶跃信号,观测不同特征参量下输出阶跃响应曲线,并记录超调量、峰值时间tp及调节时间ts4、研究典型三阶系统的响应曲线与稳定性R7=10K,开环增益K=50,三阶系统不稳定R7=125/3K,开环增益K=12,三阶系统临界稳定R7=100K,开环增益K=5,三阶系统稳定(1)用Matlab软件仿真实现三阶系统阶跃响应,验证其稳定性R7=10K,开环增益K=50g=tf(50,[0.050.6150])step(g)Transferfunction:50---------------------------0.05s^3+0.6s^2+s+50R7=125/3K,开环增益K=12g=tf(12,[0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三农村能源利用与可持续发展方案
- 建筑工程中介服务合同
- 环保技术研发投入趋势表
- 上季度收入与支出统计表
- 天水艺术景观施工方案
- 道路栏杆施工方案
- 现浇混凝土屋面板施工方案
- 阳泉固定抗震支架施工方案
- 哪些工程需要施工方案
- 发电洞二次衬砌施工方案
- 足球迷互动活动策划与执行策略
- 公司内部办公用品采购预算表
- 四川省南充市2025届高三下学期高考适应性考试(二诊)语文试题(含答案)
- 湖北省2025届高三下学期2月调考语文试题及参考答案
- ESC+2024+心房颤动(房颤)管理指南解读
- 2025年《地陪导游服务程序》公开课标准教案
- 爱耳日完整课件
- 2025年国电投核能限公司招聘高频重点模拟试卷提升(共500题附带答案详解)
- 云南省2025年中考化学第三次模拟考试试题含答案
- 系统集成项目售后服务方案
- 2024年南宁市良庆区招聘专职化城市社区工作者笔试真题
评论
0/150
提交评论