Ask Your Question

# Solving an ODE and simplifying the result I'm interested in solving the differential equation $$3 h' + 3 h^2 = c_1,$$ where $c_1$ is a positive real number.

var('t')
var('c1', latex_name=r'c_1')
h = function('h')(t)
eq = -3*h^2 + c1 - 3*diff(h, t)
eq_sol = desolve(eq, h, ivar=t, contrib_ode=True)


The above code works, but it's not solved explicitly for $h$, so

h_sol = solve(eq_sol, h)
h_sol = h_sol
h_sol


This gives something like $$h\left(t\right) = \frac{\sqrt{3} \sqrt{c_{1}} {\left(e^{\left(\frac{2}{3} \, \sqrt{3} C \sqrt{c_{1}} + \frac{2}{3} \, \sqrt{3} \sqrt{c_{1}} t\right)} + 1\right)}}{3 \, {\left(e^{\left(\frac{2}{3} \, \sqrt{3} C \sqrt{c_{1}} + \frac{2}{3} \, \sqrt{3} \sqrt{c_{1}} t\right)} - 1\right)}},$$

in sage notation (non-LaTeX) it starts like

h(t) == 1/3*sqrt(3)*sqrt(c1)* ...


Question 1: Is there a way to allocate to the solution (i.e. h_sol) the RHS of the above? without the h(t) == part.

I had to set by hand (it is ease, but it would be nice to automatize the allocation)

var('C')    # the integration constant introduced above
h_sol = 1/3*sqrt(3)*sqrt(c1)* ...


Then, by simply looking at the solution it is clear that it can be simplified. I tried things like

h_sol = h_sol.canonicalize_radical()
h_sol = h_sol.collect_common_factors()
h_sol = h_sol.simplify_rectform(complexity_measure = None)


but none of them returns the expected result, which could be obtained from Mathematica's kernel

mathematica("DSolve[3*h'[t] + 3*h[t]^2 == C, h[t], t]//FullSimplify")


$$\sqrt{\frac{c_1}{3}} \tanh\left( \sqrt{\frac{c_1}{3}} (t - 3 c_2) \right)$$

Question 2: How could the expression h_sol be manipulated to obtain the hyperbolic tangent?

edit retag close merge delete

## 1 Answer

Sort by » oldest newest most voted

(1) One can use either solution_dict=True... or the rhs method...

sage: h_sol = solve(eq_sol, h, solution_dict=True)[ h(t) ]
sage: h_sol
1/3*sqrt(3)*sqrt(c1)*(e^(2/3*sqrt(3)*_C*sqrt(c1) + 2/3*sqrt(3)*sqrt(c1)*t) + 1)/(e^(2/3*sqrt(3)*_C*sqrt(c1) + 2/3*sqrt(3)*sqrt(c1)*t) - 1)

sage: h_sol = solve(eq_sol, h).rhs()
sage: h_sol
1/3*sqrt(3)*sqrt(c1)*(e^(2/3*sqrt(3)*_C*sqrt(c1) + 2/3*sqrt(3)*sqrt(c1)*t) + 1)/(e^(2/3*sqrt(3)*_C*sqrt(c1) + 2/3*sqrt(3)*sqrt(c1)*t) - 1)


(2) The human eye can do this better, just divide by the exponential of the half exponent. For me, the delivered form is acceptable, rational function composed with exponential function. (No simplify.... method gave me an other expression.)

more

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2019-05-14 09:41:24 +0200

Seen: 142 times

Last updated: May 15 '19