Using interpolated curve on parametric plot

asked 2021-02-04 23:24:29 +0100

cav_rt gravatar image

updated 2021-02-04 23:39:23 +0100


my skills in numerics are very limited, thus maybe this is a silly question. Is it possible, in sage or python, to interpolate a numerical solution of a differential equation and use it as a symbolic expression? Let me explain my problem. I have the following differential equation and numerical solution

z = function('z')(x)
de = diff(z,x) == sqrt(-36*(2*x/sqrt(x^2 + 5) - (x^2 - 1)*x/(x^2 + 5)^(3/2))^2 + (x^2 + 5)/(x^2 - 1)^2)
de_sol = desolve_rk4(de.rhs(),dvar=nz,ics=[0,0],ivar=x,end_points=.93, step=.01)

I would like to use the above solution as z(x) and (at first) plot a parametric surface. For illustrating, I will use z = -log(1-x), that has a similar shape.

th = var('theta')
z = -log(1-x)
r = -6*(x^2 - 1)/sqrt(x^2 + 5)
parametric_plot3d([r*cos(th),r*sin(th),z],(th,0,2*pi), (x,0,.93))

I tried:

  • spline: it fits greatly, but the output cannot be used as symbolic. Parametric plot is not allowed.
  • lagrange_polynomial: it gives me a polynomial fit that can be used for parametric plot, but the interpolation fails "close" to the divergence at x=1.
  • I've tried to follow this post, but 1) I didn't find out how to pass my de_sol to maxima (maxima('p:de_sol') doesn't work) and 2) I don't know how to turn the maxima charfun into sage piecewise. Maxima documentation doesn't help that much.

Any idea?

edit retag flag offensive close merge delete