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 で Programming についてさらに検索

製品

リリース

R2021a

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by