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일

0 개 추천

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일

0 개 추천

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)

카테고리

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

제품

릴리스

R2021a

태그

질문:

2022년 4월 26일

답변:

2022년 4월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by