24小时热门版块排行榜    

查看: 3064  |  回复: 17

新手菜鸟1818

金虫 (小有名气)

引用回帖:
9楼: Originally posted by tianlijun at 2013-08-13 08:25:34
是够复杂的,要慢慢看才能看懂,也没给出条件

你需要什么条件?
11楼2013-08-13 09:41:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

新手菜鸟1818

金虫 (小有名气)

引用回帖:
8楼: Originally posted by Nonebull at 2013-08-13 03:09:30
楼主 第17个ode方程的写法有问题,gamma5是scalar,跟matrix的乘法应该特别注意,要区别点乘和普通乘法

我的这个算法里面。gamma5 是个数。
12楼2013-08-13 09:59:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

新手菜鸟1818

金虫 (小有名气)

引用回帖:
5楼: Originally posted by 月只蓝 at 2013-08-12 10:14:23
整个程序看似挺长挺复杂,其实本质上是求解一个普通含有33个方程的常微分方程组的初值问题,求解的方法是用四阶精度的龙格库塔法。程序运行不出来,主要原因在于,构建模型时,需要提供的参数、变量方程没有正确给出 ...

example11.m 文件如下:

clear;
clc;
t=[0:0.01:10];
x0=[0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5];i=1;
[t,x]=ode45('example11fun',t,x0);
x1d=sin(t);
plot(t,x(:,1),'-',t,x1d,'-.');grid

