Unable to find explicit solution.
Show older comments

I have already tried reading some other similar questions but I had no luck. Does Matlab have problem then the same variable is on both sides or something? Simplify function also didn’t work.
1 Comment
Dominik Stolfa
on 16 Nov 2023
Edited: Dominik Stolfa
on 16 Nov 2023
Accepted Answer
More Answers (2)
You must use "dsolve", not "solve":
syms t x(t) K
eqn = diff(x,t) == (1-x/K)*x;
dsolve(eqn)
5 Comments
John D'Errico
on 16 Nov 2023
Edited: John D'Errico
on 16 Nov 2023
This, based on the fact that the equation can effectively be converted into a differential equation. Just differentiate both sides with respect to t.
Dominik Stolfa
on 16 Nov 2023
Walter Roberson
on 16 Nov 2023
When you take the derivative in this simple way, you lose the information about the bounds of the definite integral. The same equation would be generated no matter if the upper bound is 3 or 10^300. But clearly the upper bound does make a difference to the original equation... so this approach of just taking the derivative of both sides is insufficient.
John D'Errico
on 16 Nov 2023
Oh, yes. I forgot the integral bounds are fixed.
Dominik Stolfa
on 19 Nov 2023
Walter Roberson
on 16 Nov 2023
Edited: Walter Roberson
on 16 Nov 2023
If we assume that x is a function of one variable, t, then the definite integral of an expression involving only x and constants, is an expression that does not involve t. So by inspection you are asking to solve x(t) = constant. We can then substitute constant into the equation, say X, getting
X == int((1-X/K)*X,t,0,3)
This gives you a definite result on the right, and you can solve the quadratic by factoring, for solutions x(t) = 0 and x(t) = 2/3 * K
The solutions proposed by Torsten do not work except for the 0.
6 Comments
This was the OPs comment to his original question:
This is the original equation I am trying to simplify/solve: (diff(x(t),t)==(1-x(t)/K)*x(t))
What should be the meaning of
X == int((1-X/K)*X,t,0,3)
?
The right-hand side is a constant, the left-hand side is a function of t.
What comes out when integrating the differential equation from above is
x(t)-x(0) = integral_{t'=0}^{t'=t} (1-x(t')/K)*x(t') dt'
or for t = 3
x(3)-x(0) = integral_{t'=0}^{t'=3} (1-x(t')/K)*x(t') dt'
Dominik Stolfa
on 19 Nov 2023
Edited: Dominik Stolfa
on 19 Nov 2023
The logistic equation
dx/dt=rx(1-x/K), x(0) = x0
is a differential equation.
To get an explicit solution in MATLAB, you have to use "dsolve":
syms t x(t) x0 K r
eqn = diff(x,t) == r*x*(1-x/K);
cond = x(0)==x0;
x = dsolve(eqn,cond)
x = simplify(x)
Walter Roberson
on 19 Nov 2023
If you have an equation in derivative form then try using dsolve. If the result contains a constant then that indicates that at least one boundary condition is not fixed.
Sometimes matlab does just fine with boundary conditions passed to dsolve, but unfortunately it is not uncommon that you might need to ask dsolve for the general form and solve the boundaries with substitution and solve()
Walter Roberson
on 19 Nov 2023
The original equation you posted was an integral equation in which an expression in t was integrated over a definite range of t. A definite integral no longer has the variable of integration in the expression (unless the variable was used in the limit.) The finished definite integral is effectively constant with respect to the variable of integration... so if you then take the derivative with respect to the variable of integration then the definite integral vanishes.
f(x) = int(g(x), x, a, b)
take derivative of both sides to get
df/dx = d(int(g(x), x, a, b)/dx
but the int will not have x in it so the derivative is 0, leading to
df/dx = 0
Dominik Stolfa
on 20 Nov 2023
Categories
Find more on Mathematics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
