According to the manual the following should work:
t,y=var('t,y');
g= lambda t,y:-y/(2*y^3 - 1);
ra = ode_solver();
ra.function=g;ra.ode_solve(y_0=1,t_span=[0,1],num_points=100)
However, I get the error message
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_317/557462051.py in <module> ----> 1 ra.ode_solve(y_0=Integer(1),t_span=[Integer(0),Integer(1)],num_points=Integer(100)) /usr/lib/python3/dist-packages/sage/calculus/ode.pyx in sage.calculus.ode.ode_solver.ode_solve (build/cythonized/sage/calculus/ode.c:5124)() 412 self.y_0 = y_0 413 --> 414 dim = len(self.y_0) 415 type = isinstance(self.function,ode_system) 416 if type == 0: TypeError: object of type 'sage.rings.integer.Integer' has no len()
Alsodef f(t,y): return -y/(2*y^3 - 1);ra.function=f;gives the same error.??
--
You received this message because you are subscribed to the Google Groups "sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sage-support...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/sage-support/d14332f8-44b6-4f93-9b42-0972926d2a16n%40googlegroups.com.
yes in fact the initial value should be bigger, then there are no singularities, but even then I get-------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) /usr/lib/python3/dist-packages/sage/calculus/ode.pyx in sage.calculus.ode.ode_solver.ode_solve (build/cythonized/sage/calculus/ode.c:6834)() 554 if (status != GSL_SUCCESS): --> 555 raise RuntimeError 556 except RuntimeError: RuntimeError: During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) /tmp/ipykernel_125/2547832258.py in <module> ----> 1 ra.ode_solve(y_0=[RealNumber('3.1')],t_span=[Integer(0),Integer(1)],num_points=Integer(1000)) /usr/lib/python3/dist-packages/sage/calculus/ode.pyx in sage.calculus.ode.ode_solver.ode_solve (build/cythonized/sage/calculus/ode.c:6934)() 560 sig_free(y) 561 sig_free(scale_abs_array) --> 562 raise ValueError("error solving") 563 564 for j from 0<=j<dim: ValueError: error solving
But now I realize that my version is quite old: 'SageMath version 9.5, Release Date: 2022-01-30' Perhaps that's why it doesn't work?
In fact the following works: t,y=var('t,y')
numsol=desolve_rk4( -y/(2*y^3 - 1), dvar=y, ivar=t, ics=[0,2.1],end_points=1, step=0.001)
kuva=line(numsol,axes_labels=[t,y])
kuva.show()
To view this discussion visit https://groups.google.com/d/msgid/sage-support/84800a7c-74d2-40ef-b9c2-5f02c084924dn%40googlegroups.com.