example11fun.m  如下:
function dx=example11fun(t,x)
%%%%期望输出%%%%%
x1d=sin(t);
%%%%%%%%%%
%%%%参数设置%%%%%
gamma5=0.1;eta=1.5;alphac=0.8;alphaa=0.5;Q=1;
R=1; kr=[20 20];zeta=1.2;
%%%%控制设计%%%%%%
ue=[2*x(26)*x(31)+x(27)*x(32);x(26)*x(32)+2*x(27)*x(33)];
ue1=norm(ue);
cu=[x(11) x(12);x(13) x(14)];
ud=cu'*([x(22);x(23)]-[x(3) x(5);x(4) x(6)]*[x(22);x(23)]-[x(7) x(9);x(8) x(10)]*[tanh(x(22));tanh(x(23))]-[x(15);x(16)]);
ud1=norm(ud);
ur=kr*[x(26)/(x(26)^2+x(27)^2+zeta);x(27)/(x(26)^2+x(27)^2+zeta)];
%ur1=norm(ur);
u=ue1+ud1;
uad=u-ur;
%%%%%%%%
sigma1=2*x(26)*(x(3)*x(26)+x(5)*x(27)+x(7)*tanh(x(24))-x(7)*tanh(x(22))-x(9)*tanh(x(25))+x(9)*tanh(x(23))+x(13)*ue1);
sigma2=x(27)*(x(3)*x(26)+x(5)*x(27)+x(7)*tanh(x(24))-x(7)*tanh(x(22))-x(9)*tanh(x(25))+x(9)*tanh(x(23))+x(13)*ue1)+x(26)*(x(4)*x(26)+x(6)*x(27)+x(8)*tanh(x(24))-x(8)*tanh(x(22))-x(10)*tanh(x(25))+x(10)*tanh(x(23))+x(14)*ue1);
sigma3=2*x(27)*(x(4)*x(26)+x(6)*x(27)+x(8)*tanh(x(24))-x(8)*tanh(x(22))-x(10)*tanh(x(25))+x(10)*tanh(x(23))+x(14)*ue1);
sigmac1=sigma1/(sigma1^2+sigma2^2+sigma3^2+1);
sigmac2=sigma2/(sigma1^2+sigma2^2+sigma3^2+1);
sigmac3=sigma3/(sigma1^2+sigma2^2+sigma3^2+1);
%%%%%%%%%
%%%%%%%%%
dx=[-x(1)+x(2);  %1 系统方程
    -0.5*x(1)-0.5*x(2)*(1-(cos(2*x(1))+2)^2)+(cos(2*x(1))+2)*u;  %2 系统方程
    (x(18)+0.1*x(19))*(x(1)-x(18)); %%3 自适应调节C11
    (x(18)+0.1*x(19))*(x(2)-x(19)); %%4 自适应调节C12
    (0.1*x(18)+x(19))*(x(1)-x(18)); %%5 自适应调节C21
    (0.1*x(18)+x(19))*(x(2)-x(19)); %%6 自适应调节C22
    (tanh(x(18))+0.2*tanh(x(19)))*(x(1)-x(18)); %%7  自适应调节A11
    (tanh(x(18))+0.2*tanh(x(19)))*(x(2)-x(19)); %%8  自适应调节A12
    (0.2*tanh(x(18))+tanh(x(19)))*(x(1)-x(18)); %%9  自适应调节A21
    (0.2*tanh(x(18))+tanh(x(19)))*(x(2)-x(19)); %%10 自适应调节A22
    (0.1*u)*(x(1)-x(18)); %%11  自适应调节Cu11
    (0.1*u)*(x(2)-x(19)); %%12  自适应调节Cu12
    u*(x(1)-x(18));     %%13  自适应调节Cu21
    u*(x(2)-x(19));     %%14  自适应调节Cu22
    0.2*(x(1)-x(18));   %%15  自适应调节Au1   
    0.2*(x(2)-x(19));   %%16  自适应调节Au2
    -gamma5*((x(1)-x(18))^2+(x(2)-x(19))^2)/((x(1)-x(18))^2+(x(2)-x(19))^2+eta); %%17 自适应调节theta
    x(3)*x(18)+x(5)*x(19)+x(7)*tanh(x(18))+x(9)*tanh(x(19))+x(13)*u+x(15)-x(20);  %%18   x1的估计/5式
    x(4)*x(18)+x(6)*x(19)+x(8)*tanh(x(18))+x(10)*tanh(x(19))+x(14)*u+x(16)-x(21); %%19   x2的估计/5式
    -60*(x(1)-x(18))+x(17)*(x(1)-x(18))/((x(1)-x(18))^2+(x(2)-x(19))^2+eta);  %%20   v1/6式
    -60*(x(2)-x(19))+x(17)*(x(2)-x(19))/((x(1)-x(18))^2+(x(2)-x(19))^2+eta);  %%21   v2/6式
    x(3)*x(22)+x(5)*x(23)+x(7)*tanh(x(22))+x(9)*tanh(x(23))+x(13)*ud1+x(15);    %%22   期望输出xd1/18式
    x(4)*x(22)+x(6)*x(23)+x(8)*tanh(x(22))+x(10)*tanh(x(23))+x(14)*ud1+x(16);   %%23   期望输出xd2/18式
    x(3)*x(18)+x(5)*x(19)+x(7)*tanh(x(18))+x(9)*tanh(x(19))+x(13)*u+x(15);  %%24   x1的重写/17式
    x(4)*x(18)+x(6)*x(19)+x(8)*tanh(x(18))+x(10)*tanh(x(19))+x(14)*u+x(16); %%25   x2的重写/17式
    x(24)-x(22);   %%%26 系统误差e1
    x(25)-x(23);   %%%27 系统误差e2
    -alphac*sigmac1*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%28 调节wc1 31式
    -alphac*sigmac2*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%29 调节wc2 31式
    -alphac*sigmac3*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%30 调节wc3 31式
    -alphaa*2*x(26)*(2*x(26)*x(31)+x(27)*x(32)+x(26)*x(11)*x(28)+0.5*(x(27)*x(11)+x(26)*x(12))*x(29)+x(27)*x(12)*x(30));    %%31 调节wa1 38式
    -alphaa*(x(27)*(2*x(26)*x(31)+x(27)*x(32)+x(26)*x(11)*x(28)+0.5*(x(27)*x(11)+x(26)*x(12))*x(29)+x(27)*x(12)*x(30))+x(26)*(x(26)*x(32)+2*x(27)*x(33)+x(26)*x(13)*x(28)+0.5*(x(27)*x(13)+x(26)*x(14))*x(29)+x(27)*x(14)*x(30)));    %%32 调节wa2 38式
    -alphaa*2*x(27)*(x(26)*x(32)+2*x(27)*x(33)+x(26)*x(13)*x(28)+0.5*(x(27)*x(13)+x(26)*x(14))*x(29)+x(27)*x(14)*x(30));
    ];


