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()
maanantai 17. marraskuuta 2025 klo 19.52.18 UTC+2 [email protected]
kirjoitti:
> even for the 1st order ODE, y must be a vector.
> (and, apparently, for y as well)
>
> The following example works:
>
> sage: t,y=var('t,y');
> ....: g= lambda t,y:[-y[0]]; # ODE y'=-y
> ....: ra = ode_solver();
> ....: ra.function=g;
> ....: ra.ode_solve(y_0=[1],t_span=[0,1],num_points=100)
>
> Now, if I change g to
>
> g= lambda t,y:[-y[0]/(2*y[0]^3 - 1)];
>
> the example runs, but seemingly never stops. Perhaps you hit a singularity
> somewhere that results in
> such a non-convergence.
>
> On Monday, November 17, 2025 at 10:21:42 AM UTC-6 Dima Pasechnik wrote:
>
>> On Mon, Nov 17, 2025 at 3:45 AM [email protected] <[email protected]>
>> wrote:
>>
>>> 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)
>>>
>>
>>
>> Please write the ODE you want to solve, in the usual maths notation -
>> it's not clear what it is.
>>
>>
>>
>>>
>>> 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()
>>>
>>> Also
>>> def 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 [email protected].
>>> To view this discussion visit
>>> https://groups.google.com/d/msgid/sage-support/d14332f8-44b6-4f93-9b42-0972926d2a16n%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/sage-support/d14332f8-44b6-4f93-9b42-0972926d2a16n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
--
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 [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/sage-support/84800a7c-74d2-40ef-b9c2-5f02c084924dn%40googlegroups.com.