【m.file】ODE45_fun:
function dx=ODE45_fun(t,x)
a1=1;a2=1;e1=9;e2=7;f1=56;f2=98;g1=76;g2=665;
a=a1+a2;
e=e1+e2;
f=f1+f2;
g=g1+g2;
dx(1)=x(3)+x(2)-x(4)*x(2)+2*x(5)*x(2)+x(2)*x(2)+x(5)+e+f+g;
dx(2)=x(1)+x(3)-x(4)*x(2)+x(2)*x(2)+x(5)*x(5)+x(5)*x(2)+e*f+g;
dx(3)=x(2)+x(1)-x(5)*x(1)+x(4)*x(3)-x(3)-x(4)-e*g-f;
x(6)=x(4)*x(5)+x(2)*x(3)+e*f+e*g;
dx(4)=x(5)*a-x(3)*x(1)-x(3)-e*f*g*x(6)
dx(5)=x(4)*a-x(2)*x(1)+e*f*x(1)+x(2)*x(2)*x(5)+x(2)*x(5)*x(5)+e*f+f*g
dx=[dx(1);dx(2);dx(3);dx(4);dx(5);dx(6)];
【m.file】DE45_main:
tspan=[0,10];
x0=[0:0.1:2:0:0.1:2];
[t,x]=ode45('ODE45_fun',tspan,x0);
data=[t,x];
save ODE45_data.txt data-ascii
subplot(2,3,1),plot(t,x(1))
subplot(2,3,2),plot(t,x(2))
subplot(2,3,3),plot(t,x(3))
subplot(2,3,4),plot(t,x(4))
subplot(2,3,5),plot(t,x(5))
subplot(2,3,6),plot(t,x(6))
MATLAB:
>> ODE45_main
Warning: Colon operands must be real scalars.
Warning: Colon operands must be real scalars.
??? Error using ==> funfun\private\odearguments
No default parameters in ODE45_FUN. Use ode45(ODE45_FUN,tspan,y0,...) instead.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...
Error in ==> ODE45_main at 3
[t,x]=ode45('ODE45_fun',tspan,x0);

 채택된 답변

Guillaume
Guillaume 2015년 3월 13일

1 개 추천

What is
x0=[0:0.1:2:0:0.1:2];
supposed to mean? On my version of matlab (2015a) it does not give me any warning but it creates an empty vector.
I suspect it's the cause of the warning and ultimately the cause of the error since you're passing empty for the initial condition.
See colon for documention about the syntax of :

댓글 수: 5

Lan
Lan 2015년 3월 14일
x0=[0:0.1:2:0:0.1:2];
revise: x0=[0;0.1;2;0;0.1;2]; ?
Lan
Lan 2015년 3월 15일
Lan
Lan 2015년 3월 15일
How can i avoid the empty vector?
The initial condition is usually specified as a row vector, so possibly you meant:
x0 = [0 0.1 2 0 0.1 2];
Similarly the function you integrate must return a column vector, so possibly you meant:
dx = [dx(1) dx(2) dx(3) dx(4) dx(5) dx(6)];
This is still not going to work though, since you haven't defined dx(6).
Lan
Lan 2015년 3월 17일
thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Programming에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

질문:

Lan
2015년 3월 13일

댓글:

Lan
2015년 3월 17일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by