24小时热门版块排行榜    

查看: 752  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

maggie0211

新虫 (小有名气)

[求助] matlab中一点小问题

程序如下:
第一个:
function dx=ax3(t,x)
dx=[x(2)
    -48.6*x(1)-1.26*x(2)+48.6*x(3)+21.6*sin(x(2))
    10*x(4)
    1.95*x(1)-1.95*x(3)-0.333*sin(x(1))
    x(6)+5.1734*(x(1)-x(5))-5.0069*(x(2)-x(6))
    -48.6*x(5)-1.26*x(6)+48.6*x(7)+21.6*sin(x(6))-4.3407*(x(1)-x(5))
    -4.1015*(x(2)-x(6))
    10*x(8)
    1.95*x(5)-1.95*x(7)-0.333*sin(x(5))+1.0759*(x(1)-x(5))+1.0166*(x(2)-x(6))]
第二个:
tspan=[0 10];
x0=[1 2 1 0 1 2 0 0.5]';
[t,x]=ode15s(@ax3,tspan,x0);
e1=x(:,1)-x(:,5);
e2=x(:,2)-x(:,6);
e3=x(:,3)-x(:,7);
e4=x(:,4)-x(:,8);
plot(t,x(:,1),'r*',t,x(:,5),'o')
xlabel('t')
legend('状态量x_{1}','状态量x_{1}的估计')
figure
plot(t,e1)
xlabel('t');
ylabel('状态量x_{1}与其估计量的误差e_{1}')
figure
plot(t,x(:,2),'r*',t,x(:,6),'o')
xlabel('t')
legend('状态量x_{2}','状态量x_{2}的估计')
figure
plot(t,e2)
xlabel('t')
ylabel('状态量x_{2}与其估计量的误差e_{2}')
figure
plot(t,x(:,3),'r*',t,x(:,7),'o')
xlabel('t')
legend('状态量x_{3}','状态量x_{3}的估计')
figure
plot(t,e3)
xlabel('t');
ylabel('状态量x_{3}与其估计量的误差e_{3}')
figure
plot(t,x(:,4),'r*',t,x(:,8),'o')
xlabel('t')
legend('状态量x_{4}','状态量x_{4}的估计')
figure
plot(t,e4)
xlabel('t');
ylabel('状态量x_{4}与其估计量的误差e_{4}')
执行第二个程序后,出现如下错误:
??? Error using ==> funfun\private\odearguments
Solving AX3 requires an initial condition vector of length 4.

Error in ==> ode15s at 228
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
应该怎么改?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢参与! 2013-07-04 22:24:03
初始条件的个数不一致。
有几个待求变量,就要给几个初始条件。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2013-07-03 11:34:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 maggie0211 的主题更新
信息提示
请填处理意见