# solve ode on given interval

Hi,

I would like to tell Sage to solve ode on a given interval that I will specify. My final goal is to use this method to solve ode that contains 'piecewise' function like 2*diff(u,x) + u == f(x), where

f = piecewise([((-1,0),0), ((0,1),x), ((1,2),2-x), (RealSet.unbounded_above_closed(2),0)])


Thanks.

edit retag close merge delete

did you try the approach suggested in your previous post, to write $f$ as a sum of unit_step functions? for instance, here it would be unit_step(t)*unit_step(1-t)*t + unit_step(t-1)*unit_step(2-t)*(-t+2). perhaps a method to_unit_step of piecewise functions could be useful to have..

No, I didn't think about the problem that way, I was rather think of a way to make Sage solve the ode on a specified interval. But, thanks, it's still something that works (at least for this problem).

Sort by » oldest newest most voted

Here is a numerical solution using that suggested from your previous post.

var('u x')
f=x*(unit_step(x)-unit_step(x-1))+(2-x)*(unit_step(x-1))
ode = -1/2*(u)+f
ans=desolve_rk4(ode,u,ics=[-1,3],ivar=x,end_points=2,step=0.1)
solnplot=line(ans,color='red')
dirfield=streamline_plot(ode,(x,-1,2),(u,-1,4))
solnplot+dirfield

more