1 / 8
文档名称:

自适应控制算法.doc

格式:doc   大小:17KB   页数:8页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

自适应控制算法.doc

上传人:wz_198614 2017/7/14 文件大小:17 KB

下载得到文件列表

自适应控制算法.doc

文档介绍

文档介绍:自适应控制算法
#include<>
#include<>
#include<>
float h=; //定义采样步长为全局变量h
float m=0, //设定系统的运行区间(m,n)
n=10;
float g=1;
float r(float t){ //系统输入r(t)
float r;
r=5+5*sin(t);
return (r);
}
void cleartxt(char filename[10]) //清空指定文件
{
FILE *fp;
if((fp=fopen(filename,"w"))==NULL) //打开输出文件,a为追加方式
{
printf("cannot open the file\n");
exit(0);
}
fclose(fp); //用w方式打开,不写入任何数据,文件清空
}
void txt(float data,char filename[10]) //文件操作,向filename的txt文档中输出一个数据{
FILE *fp;
if((fp=fopen(filename,"a"))==NULL) //打开输出文件,a为追加方式
{
printf("cannot open the file\n");
exit(0);
}
fprintf(fp,"%f\n",data); //向文件输出一个数据data
fclose(fp); //关闭文件
}
void inte(float &s,float x1,float x2) //积分
{
//printf("%f %f\n",x1,x2);
s=s+g*h*(x1+x2)/2;
}
void f1(float x,float x1,float &dx1 ) //定义微分方程为一阶方程
{
dx1=-x1+x;
}
void RK1(float x,float &y)// 一阶微分方程四阶龙格-库塔法
{
float dx1;
float k1,k2,k3,k4;
f1(x,y,dx1);
k1=dx1;
x=x+h/2;
f1(x,y+h/2*k1,dx1);
k2=dx1;
f1(x,y+h/2*k2,dx1);
k3=dx1;
x=x+h/2;
f1(x,y+h*k3,dx1);
k4=dx1;
y=y+h*(k1+2*k2+2*k3+k4)/6;
}
void f2(float x,float x1,float &dx1,float x2,float &dx2){//定义微分方程含两个一阶方程的方程组 dx1= x2; //lamda(s)=(s+2)*(s+3)
dx2=-6*x1-5*x2+x;
}
void RK2(float x,float &x1,float &x2)
//两个一阶方程的方程组四阶龙格-库塔法
{
float dx1,dx2;
flo