dsolve - Unable to find explicit solution

Hi there! I'm trying to solve differetial equation:
Unfortunately result of code:
gamma = 1.4
P0 = 1
Pe = 9.4
R = 0.168
syms S P(t)
eqn = diff(P,t) == (3/R)*S*(Pe-P0)*((P/P0)^(1/gamma))*(1-((P0/P)^(1/gamma))*((Pe-P)/(Pe-P0)))^(2/3);
dsolve(eqn)
is:
Warning: Unable to find explicit solution. Returning implicit solution instead.
> In dsolve (line 208)
In Untitled (line 7)
ans =
1
1/root(z^6 + z^5 + z^4 + z^3 + z^2 + (5*z)/47 + 5/47, z, 1)^7
solve(int(42^(2/3)/(P^(5/7)*(5*P^(2/7) - 47/P^(5/7) + 42)^(2/3)), P, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) - 150*S*t - C11 == 0, P)
What i'm doing wrong?

 Accepted Answer

Nothing. It just does not have a closed form solution that can reasonably be found.

More Answers (2)

I want to fit this equation in experimental data. Is it possible to do it by means of Levenberg-Marquardt method?

8 Comments

What is the goal of the fitting? To find S, which appears as a linear constant on the right hand side?
Is P0 intended to represent P(0) ?
Exactly, S is laminar burning velocity and I must to find it through fitting this equation to experiment data which is the pressure-time curve. P0 is the initial pressure and is idependent to P(0). Pe, Rvessel, and gamma together with P0 represents known parameters.
Torsten
Torsten on 8 Mar 2018
Edited: Torsten on 8 Mar 2018
Use ODE45 to solve your ODE in the region of interest for t for an S-value of S=1. If the solution is P1, then the solution for general S is P=S*P1. Thus you have to solve the linear system P1*S=P_experimental for S which gives S=P1\P_experimental. No optimizer needed.
Best wishes
Torsten.
I tried to do what you said but with no result. Maybe you could tell me how to rewrite my code.. Thank you for your help
tspan = [0 0.1];
R = 0.168 % meters
P0 = 1 % bar
Pe = 9.7 % bar
gamma = 1.4
S = 1 % meters per second
y0 = 0;
[t,y] = ode45(@(t,y) (3/R)*S*(Pe-P0)*((y/P0)^(1/gamma))*(1-((P0/y)^(1/gamma))*((Pe-y)/(Pe-P0)))^(2/3), tspan, y0);
[t,y]
P_extrap = interp1(y(1,:), t, times_data_measured_at);
S_estimated = P_extrap \ measured_P;
Can someone solve this:
>> syms y(t);
dsolve('Dy=sin(t)*cos(t)+2-(y*cos(t))')
ans =
C5*exp(-sin(t)) + exp(-sin(t))*int((exp(sin(t))*(sin(2*t) + 4))/2, t, 'IgnoreAnalyticConstraints', true)
That is the solution. Most integrals do not have closed form solutions.

Sign in to comment.

Om Yadav
Om Yadav on 24 Apr 2020
We got it very well that closed formula for my problem does not exist. The question is, how to get a numerical solution using dsolve?

Community Treasure Hunt

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

Start Hunting!