不好意思再次打扰您。。我的确是没招了。。请指正。。谢谢。。
13楼2013-08-13 16:14:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhou_yg

木虫 (正式写手)

感谢参与,应助指数 +1
xiegangmai: 应助指数-1, 谢谢参与!非应助请勿选择“应助回帖” 2013-08-13 23:39:57
仔细查点乘。但是,还是运行不了。。。不知您
14楼2013-08-13 16:24:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

新手菜鸟1818

金虫 (小有名气)

引用回帖:
14楼: Originally posted by zhou_yg at 2013-08-13 16:24:53
仔细查点乘。但是,还是运行不了。。。不知您

点乘都去掉了。。。运行之后什么也不显示。。您看应该怎么办?
15楼2013-08-13 16:43:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★
xiegangmai: 金币+2, 鼓励讨论交流! 2013-08-13 23:40:06
引用回帖:
13楼: Originally posted by 新手菜鸟1818 at 2013-08-13 16:14:17
example11.m 文件如下:

clear;
clc;
t=;
x0=;i=1;
=ode45('example11fun',t,x0);
x1d=sin(t);
plot(t,x(:,1),'-',t,x1d,'-.');grid

example11fun.m  如下:
function dx=example11fun(t,x)
%%%%期望 ...

系统一直 “busy”状态,因为积分步长(0.01)太短了,积分区间(右端点为10)也比较长,如果右端点不能减小的话,可以适当地增大积分步长,当然这会牺牲一定的精度。
我把积分步长增大到0.05,右端点取为0.5,1,2,3,4时,结果见附图。
可见程序是通的,可以运行。
拼了。。700金币求高手。最优控制,动态规划 matlab 仿真。。
附图1.jpg


拼了。。700金币求高手。最优控制,动态规划 matlab 仿真。。-1
附图2.jpg


拼了。。700金币求高手。最优控制,动态规划 matlab 仿真。。-2
附图3.jpg


拼了。。700金币求高手。最优控制,动态规划 matlab 仿真。。-3
附图4.jpg


拼了。。700金币求高手。最优控制,动态规划 matlab 仿真。。-4
附图5.jpg

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
16楼2013-08-13 19:48:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
xiegangmai: 金币+2, 谢谢参与! 2013-08-13 23:40:14
新手菜鸟1818: 金币+700, ★★★★★最佳答案, 就是一个字。。。服!! 2013-08-14 15:05:03
引用回帖:
13楼: Originally posted by 新手菜鸟1818 at 2013-08-13 16:14:17
example11.m 文件如下:

clear;
clc;
t=;
x0=;i=1;
=ode45('example11fun',t,x0);
x1d=sin(t);
plot(t,x(:,1),'-',t,x1d,'-.');grid

example11fun.m  如下:
function dx=example11fun(t,x)
%%%%期望 ...

考察了一下积分步长和积分区间对计算耗时的影响,发现积分区间是主导因素,以t右端点为3.5为例,积分步长分别为0.001、0.01、0.1时,计算总耗时如下(计算机性能不同,耗时也会不同):

积分步长       0.001     0.01       0.1      0.5
计算耗时/s         9.50      9.48      9.20     9.08
可见积分步长,对计算耗时影响很小。

但是右端点的数值影响很大(以步长0.01为例):
右端点数值      0.5    1     1.5    2    2.5    3         3.5      
计算耗时/s         0.45   0.46    0.47    0.48    0.66    1.52      9.48   

可见,计算耗时,从右端点大于3以后,开始剧烈增大,为什么会发生在3左右(很接近于3.14,即π,系统的周期性?),由于对你的体系具体的情况不了解,猜测可能与你研究的体系的特点有关。个人感觉,在程序不变的情况下,也许积分区间增大到5,就需要几天的计算时间,积分区间增大到10,这是无法想象的天文数字。

总之,如果积分区间右端点取到3左右就可以的话,这个程序算是成功的。
如果实际要求一定要10的话,建议你好好检查一下程序,是不是有什么地方写错了,参数不对等情况。你可以以0.01的积分步长,区间取到4.5,让MATLAB一直算,把电脑通宵开着,看看需要多久。

