# Help please, I cant use Dsolve and dont understand why :(

3 views (last 30 days)
Sebastian Morales on 12 Oct 2021
Commented: Walter Roberson on 12 Oct 2021
Hi,
I really need help with this error please. I do not know what is causing it, in my opinion I have 4 variables and 4 equations, it should work fine.
##### 2 CommentsShowHide 1 older comment
Sebastian Morales on 12 Oct 2021
I thought that dsolve worked for differential and algebraic equations. Do I always need to separate the equationsto solve them. Dsolve for differential and subs for algebraic?

Walter Roberson on 12 Oct 2021
syms o_r(r) o_t(r) e_r(r) e_t(r)
e_t = o_t - o_r
e_t(r) =
e_r = o_r - o_t
e_r(r) =
ode1 = diff(o_r.*r) == o_t
ode1(r) =
ode2 = diff(e_t.*r) == e_r
ode2(r) =
temp1 = ode1(r) - o_r(r)
temp1 =
ode1b = lhs(temp1)/r == rhs(temp1)/r
ode1b =
temp2 = simplify(subs(ode2, lhs(ode1b), rhs(ode1b)))
temp2(r) =
ode2b = simplify((temp2(r) - o_t(r))/r)
ode2b =
odes = [ode1b; ode2b]
odes =
sol = dsolve(odes)
sol = struct with fields:
o_t: C1/2 - C2/r^2 o_r: C1/2 + C2/r^2
Walter Roberson on 12 Oct 2021
E=210000;
v=0.4;
syms o_r(r) o_t(r) e_r(r) e_t(r )
eqn1 = e_t == (o_t - v.*o_r)./E
eqn1(r) =
eqn2 = e_r == (o_r - v.*o_t)./E
eqn2(r) =
ode1 = diff(o_r*r) == o_t
ode1(r) =
ode1b = (ode1 - o_r)/r
ode1b(r) =
ode2 = diff(e_t*r) == e_r
ode2(r) =
ode2b = (ode2 - e_t)/r
ode2b(r) =
odes = [ode1b; ode2b]
odes(r) =
sol = dsolve(odes)
sol = struct with fields:
e_t: C2/r + int(e_r(r), r, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)/r o_r: C1/r + int(o_t(r), r, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)/r
You cannot resolve more than this without additional information that allows e_r and o_t to be defined.

R2021b

### Community Treasure Hunt

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

Start Hunting!