dsolve invalid indexing error

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 Commento

Torsten
Torsten il 26 Apr 2022
Modificato: Torsten il 26 Apr 2022
What kind of solution for y do you expect for an unspecified function u(t) ?
That's where the error comes from, I guess.

Accedi per commentare.

 Risposta accettata

Walter Roberson
Walter Roberson il 26 Apr 2022

0 voti

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.

Più risposte (1)

Joe Dombroski
Joe Dombroski il 28 Apr 2022

0 voti

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)

Categorie

Scopri di più su Linear Algebra in Centro assistenza e File Exchange

Prodotti

Release

R2021a

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by