Error with simultaneous differential equations

Trying to solve:
"syms x(t) y(t) t
ode1 = diff(x,t,2)+2*x==y;
ode2 = diff(y,t,2)+2*y==x;
odes = [ode1; ode2]
cond1 = y(0)==2;
cond2 = x(0)==4;
cond3 = t(0)==0;
cond4 = diff(x,t)==0;
cond5 = diff(y,t)==0;
conds = [cond1; cond2; cond3; cond4; cond5]
[xSol(t), ySol(t)] = dsolve(odes, conds)"
BUT!
Array indices must be positive integers or logical values.
Error in indexing (line 1079)
R_tilde = builtin('subsref',L_tilde,Idx);
How to solve the error with y(0) and x(0) if it is initial condition for system of ODEs?

 채택된 답변

Star Strider
Star Strider 2022년 12월 10일
편집: Star Strider 2022년 12월 10일
The problem is that ‘t’ is not a function (and shouldn’t be one), so ‘t(0)’ is interpreted as an array reference. Compounding that is that MATLAB subscript references are integers greater than 0, so that threw the error.
Assigning ‘Dx’ and the rest made referencing the derivatives easier, allowing this to now run without error —
syms x(t) y(t) t
Dx = diff(x); % Add These
D2x = diff(Dx);
Dy = diff(y);
D2y = diff(Dy);
ode1 = diff(x,t,2)+2*x==y;
ode2 = diff(y,t,2)+2*y==x;
odes = [ode1; ode2]
odes(t) = 
cond1 = y(0)==2;
cond2 = x(0)==4;
% cond3 = t(0)==0;
cond4 = Dx(0)==0;
cond5 = Dy(0)==0;
% conds = [cond1; cond2; cond3; cond4; cond5]
conds = [cond1; cond2; cond4; cond5]
conds = 
[xSol(t), ySol(t)] = dsolve(odes, conds)
xSol(t) = 
ySol(t) = 
figure % Just For Fun!
fplot(xSol, [0 10])
hold on
fplot(ySol, [0 10])
hold off
grid
EDIT — Fixed typos.
.

댓글 수: 2

Denis
Denis 2022년 12월 10일
Hello, Star Strider. You are the best, very thanks!
My pleasure!
If my Answer helped you solve your problem, please Accept it!
.

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

추가 답변 (0개)

카테고리

제품

릴리스

R2022b

질문:

2022년 12월 10일

댓글:

2022년 12월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by