另外,我对你的程序整理一下,没有改动任何参数的数值,只是把原本2个m文件,合并为一个,并添加了计算消耗时间。代码参考如下:
CODE:
function solve_example11fun
clear all;clc;
tic,
t=0:0.01:3.5;
x0=[0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5;0.5;0.5;0;0;0;0.5;0.5];
[t,x]=ode45(@example11fun,t,x0);
toc;
x1d=sin(t);
figure,plot(t,x(:,1),'b-',t,x1d,'r-');grid on,xlabel('t'),legend('x(1)与t关系曲线','x1d与t关系曲线','Location','best');


%--------------------------------------------------------------------------%
function dx=example11fun(t,x)
%-------------------------参数设置----------------------------------------%
gamma5=0.1;
eta=1.5;
alphac=0.8;
alphaa=0.5;
Q=1;
R=1;
kr=[20 20];
zeta=1.2;
%--------------------------控制设计---------------------------------------%

ue=[2*x(26)*x(31)+x(27)*x(32);x(26)*x(32)+2*x(27)*x(33)];
ue1=norm(ue);
cu=[x(11) x(12);x(13) x(14)];
ud=cu'*([x(22);x(23)]-[x(3) x(5);x(4) x(6)]*[x(22);x(23)]-[x(7) x(9);x(8) x(10)]*[tanh(x(22));tanh(x(23))]-[x(15);x(16)]);
ud1=norm(ud);
ur=kr*[x(26)/(x(26)^2+x(27)^2+zeta);x(27)/(x(26)^2+x(27)^2+zeta)];
u=ue1+ud1;
uad=u-ur;

%------------------------------------------------------------------------&

sigma1=2*x(26)*(x(3)*x(26)+x(5)*x(27)+x(7)*tanh(x(24))-x(7)*tanh(x(22))-x(9)*tanh(x(25))+x(9)*tanh(x(23))+x(13)*ue1);
sigma2=x(27)*(x(3)*x(26)+x(5)*x(27)+x(7)*tanh(x(24))-x(7)*tanh(x(22))-x(9)*tanh(x(25))+x(9)*tanh(x(23))+x(13)*ue1)+x(26)*(x(4)*x(26)+x(6)*x(27)+x(8)*tanh(x(24))-x(8)*tanh(x(22))-x(10)*tanh(x(25))+x(10)*tanh(x(23))+x(14)*ue1);
sigma3=2*x(27)*(x(4)*x(26)+x(6)*x(27)+x(8)*tanh(x(24))-x(8)*tanh(x(22))-x(10)*tanh(x(25))+x(10)*tanh(x(23))+x(14)*ue1);
sigmac1=sigma1/(sigma1^2+sigma2^2+sigma3^2+1);
sigmac2=sigma2/(sigma1^2+sigma2^2+sigma3^2+1);
sigmac3=sigma3/(sigma1^2+sigma2^2+sigma3^2+1);

