dsolve invalid indexing error

조회 수: 4 (최근 30일)
Joe Dombroski
Joe Dombroski 2022년 4월 26일
답변: Joe Dombroski 2022년 4월 28일
I have a simple diff eqn that is throwing a dsolve error.
Invalid indexing or function definition. Indexing must follow MATLAB indexing.
Function arguments must be symbolic variables, and function body must be sym
expression.
I am guessing it is a simple syntax error, but I just can't see it.
syms y(t) u(t)
Dy = diff(y,t);
D2y = diff(Dy,t);
D3y = diff(D2y,t);
eqn = D3y + 7*D2y + 20*Dy + 24*y == 3*diff(u,t) + 2*u;
cond = [y(0)==0, Dy(0)==1, D2y(0)==-1];
ySol(t) = dsolve(eqn,cond)
  댓글 수: 1
Torsten
Torsten 2022년 4월 26일
편집: Torsten 2022년 4월 26일
What kind of solution for y do you expect for an unspecified function u(t) ?
That's where the error comes from, I guess.

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

채택된 답변

Walter Roberson
Walter Roberson 2022년 4월 26일
You have two functions, y and u, but only one differential equation. MATLAB has to decide what to solve for. It essentially uses symvar() and picks the first one... which would be u. u only appears as first derivative, while you have 3 boundary conditions.
The error you get occurs when you have more boundary conditions than you have differential equations.

추가 답변 (1개)

Joe Dombroski
Joe Dombroski 2022년 4월 28일
This runs, I just needs to work on how to generate the state equations. Thanks all for the sage advice!
syms y(t) u(t)
Dy = diff(y,t);
D2y = diff(Dy,t);
D3y = diff(D2y,t);
yeqn = D3y + 7*D2y + 20*Dy + 24*y == 0;
ueqn = 3*diff(u,t) + 2*u ==0;
cond = [y(0)==0, Dy(0)==1, D2y(0)==-1];
ySol = dsolve(yeqn,cond)
uSol = dsolve(ueqn)

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by