【问题描述】 在一个N*N的点阵中,如N=4,你现在站在(1,1),出口在(4,4)。你可以通过上、下、左、右四种移动方法,在迷宫内行走,但是同一个位置不可以访问两次,亦不可以越界。表格最上面的一行加黑数字A[1..4]分别表示迷宫第I列中需要访问并仅可以访问的格子数。右边一行加下划线数字B[1..4]则表示迷宫第I行需要访问并仅可以访问的格子数。如图中带括号红色数字就是一条符合条件的路线。 给定N,A[1..N] B[1..N]。输出一条符合条件的路线,若无解,输出NO ANSWER。(使用U,D,L,R分别表示上、下、左、右。) 2 2 1 2 (4,4) 1 (2,3) (3,3) (4,3) 3 (1,2) (2,2) 2 (1,1) 1 【输入格式】 第一行是数m (n < 6 )。第二行有n个数,表示a[1]..a[n]。第三行有n个数,表示b[1]..b[n]。 【输出格式】 仅有一行。若有解则输出一条可行路线,否则输出“NO ANSWER”。
标签: 点阵
上传时间: 2014-06-21
上传用户:llandlu
实验源代码 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("请输入矩阵第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可传递闭包关系矩阵是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元关系的可传递闭包\n"); void warshall(int,int); int k , n; printf("请输入矩阵的行数 i: "); scanf("%d",&k); 四川大学实验报告 printf("请输入矩阵的列数 j: "); scanf("%d",&n); warshall(k,n); }
上传时间: 2016-06-27
上传用户:梁雪文以
滑模预测控制的一片很好的文献,内容详细,对学习滑模预测控制的很有帮助。
标签: Predictive Discrete Control Sliding Mode
上传时间: 2017-08-05
上传用户:zhangyu97284
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789
无刷直流电机双闭环控制,采用转速与电流双闭环PID控制,波形完美
上传时间: 2019-04-09
上传用户:超级学霸行
针对四轴飞行器飞行性能不稳定和惯性测量单元(IMU)易受干扰、存在漂移等问题,利用惯性传感器MPU6050采集实时数据,以经典互补滤波为基础,提出一种可以自适应补偿系数的互补滤波算法,该算法在低通滤波环节加入PI控制器,依据陀螺仪测得的角速度实时调节PI控制器补偿系数。飞行器姿态控制系统采用双闭环PID控制方法,姿态解算的欧拉角作为系统外环,陀螺仪角速度作为系统内环。最后,搭建以NI my RIO为核心控制器的四轴飞行器,通过Lab VIEW实现算法和仿真,实验结果表明,自适应互补滤波算法可以准确解算姿态信息,双闭环PID控制超调量小、反应灵敏,控制系统基本满足飞行要求。
标签: mpu6050 互补滤波 四旋翼飞控系统 双闭环PID LabVIEW语言
上传时间: 2022-06-13
上传用户:bluedrops
本文围绕光伏离网发电系统的高效率发电技术和逆变控制技术进行了研究,主要内容如下:(1)研究了单相全桥光伏离网逆变器主电路拓扑结构,详细分析了全桥逆变电路的工作原理。研究了面积中心等效SPWM控制算法及电压电流双闭环PI控制算法,在此基础上实现逆变器的稳压控制。(2)重点研究了光伏阵列的输出特性、最大功率点跟踪(MPPT)控制算法和蓄电池充电特性。在对比分析几种常见MPPT控制算法的基础上,提出了一种改进型变步长扰动观察的MPPT控制方法,同时介绍了几种实现MPPT算法的常用DCIDC变换电路,对Boost变换电路的原理进行了分析,并基于Boost电路建立了改进型变步长扰动观察法MPPT控制系统的Matlab/Simulink仿真模型,仿真结果表明改进型变步长扰动观察的MPPT算法能有效地跟踪太阳能光伏系统的最大功率点,提高了系统动态和稳态性能;设计了带MPPT和恒压充电功能的光伏充电控制器,有效地提高了光伏阵列的利用率并实现了蓄电池充电控制的优化。(3)给出了20KW光伏离网逆变器的主电路元件参数及部分硬件电路的原理图设计。(4)给出了详细的软件控制系统设计方案和各功能子模块的软件流程图.重点阐述了带死区补偿的DSPWM控制信号、稳压控制及信号检测的软件实现方法。
上传时间: 2022-06-21
上传用户:
永磁无刷直流电动机是一种性能优越、应用前景广阔的电动机,传统的理论分析及设计方法已比较成熟,它的进一步推广应用,在很大程度上有赖于对控制策略的研究.该文提出了一套基于DSP的全数字无刷直流电动机模糊神经网络双模控制系统,将模糊控制和神经网络分别引入到无刷直流电动机的控制中来.充分利用模糊控制对参数变化不敏感,能够提高系统的快速性的特点,构造适用于调节较大速度偏差的模糊调节器,加快系统的调节速度;由于神经网络既具有非线性映射的能力,可逼近任何线性和非线性模型,又具有自学习、自收敛性,对被控对象无须精确建模,对参数变化有较强的鲁棒性的特点,构造三层BP神经网络调节器,来实现消除稳态偏差的精确控制.以速度偏差率为判断依据,实现模糊和神经网络两种控制模式的切换,使系统在不同速度偏差段快速调整、平滑运行.此外充分利用系统硬件构成的特点,采用适当的PWM输出切换策略,最大限度的抑制逆变桥换相死区;通过换相瞬时转矩公式推导和分析,得出在换相过程中保持导通相功率器件为恒通,即令PWM输出占空比D=1,来抑制定子电感对换相电流影响的控制策略.上述抑制换相死区和采用恒通电压的控制方法,减小了换相引起的转矩波动,使系统电流保持平滑、转矩脉动大幅度减小、系统响应更快、并具有较强的鲁棒性和实时性.在这种设计下,系统不仅能实现更精确的定位和更准确的速度调节,而且可以使无刷直流电动机长期工作在低速、大转矩、频繁起动的状态下.该文选用TMS320LF2407作为微控制器,将系统的参数自调整模糊控制算法,BP神经网络控制算法以及PWM输出,转子位置、速度、相电流检测计算等功能模块编程存储于DSP的E2PROM,实现了对无刷直流电动机的全数字实时控制,并得到了良好的实验结果的结果.
上传时间: 2013-06-01
上传用户:zl123!@#
对三相双降压式并网逆变器这一新型拓扑的滑模控制进行了研究,使系统获得良好的鲁棒性。首先,对三相双降压式并网逆变器进行了等效分析。然后,根据等效分析电路重点对其滑模控制进行了设计,并在控制律中采用了平滑函数来取代符号函数以削弱抖振。仿真结果表明,采用滑模控制后的三相双降压式并网逆变器具有很好的动态和稳态性能,且输出的并网电流谐波含量低,波形质量好。
上传时间: 2013-10-13
上传用户:zycidjl
于ADuC812的智能无功补偿控制器的研制 一种眼科B型超声诊断议 SL11R单片机外部存储器扩展 单片机复位电路...支持键盘双击事件的C程序设计! 一些源程序 FrankLin C51 库函数的一些bug! VC++用ActiveX控件与单片机串行通信
上传时间: 2013-12-10
上传用户:古谷仁美