%---------------------------------定义常微分方程组------------------------%
dx=[-x(1)+x(2);  %1 系统方程
     -0.5*x(1)-0.5*x(2)*(1-(cos(2*x(1))+2)^2)+(cos(2*x(1))+2)*u;  %2 系统方程
     (x(18)+0.1*x(19))*(x(1)-x(18)); %%3 自适应调节C11
     (x(18)+0.1*x(19))*(x(2)-x(19)); %%4 自适应调节C12
     (0.1*x(18)+x(19))*(x(1)-x(18)); %%5 自适应调节C21
     (0.1*x(18)+x(19))*(x(2)-x(19)); %%6 自适应调节C22
     (tanh(x(18))+0.2*tanh(x(19)))*(x(1)-x(18)); %%7  自适应调节A11
     (tanh(x(18))+0.2*tanh(x(19)))*(x(2)-x(19)); %%8  自适应调节A12
     (0.2*tanh(x(18))+tanh(x(19)))*(x(1)-x(18)); %%9  自适应调节A21
     (0.2*tanh(x(18))+tanh(x(19)))*(x(2)-x(19)); %%10 自适应调节A22
     (0.1*u)*(x(1)-x(18)); %%11  自适应调节Cu11
     (0.1*u)*(x(2)-x(19)); %%12  自适应调节Cu12
     u*(x(1)-x(18));     %%13  自适应调节Cu21
     u*(x(2)-x(19));     %%14  自适应调节Cu22
     0.2*(x(1)-x(18));   %%15  自适应调节Au1   
    0.2*(x(2)-x(19));   %%16  自适应调节Au2
     -gamma5*((x(1)-x(18))^2+(x(2)-x(19))^2)/((x(1)-x(18))^2+(x(2)-x(19))^2+eta); %%17 自适应调节theta
     x(3)*x(18)+x(5)*x(19)+x(7)*tanh(x(18))+x(9)*tanh(x(19))+x(13)*u+x(15)-x(20);  %%18   x1的估计/5式
     x(4)*x(18)+x(6)*x(19)+x(8)*tanh(x(18))+x(10)*tanh(x(19))+x(14)*u+x(16)-x(21); %%19   x2的估计/5式
     -60*(x(1)-x(18))+x(17)*(x(1)-x(18))/((x(1)-x(18))^2+(x(2)-x(19))^2+eta);  %%20   v1/6式
     -60*(x(2)-x(19))+x(17)*(x(2)-x(19))/((x(1)-x(18))^2+(x(2)-x(19))^2+eta);  %%21   v2/6式
     x(3)*x(22)+x(5)*x(23)+x(7)*tanh(x(22))+x(9)*tanh(x(23))+x(13)*ud1+x(15);    %%22   期望输出xd1/18式
     x(4)*x(22)+x(6)*x(23)+x(8)*tanh(x(22))+x(10)*tanh(x(23))+x(14)*ud1+x(16);   %%23   期望输出xd2/18式
     x(3)*x(18)+x(5)*x(19)+x(7)*tanh(x(18))+x(9)*tanh(x(19))+x(13)*u+x(15);  %%24   x1的重写/17式
     x(4)*x(18)+x(6)*x(19)+x(8)*tanh(x(18))+x(10)*tanh(x(19))+x(14)*u+x(16); %%25   x2的重写/17式
     x(24)-x(22);   %%%26 系统误差e1
     x(25)-x(23);   %%%27 系统误差e2
     -alphac*sigmac1*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%28 调节wc1 31式
     -alphac*sigmac2*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%29 调节wc2 31式
     -alphac*sigmac3*((x(26)^2*x(28)+x(26)*x(27)*x(29)+x(27)^2*x(30))+Q*x(26)^2+Q*x(27)^2+R*ue1^2); %%30 调节wc3 31式
     -alphaa*2*x(26)*(2*x(26)*x(31)+x(27)*x(32)+x(26)*x(11)*x(28)+0.5*(x(27)*x(11)+x(26)*x(12))*x(29)+x(27)*x(12)*x(30));    %%31 调节wa1 38式
     -alphaa*(x(27)*(2*x(26)*x(31)+x(27)*x(32)+x(26)*x(11)*x(28)+0.5*(x(27)*x(11)+x(26)*x(12))*x(29)+x(27)*x(12)*x(30))+x(26)*(x(26)*x(32)+2*x(27)*x(33)+x(26)*x(13)*x(28)+0.5*(x(27)*x(13)+x(26)*x(14))*x(29)+x(27)*x(14)*x(30)));    %%32 调节wa2 38式
     -alphaa*2*x(27)*(x(26)*x(32)+2*x(27)*x(33)+x(26)*x(13)*x(28)+0.5*(x(27)*x(13)+x(26)*x(14))*x(29)+x(27)*x(14)*x(30));
     ];

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
17楼2013-08-13 20:35:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

新手菜鸟1818

金虫 (小有名气)

引用回帖:
17楼: Originally posted by 月只蓝 at 2013-08-13 20:35:12
考察了一下积分步长和积分区间对计算耗时的影响,发现积分区间是主导因素,以t右端点为3.5为例,积分步长分别为0.001、0.01、0.1时,计算总耗时如下(计算机性能不同,耗时也会不同):

积分步长       0.001     ...

啥也不说了。。。就是膜拜。。就是佩服。。。牛!!700币子。。说话算话。。给了。。希望下回有不懂的东西,还能得到您的指点。。感谢!!
18楼2013-08-14 15:04:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 新手菜鸟1818 的主题更新
信息提示
请填处理意见